假设我在x86程序集中有void f(int a, int b, int c) { g(a, b, c); h(a, b, c); }
,如下所示:
section .text
f:
pop dword [res_1]
call g ; g(a, b, c)
call h ; h(a, b, c)
push dword [res_1]
ret
section .bss
res_1:
resd 1
如果g
遵循cdecl调用约定,我保证g
不会改变在堆栈中传递给它的参数吗?
答案 0 :(得分:1)
cdecl
不要求被调用者保留它的参数,但大多数函数都可以。
修改 :(添加评论信息/答案)
(在编辑问题后不相关)您的代码如何:被调用者也不需要保留fpu
个寄存器。
我更愿意相信Agner Fog,但您可能会尝试在操作系统的ABI中查找信息