フォーラムで 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
プログラムは、上記の例のように値を割り当てるためにプッシュ/ポップを使用しました。
上記の規則の利点は何ですか?