堆栈桢结构与gcc版本
这阵子在看内存溢出的相关文章——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 编辑 ] 64的abi和32位压根不一样,参考:
http://www.x86-64.org/documentation/abi-0.99.pdf 原帖由 albcamus 于 2008-8-18 12:40 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
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还是不大明白,还想找到具体的在这套环境下压栈的过程,比如说对齐细节什么的,谢谢啦~~ 原帖由 ruger 于 2008-8-18 13:32 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
多谢~~
但是32位的intel x86处理器+FC7+gcc 4.1.2+linux kernel 2.6.23还是不大明白,还想找到具体的在这套环境下压栈的过程,比如说对齐细节什么的,谢谢啦~~
32位的ABI文档是SCO发布的,url我找不到了,上传一份:
回复 #4 albcamus 的帖子
谢谢!很有用。:lol:
页:
[1]