《深入理解计算机系统》第三章,帮我解惑一下
3.3.2代码示例
使用gcc -O1 -S code.c
产生code.s文件
sum:
pushl %ebp
movel %esp,%ebp
move1 12(%ebp),%eax
addl 8(%ebp),%eax
addl %eax,accum
popl %ebp
ret
可是为什么我得到的结果是:
关键问题是连入栈出栈都没有? gcc
[解决办法]
在老版本中的编译器,参数是存放在esp偏移中,现在的都是在ebp中,因为esp是随时可能改变的,所以现在都是通过ebp来寻找变量
[解决办法]
这是FPO 优化,全称是 Frame-Pointer Omission
中文名称,不记得了.