-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 整除的情况下,我需要重写上述代码段以获得更好的运行时效率。

我怎么做?

4

1 回答 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 个字节。

于 2012-06-25T20:03:14.893 回答