[問題] c語言使用組合語言呼叫函式sp數值問題

作者: q22049202 (國寶)   2016-03-05 17:16:31
開發平台(Platform):c++&asm
問題(Question):c語言用組合語言去呼叫一個函式,觀察跳躍前後sp內的數值
,單純用組合語言sp會差2,用c語言使用組合語言呼叫的會差6
請問有什麼盲點嗎?
麻煩各位大大解答了
有用反組譯去看機械碼
在呼叫函式進入後
函式的開頭有SP+4跟結尾SP-4
有些是開頭有SP+8跟結尾SP-4
請問這個別是什麼原因加上的
作者: LPH66 (-6.2598534e+18f)   2016-03-05 17:41:00
可以貼一下你看到的機械碼...這些比較跟編譯器使用的 calling convention 有關不過你可能有哪裡弄錯了, stack 是倒著長的, 所以一般來說進函式時是 sp = sp - size, 出函式時 sp = sp + size你可能看到了使用 sp 存取參數的間接定址了(你講的那個 sp+4 如果是在 [] 裡的那就是了)
作者: q22049202 (國寶)   2016-03-05 20:08:00
http://imgur.com/a/n6TYY 附上程式碼可以方便問一下 為什麼是+4嗎?是為了函式內有可能要擺放東西預先空間?
作者: stupid0319 (徵女友)   2016-03-06 14:27:00
_cdecl _stdcall _fastcall請問你用哪一個call你的fun

Links booklink

Contact Us: admin [ a t ] ucptt.com