看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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