0
我在论坛中碰到了一个关键记录程序。我虽然可以自己创建一个键盘记录器。当我正在阅读代码以查看该程序中实际发生的事情时,我遇到了一些有趣的事情。为什么要通过寄存器来变量变量,而不是直接用汇编语言推送变量?
1.程序几乎从未将变量推送到堆栈。它将变量的值移动到一个寄存器,然后推动寄存器。 例如。
;hInst:DWORD 4
lea esi, hInst
push esi
2.程序使用stosd清零数组。 例如:
;array1 BYTE 256 DUP(?)
lea edi, array1
push 256/4
xor eax, eax
rep stosd 3
该程序使用push-pop来分配值,如上例所示。
上述惯例的优点是什么?