默认情况下在 64 位架构上丢弃帧指针的基本原理是什么?我很清楚它可以启用,但为什么 GCC 在启用 32 位时首先禁用它?毕竟,64 位的寄存器比 32 位 CPU 多。
编辑:
看起来当使用更新的 GCC 版本时,x86 的帧指针也会被丢弃。从手册:
从 GCC 版本 4.6 开始,32 位 Linux x86 和 32 位 Darwin x86 目标的默认设置(未优化大小时)已更改为 -fomit-frame-pointer。可以通过使用configure 选项
-fno-omit-frame-pointer
配置 GCC来恢复默认值。--enable-frame-pointer
但为什么?