用一段比较简单的代码来演示一下:
#include <stdio.h>
#include <stdlib.h>
#include "game.h"
int sum(int x,int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int ret = 0;
ret = sum(a,b);
printf("%d",ret);
return 0;
}
这段代码的汇编语言是:
0x40137f push %ebp 首先ip和记录着栈底的ebp进栈0x0028ff28
0x401380 mov %esp,%ebp 把esp的值给ebp
0x401382 and $0xfffffff0,%esp 把esp的值的最后一位变成零
0x401385 sub $0x20,%esp 给main函数申请20H,相当于32个字节的栈空间
0x401388