スタックフレームの確認

簡単なC言語を逆アセンブルするとx64の場合、push rbpから始まります。これはスタックフレームを理解すれば、この意味が分かります。

「スタックセグメントを確認してみる」が初心者にわかりやすいx64版のgdbを使ったスタックフレームの確認方法です。

NASMを見ると関数呼び出しで、必ずpush rbp, mov rbp, rspと書かれているがこれはスタックフレームを新しく用意して、引数やローカル変数をこの後に保持します。また最後にleave命令で、mov esp, ebp; pop ebpとして、呼び出し元関数のスタックフレームを復元します。

 

 

leave命令の意味

スタックフレームを戻す2つのmov,popを1回で行う命令

lea命令

アドレス計算して転送する命令(Load Effective Address)