[问题] 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