說我有void f(int a, int b, int c) { g(a, b, c); h(a, b, c); }
在x86彙編這樣的:在cdecl中,是否需要保存傳遞給它的參數的被調用者?
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
不會改變傳遞給它的堆棧中的參數?
CDECL經過值與參數值的堆棧幀的副本。主叫方是否「保留」它並不重要,無論如何,該副本在通話後都會被丟棄。 –