[問題] 目前版本的gcc組語stack frame內容..

看板C_and_CPP作者 (處處留心皆正妹)時間11年前 (2014/07/07 01:33), 編輯推噓1(106)
留言7則, 5人參與, 最新討論串1/1
開發平台(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

07/07 01:40, , 1F
這跟 calling convention 沒有關係, 純粹是 function 內部
07/07 01:40, 1F

07/07 01:41, , 2F
的事情而已; 是說你有什麼需求需要直接存取位址嗎?
07/07 01:41, 2F

07/07 01:41, , 3F
內置組合語言的話記得有個方法可以寫變數讓編譯器幫你代位址
07/07 01:41, 3F

07/07 05:32, , 4F
"stack frame layout"
07/07 05:32, 4F

07/07 16:29, , 5F
暫存變數要放哪都是隨 Compiler 爽的~
07/07 16:29, 5F

07/07 16:45, , 6F
有return a甚至會被直接放在上一層function裡
07/07 16:45, 6F

07/07 18:35, , 7F
thanks all! 我沒什麼特殊需求,只是純粹研究它的組語而已
07/07 18:35, 7F
文章代碼(AID): #1JkOXs-b (C_and_CPP)