[问题] 目前版本的gcc组语stack frame内容..

楼主: HowLeeHi (处处留心皆正妹)   2014-07-07 01:33:37
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
请问我之前用的gcc 3.x版,我把C 转成 组合语言后
main()
{
int a,b,c;
}
这样的程式码, 变量 a, b,c 在 stack frame里面的位址
分别是
ebp-4
ebp-8
ebp-12
可是我用gcc 4.x版后,发现整个反过来了, 变量 a ,b ,c分别是
ebp-12
ebp-8
ebp-4
是什么原因呢??
有这种calling convention吗?
有没有关键字呢?我在gcc 的 changelog找不到...
thanks!
作者: LPH66 (-6.2598534e+18f)   2014-07-07 01:40:00
这跟 calling convention 没有关系, 纯粹是 function 内部的事情而已; 是说你有什么需求需要直接存取位址吗?内置组合语言的话记得有个方法可以写变量让编译器帮你代位址
作者: scwg ( )   2014-07-07 05:32:00
"stack frame layout"
作者: akasan (KITO)   2014-07-07 16:29:00
暂存变量要放哪都是随 Compiler 爽的~
作者: azureblaze (AzureBlaze)   2014-07-07 16:45:00
有return a甚至会被直接放在上一层function里
楼主: HowLeeHi (处处留心皆正妹)   2014-07-07 18:35:00
thanks all! 我没什么特殊需求,只是纯粹研究它的组语而已

Links booklink

Contact Us: admin [ a t ] ucptt.com