看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform):c++&asm 問題(Question):c語言用組合語言去呼叫一個函式,觀察跳躍前後sp內的數值 ,單純用組合語言sp會差2,用c語言使用組合語言呼叫的會差6 請問有什麼盲點嗎? 麻煩各位大大解答了 有用反組譯去看機械碼 在呼叫函式進入後 函式的開頭有SP+4跟結尾SP-4 有些是開頭有SP+8跟結尾SP-4 請問這個別是什麼原因加上的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.125.20.146 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1457169393.A.B67.html ※ 編輯: q22049202 (140.125.20.146), 03/05/2016 17:38:14
LPH66: 可以貼一下你看到的機械碼... 03/05 17:41
LPH66: 這些比較跟編譯器使用的 calling convention 有關 03/05 17:43
LPH66: 不過你可能有哪裡弄錯了, stack 是倒著長的, 所以一般來說 03/05 17:43
LPH66: 進函式時是 sp = sp - size, 出函式時 sp = sp + size 03/05 17:44
LPH66: 你可能看到了使用 sp 存取參數的間接定址了 03/05 17:45
LPH66: (你講的那個 sp+4 如果是在 [] 裡的那就是了) 03/05 17:45
q22049202: http://imgur.com/a/n6TYY 附上程式碼 03/05 20:08
q22049202: 可以方便問一下 為什麼是+4嗎?是為了函式內有可能 03/05 20:08
q22049202: 要擺放東西預先空間? 03/05 20:09
stupid0319: _cdecl _stdcall _fastcall請問你用哪一個call你的fun 03/06 14:27