2012-06-25 50 views
-1

考慮以下80X86代碼段。假設代碼運行時,ECX不爲零。改善程序集中代碼的運行時間

L: MOV AL, [ESI] 
XOR [EDI], AL 
XOR AL, [EDI] 
XOR [EDI], AL 
MOV [ESI], AL 
INC ESI 
INC EDI 
LOOP L, ECX 

我需要重新寫上面的代碼段,用於更好的運行效率,在假設ECX最初是整除4

我該怎麼辦呢?

+1

該算法的簡要概述將會有所幫助。大會不太可讀。 :) –

回答

4
L: 
MOV EAX, [ESI] 
XOR [EDI], EAX 
XOR EAX, [EDI] 
XOR [EDI], EAX 
MOV [ESI], EAX 
ADD ESI, 4 
ADD EDI, 4 
SUB ECX, 4 
JZ  L 

我不知道你在用什麼彙編,所以我試着寫一個通用的例子。

基本上,上述算法使用整個EAX寄存器一次移動4個字節。