作者q22049202 (国宝)
看板C_and_CPP
标题[问题] c语言使用组合语言呼叫函式sp数值问题
时间Sat Mar 5 17:16:31 2016
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1457169393.A.B67.html
※ 编辑: q22049202 (140.125.20.146), 03/05/2016 17:38:14
1F:推 LPH66: 可以贴一下你看到的机械码... 03/05 17:41
2F:→ LPH66: 这些比较跟编译器使用的 calling convention 有关 03/05 17:43
3F:→ LPH66: 不过你可能有哪里弄错了, stack 是倒着长的, 所以一般来说 03/05 17:43
4F:→ LPH66: 进函式时是 sp = sp - size, 出函式时 sp = sp + size 03/05 17:44
5F:→ LPH66: 你可能看到了使用 sp 存取参数的间接定址了 03/05 17:45
6F:→ LPH66: (你讲的那个 sp+4 如果是在 [] 里的那就是了) 03/05 17:45
8F:→ q22049202: 可以方便问一下 为什麽是+4吗?是为了函式内有可能 03/05 20:08
9F:→ q22049202: 要摆放东西预先空间? 03/05 20:09
10F:推 stupid0319: _cdecl _stdcall _fastcall请问你用哪一个call你的fun 03/06 14:27