读书人

《深入理解计算机系统》第三章帮小弟

发布时间: 2013-10-05 17:54:48 作者: rapoo

《深入理解计算机系统》第三章,帮我解惑一下
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
[解决办法]

引用:
call convention不一样?
事实上我最大的问题是不知道参数存放在esp的偏移中还是ebp的偏移中。

在老版本中的编译器,参数是存放在esp偏移中,现在的都是在ebp中,因为esp是随时可能改变的,所以现在都是通过ebp来寻找变量
[解决办法]
这是FPO 优化,全称是 Frame-Pointer Omission
中文名称,不记得了.

读书人网 >C语言

热点推荐