내가 이런 식의 x86 어셈블리에 void f(int a, int b, int c) { g(a, b, c); h(a, b, c); }
말해봐 : g
가 호출 규칙을 cdecl 규칙을 다음과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 규칙 스택 프레임의 인수 값의 사본을 값으로 전달 운영 체제의 ABI를에서 정보를 찾기 위해 시도 할 수 있습니다. 호출자가 "보존"하는지 여부는 중요하지 않으며 호출 후 호출이 무시됩니다. –