1、C语言调用约定
函数声明使用 __cdecl 修饰符。
void __cdecl Foo(int a, int b);
将参数从右至左压入堆栈,执行结束后,以 ret 返回,由“调用者”恢复堆栈。
push 2
push 1
call _Foo
add esp,8
2、标准调用约定
函数声明使用 __stdcall 修饰符。
void __stdcall Foo(int a, int b);
将参数从右至左压入堆栈,执行结束后,以 ret 8 返回,Foo 函数自身恢复堆栈。
push 2
push 1
call _Foo@8