天天看点

c语言调用约定与底层汇编调用约定:

ret:将eip的值返回到esp中

调用约定:

fastcall 前两个参数放入ecx,edx,后面参数从右往左依次入栈,被调用者栈平衡

stdcall 参数从右往左依次入栈,被调用者栈平衡

thiscall

cdecl 参数从右往左依次入栈,调用者栈平衡;add esp,xxx:栈平衡

c语言调用约定与底层汇编调用约定:

stdcall是被调用者栈平衡,因此在func2里面add esp,栈平衡

栈是每个线程都必须拥有的空间,是一个内存

char类型和short类型参数都是以4字节入栈存储的,不够就补,但是printf中会提升到八个字节

不写调用约定默认是__cdecl调用约定 调用者:调用函数的函数