作者HowLeeHi (處處留心皆正妹)
看板C_and_CPP
標題[問題] 目前版本的gcc組語stack frame內容..
時間Mon Jul 7 01:33:37 2014
開發平台(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!
--
你的行動或許沒有意義,但你還是非做不可。
這不是為了改變世界,而是為了讓你成為不會被世界改變的那個人.
– 甘地(Mahatma Gandhi)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.61.42
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1404668022.A.FA5.html
推 LPH66:這跟 calling convention 沒有關係, 純粹是 function 內部 07/07 01:40
→ LPH66:的事情而已; 是說你有什麼需求需要直接存取位址嗎? 07/07 01:41
→ LPH66:內置組合語言的話記得有個方法可以寫變數讓編譯器幫你代位址 07/07 01:41
→ scwg:"stack frame layout" 07/07 05:32
→ akasan:暫存變數要放哪都是隨 Compiler 爽的~ 07/07 16:29
→ azureblaze:有return a甚至會被直接放在上一層function裡 07/07 16:45
→ HowLeeHi:thanks all! 我沒什麼特殊需求,只是純粹研究它的組語而已 07/07 18:35