私が目にするほとんどの x86 アセンブリ (特に NASM) コード サンプル (GCC によって生成されたものでも) では、「スタック フレームのセットアップ」と呼ばれるものが見られます。このような:
main:
/*setting the stack frame*/
push ebp
mov ebp,esp
...
code goes here
...
/*removing the stack frame*/
mov esp, ebp
pop ebp
この練習について 3 つの質問があります。
コードがスタックに触れていない場合、上記のようにスタック フレームを設定/削除してもまったく意味がありません。
私のコードがスタックを使用していても、プッシュしたものすべてをポップする限り (基本的にはスタックをそのままにしておきます)、スタック フレームのセットアップはまったく役に立ちませんよね?
私が見る限り、これの唯一の目的は、ESP の値を保存して、混乱を招くことを心配せずに自分のコードでそれをいじることができるようにすることです。完了したら、元の値を復元するだけです。これはスタック フレームのセットアップの目的ですか、それとも何か不足していますか?
ありがとう