call kansuu
kansuu: push ebp mov ebp, esp sub esp, baffanonagasa (関数の処理) mov esp, ebp pop ebp ret
このような関数の呼び出しでkansuuのpush ebp
がebpのバックアップをpushし、pop ebp
がebpの復元していると知ったのですが、pop ebp
でなぜebpの復元ができるのでしょうか?
「callはeipのアドレスをpushする(リターンアドレスを保存しておく)、retはスタックの先頭要素(リターンアドレス)をeipに格納して、espを1つ分小さくする」これはあっているでしょうか?
retの命令は、pop eip
と考えるといいと書いてあったのですがなぜでしょうか?
初心者で文章が苦手なので何か不快にさせたらすいません。
回答よろしくおねがいします。