首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

《深入理解计算机系统》第三章,帮小弟我解惑一下

2013-10-05 
《深入理解计算机系统》第三章,帮我解惑一下3.3.2代码示例使用gcc -O1 -S code.c产生code.s文件sum: pushl %

《深入理解计算机系统》第三章,帮我解惑一下
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
中文名称,不记得了.

热点排行