デフォルトで 64 ビット アーキテクチャでフレーム ポインタを削除する理由は何ですか? 有効にできることはよく知っていますが、32ビットで有効にしているのに、GCCが最初に無効にするのはなぜですか? 結局、64 ビットには 32 ビット CPU よりも多くのレジスタがあります。
編集:
最近の GCC バージョンを使用すると、x86 のフレーム ポインターも削除されるようです。マニュアルから:
GCC バージョン 4.6 以降、32 ビット Linux x86 および 32 ビット Darwin x86 ターゲットのデフォルト設定 (サイズを最適化しない場合) が -fomit-frame-pointer に変更されました。
-fno-omit-frame-pointer
configure オプションを使用して GCC を構成すると、デフォルトに戻すことが--enable-frame-pointer
できます。
しかし、なぜ?