omit-frame-pointer 开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试根据堆栈信息了。通过去掉SFP,可以提高程序运行速度,达到优化程序的目的。如果要打开栈指针,使用-fno-omit-frame-pointer。 另外一个类似选项-fomit-leaf-frame-pointer...
事实上gcc的所有级别的优化(-O, -O2, -O3等)都会打开-fomit-frame-pointer,该选项的功能是函数调用时不保存frame指针,在ARM上就是fp,故我们无法按照APCS中的约定来回溯调用栈。但是GDB中仍然可以使用bt命令看到调用栈,为什么?得知GDB v6之后都是支持DWARF2的,也就意味着它可以不依赖fp来回溯调用栈(详见http://...
backtrace与fomit-frame-pointer选项 事实上gcc的所有级别的优化(-O, -O2, -O3等)都会打开-fomit-frame-pointer,该选项的功能是函数调用时不保存frame指针,在ARM上就是fp,故我们无法按照APCS中的约定来回溯调用栈。但是GDB中仍然可以使用bt命令看到调用栈,为什么?得知GDB v6之后都是支持DWARF2的,也就意味着它可以...
2、gcc选项-fomit-frame-pointer gcc文档中对该选项的解释如下: 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 ...
★ -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
-Oy[-] 启用框架指针省略 enable frame pointer omission -Oi 启用内建函数 enable intrinsic functions 代码生成 -G3 为 80386 进行优化 optimize for 80386 -G4 为 80486 进行优化 optimize for 80486 -GR[-] 启用 C++ RTTI enable C++ RTTI -G5 为 Pentium 进行优化 optimize for Pentium ...
-mapcs-frame 对所有函数都生成一个遵从ARM程序调用标准的堆栈帧,即使在正确执行代码无需严格这么做时。使用此开关时指定“-fomit-frame-pointer”将不产生叶函数的堆栈帧。缺省情况下是“-mno-apcs-frame”。 -mapcs与“-mapcs-frame”相同。 -mapcs-26 产生使用26比特程序计数器的处理器代码,遵从APCS 26比特选项...
-Oy[-] 启用框架指针省略 enable frame pointer omission -Oi 启用内建函数 enable intrinsic functions 代码生成 -G3 为 80386 进行优化 optimize for 80386-G4 为 80486 进行优化 optimize for 80486-GR[-] 启用 C++ RTTI enable C++ RTTI-G5 为 Pentium 进行优化 optimize for Pentium-G6 为 Pentium Pro...
-fomit-frame-pointer -freorder-blocks -fshrink-wrap -fshrink-wrap-separate -fsplit-wide-types -fssa-backprop -fssa-phiopt -ftree-bit-ccp -ftree-ccp -ftree-ch -ftree-coalesce-vars -ftree-copy-prop -ftree-dce -ftree-dominator-opts ...
-momit-leaf-frame-pointer不为叶子函数在寄存器中保存栈指针,这样可以节省寄存器,但是将会使调试变的困难。注意:不要与 -fomit-frame-pointer 同时使用,因为会造成代码效率低下。-m64生成专门运行于64位环境的代码,不能运行于32位环境,仅用于x86_64[含EMT64]环境。-mcmodel=small[默认值]程序和它的符号必须...