自作エミュレータで学ぶ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だけじゃなくコンパイラの実装もするこっちの本も読むと、より詳しく理解できると思います。