- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要求Google给我gcc
选项-fomit-frame-pointer
的含义,该选项将我重定向到以下语句。
-fomit-frame-pointer
Don't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions. It also makes debugging impossible on some machines.
最佳答案
大多数较小的功能不需要框架指针-较大的功能可能需要一个框架指针。
真正的问题在于编译器如何很好地跟踪堆栈的使用方式以及堆栈中的内容(局部变量,传递给当前函数的参数以及为即将被调用的函数准备的参数)。我认为很难描述需要或不需要帧指针的函数(从技术上讲,没有函数必须具有帧指针-而是“如果编译器认为有必要降低函数的复杂性,其他代码”)。
我不认为您应该“尝试使函数没有框架指针”作为您的编码策略的一部分-就像我说的那样,简单的函数不需要它们,因此请使用-fomit-frame-pointer
,您将再获得一个注册可用于寄存器分配器,并在函数进入/退出时保存1-3条指令。如果您的函数需要帧指针,那是因为编译器认为这是比不使用帧指针更好的选择。没有框架指针的功能不是目标,而拥有能够正确且快速运行的代码不是目标。
请注意,“没有帧指针”应该会提供更好的性能,但这并不是可以带来巨大改进的魔术子弹,尤其是x86-64上已经没有16个寄存器了。在32位x86上,由于它只有8个寄存器,其中一个是堆栈指针,而占用另一个作为帧指针意味着占用了25%的寄存器空间。将其更改为12.5%是一个很大的进步。当然,为64位编译也将有很大帮助。
关于c - 试图了解gcc选项-fomit-frame-pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64317827/
我要求Google给我gcc选项-fomit-frame-pointer的含义,该选项将我重定向到以下语句。 -fomit-frame-pointer Don't keep the frame poi
我在很多地方看到人们在编译 C/C++ 代码时经常使用选项 -fomit-frame-pointer 我想知道,使用该选项安全吗?它有什么用? 非常感谢,最诚挚的问候。 最佳答案 该选项是安全的,但会
我要求 Google 告诉我 gcc 选项 -fomit-frame-pointer 的含义,它将我重定向到以下语句。 -fomit-frame-pointer Don't keep the fram
-fomit-frame-pointer 是否总是忽略帧指针?是否存在pc和fp都需要设置的情况?动态堆栈增长是否会强制设置 fp?专门询问MIPS32。谢谢! 最佳答案 正确执行并不真正需要帧指针,
-fomit-frame-pointer 是否总是忽略帧指针?是否存在pc和fp都需要设置的情况?动态堆栈增长是否会强制设置 fp?专门询问MIPS32。谢谢! 最佳答案 正确执行并不真正需要帧指针,
如果我使用 -fomit-frame-pointer 和 -mrtd 通过 GCC 编译,此 C 代码会因段错误而崩溃。 我的代码有什么问题吗?其他函数指针按预期工作,但不是在传递自由函数时?我在编译
没有它,SysProf 无法正确生成调用堆栈,GProf 根本不准确。而且,在没有 -fno-omit-frame-pointer 的情况下工作的分析器是否与依赖它的分析器一样准确? 最佳答案 可以使
在做作业的时候无意中发现了x86上GCC的-fomit-frame-pointer的一些奇怪的东西。 看下面的代码(这看起来很废话,但在某种程度上与我发现问题的方式有关) #include void
我是一名优秀的程序员,十分优秀!