-fomit-frame-pointer 编译选项在gcc 4.8.2版本中的汇编代码研究
2015-01-23 21:43
459 查看
#include void fun(void) { printf("fun"); } int main(int argc, char *argv[]){ fun(); return 0;} $ gcc -o test_ffp test.c $ gcc -fomit-frame-pointer -o test_ffp test.c -rwxr-xr-x 1 Admin 40968 Jan 23 21:14 test.exe -rwxr-xr-x 1 Admin 40968 Jan 23 21:22 test_ffp.exe $ gdb -q test.exe $ gdb -q test_ffp.exe (gdb) disass main (gdb) disass main Dump of assembler code for \ --ction main: Dump of assembler code for \ --ction main: 0x00401574 <+0>: push %ebp 0x00401573 <+0>: push %ebp 0x00401575 <+1>: mov %esp,%ebp 0x00401574 <+1>: mov %esp,%ebp 0x00401577 <+3>: and $0xfffffff0,%esp 0x00401576 <+3>: and $0xfffffff0,%esp 0x0040157a <+6>: call 0x401fb0 <__main> 0x00401579 <+6>: call 0x401fb0 <__main> 0x0040157f <+11>: call 0x401560 0x0040157e <+11>: call 0x401560 0x00401584 <+16>: mov $0x0,%eax 0x00401583 <+16>: mov $0x0,%eax 0x00401589 <+21>: leave 0x00401588 <+21>: leave 0x0040158a <+22>: ret 0x00401589 <+22>: ret 0x0040158b <+23>: nop 0x0040158a <+23>: nop 0x0040158c <+24>: xchg %ax,%ax 0x0040158b <+24>: nop 0x0040158e <+26>: xchg %ax,%ax 0x0040158c <+25>: xchg %ax,%ax End of assembler dump. End of assembler dump. (gdb) disass fun (gdb) disass fun Dump of assembler code for \ --ction fun: Dump of assembler code for \ --ction fun: 0x00401560 <+0>: push %ebp 0x00401560 <+0>: sub $0x1c,%esp 0x00401561 <+1>: mov %esp,%ebp 0x00401563 <+3>: movl $0x404024,(%esp) 0x00401563 <+3>: sub $0x18,%esp 0x0040156a <+10>: call 0x402738 0x00401566 <+6>: movl $0x404024,(%esp) 0x0040156f <+15>: add $0x1c,%esp 0x0040156d <+13>: call 0x402738 0x00401572 <+18>: ret 0x00401572 <+18>: leave End of assembler dump. 0x00401573 <+19>: ret (gdb) End of assembler dump. (gdb)
文件大小是一样,结果fun函数的汇编代码中push %ebp; leave; 没有啦.
相关文章推荐
- GCC "-fomit-frame-pointer"编译选项的含义
- C性能调优---GCC编译选项-fomit-frame-pointer
- GCC的-fomit-frame-pointer编译选项的含义
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- GCC 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer .
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- gcc -fomit-frame-pointer选项,-fno-dwarf2-cfi-asm 选项
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- GCC优化选项-fomit-frame-pointer对于esp和ebp优化的作用
- 《coredump问题原理探究》Linux x86版3.5节栈布局之-fomit-frame-pointer编译选项
- gcc -fomit-frame-pointer 选项与软件优化与调试
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer .
- gcc编译c++的选项以及gcc与g++编译c++代码的区别
- gcc常用的编译选项对代码的影响
- 1.预处理,生成预编译文件(.文件): Gcc –E hello.c –o hello.i 2.编译,生成汇编代码(.s文件): Gcc –S hello.i –o hello.s 3.汇编,生成目标文件(.o文件): Gcc –c hello.s –o hello.o 4.链接,生成可执行文件: linux笔记
- GCC编译选项研究(1)