我在论坛的 asm 中遇到了一个键盘记录程序。我想我可能会自己创建一个键盘记录器。当我阅读代码以查看该程序中实际发生的情况时,我遇到了一些有趣的事情。
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 来分配值,如上例所示。
上述约定的优点是什么?