免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3198 | 回复: 4
打印 上一主题 下一主题

堆栈桢结构与gcc版本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-18 10:49 |只看该作者 |倒序浏览
这阵子在看内存溢出的相关文章——Smashing The Stack For Fun And Profit,发现时间已经很久远了,linux发行版也发生了很多变化,关于压栈时堆栈桢的结构,已经不能和现在的Fedora Core 7 with gcc 4.1.2一致了,压栈的时候依次压入函数参参数、EIP、EBP、函数内部参数,并且4bytes对齐,但是是在intel x86+FC7+gcc 4.1.2+kernel 2.6.23.17的情况下却不同,应该是gcc版本问题导致的,请问,gcc的版本与压栈流程有什么具体关系?使用gcc 的-std=选项编译了c89和c99的程序,gdb反汇编出来是一样的~~
另外,还想知道AMD 64位处理器堆栈操作是否与x86的一致,是否仅仅是64位的却别?
谢谢~~


[ 本帖最后由 ruger 于 2008-8-18 10:55 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-18 12:40 |只看该作者
64的abi和32位压根不一样,参考:
http://www.x86-64.org/documentation/abi-0.99.pdf

论坛徽章:
0
3 [报告]
发表于 2008-08-18 13:32 |只看该作者
原帖由 albcamus 于 2008-8-18 12:40 发表
64的abi和32位压根不一样,参考:
http://www.x86-64.org/documentation/abi-0.99.pdf

多谢~~
但是32位的intel x86处理器+FC7+gcc 4.1.2+linux kernel 2.6.23还是不大明白,还想找到具体的在这套环境下压栈的过程,比如说对齐细节什么的,谢谢啦~~

论坛徽章:
0
4 [报告]
发表于 2008-08-18 15:15 |只看该作者
原帖由 ruger 于 2008-8-18 13:32 发表

多谢~~
但是32位的intel x86处理器+FC7+gcc 4.1.2+linux kernel 2.6.23还是不大明白,还想找到具体的在这套环境下压栈的过程,比如说对齐细节什么的,谢谢啦~~



32位的ABI文档是SCO发布的,url我找不到了,上传一份:

abi386-4.pdf

1.02 MB, 下载次数: 165

论坛徽章:
0
5 [报告]
发表于 2008-08-18 16:05 |只看该作者

回复 #4 albcamus 的帖子

谢谢!很有用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP