[問題] 目前版本的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