私はアセンブリ言語の初心者ですが、コンパイラーによって生成されたx86コードは、EBP
他の何かのためにレジスターを使用できるリリース/最適化モードでも、通常フレームポインターを保持していることに気づきました。
フレームポインターがコードのデバッグを容易にする理由、およびalloca()
関数内で呼び出された場合に必要になる理由を理解しています。ただし、x86には非常に少数のレジスターがあり、そのうちの2つを使用してスタックフレームの場所を保持する場合、私には意味がありません。最適化されたリリースやリリースビルドでも、フレームポインターを省略することが悪い考えと見なされるのはなぜですか?
alloca
)3.実行時の実装の容易さ:例外処理、サンドボックス、GC