改进程序集中的代码运行时

时间:2012-06-25 19:50:03

标签: assembly

考虑以下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 个答案:

答案 0 :(得分: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个字节。