私はアセンブリコードを "Reverse Engineering for Beginners"という本を通して理解しようとしています[LINK]。私がかなり理解していないコードwin-32アセンブリコードがありました。関数のプロローグで `PUSH 0xFFFFFFFF`とは何を意味していますか?
main:
push 0xFFFFFFFF
call MessageBeep
xor eax,eax
retn
最初のPUSH
命令は何をしますか? 0xFFFFFFFFをスタックにプッシュするのはなぜですか? 0xFFFFFFFFの意味は何ですか?
ありがとうございます。あなたはこの関数は、スタックを利用したり、任意の保存レジスタを壊していないので、アセンブリコードは、実際に、任意のprolongueまたはエピローグを含んでいない
int main() {
MessageBeep(0xffffffff);
return 0;
}
のために同等のコードを見ている
この場合に使用される呼び出し規約では、呼び出し先がスタックをクリーンアップする可能性があります。 – EOF
[MessageBeep'のドキュメント(https://msdn.microsoft.com/en-us/library/windows/desktop/ms680356(v = vs.85).aspx)は、プッシュされた値がどのようなものであるかを示します。おそらくそれを読む努力の価値がある。 – WhozCraig
http://stackoverflow.com/documentation/x86/3261/calling-conventions#t=201608201329248988454 –