だから私がこのようなものを持っているとしたら
rout:
pop eax
pop ecx
add ecx,2
push ecx
ret
それならただ
push 3
call rout
初めてポップするときは、思ったように値3が得られないことに気づきました。代わりに、最初のポップの後に取得します。
私の質問は、私がそれを呼んでいる間にスタックにプッシュされた最後の値は何ですか?(この例のレジスタeaxで)
80x86アーキテクチャで作業していると仮定します。
これは、procのリターンアドレスです(ニアコールの場合)。次のPOPは、NEAR呼び出しの場合は値(3)を、FAR呼び出しの場合は差出人住所のセグメントを示します。
CALLを発行したときに実際に何が起こるかの擬似コードについては、このサイトを確認してください。