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