2012-06-25 29 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个字节。