函数调用
函数调用
cdcel
参数从右向左依次入栈
参数一
参数二
......
call...
add esp,xxx
返回地址入栈
保存EBP
局部变量分配空间
stdcall 堆栈被调用都自己恢复
void test() { int t; // ebp - 4 scanf_s("%d", &t); __asm { mov ebx, t; // 把t的值存入ebx寄存器 mov eax, [ebp];// 取保存在堆栈里面EBP的值 mov[eax-8], ebx; // 取变量m的地址 } } int main(int argc,char **argv) { int m = 0; // ebp - 8 test(); printf("m = %d\n",m); system("pause"); }
上面程序在test()函数中输入值,在main函数中打印出来