自作エミュレータで学ぶx86アーキテクチャ 3.7 leave
https://github.com/mas454/x86emu
(define (leave emu) (let ([ebp (get-register32 emu EBP)]) (set-register32 emu ESP ebp) (set-register32 emu EBP (pop32 emu)) (eip-add emu 1)))
leaveはleave命令に対応している関数です。
leaveはスタックフレームを破棄するのに使う命令なのですが、
やっていることは単純で
mov esp,ebp pop ebp
のようなプログラムを実行しています。
スタックフレームに関しては、「コンピュータシステムの理論と実装」を
読むのをおすすめします。
スタックフレームはコンパイラの処理も重要だと思うので、
cpuだけじゃなくコンパイラの実装もするこっちの本も読むと、より詳しく理解できると思います。