使用到的工具
- VC6.0(观察寄存器变化)
- Excel(画堆栈图)
函数定义
函数定义的格式如下:
返回类型 函数名(参数列表)
{
功能
return;
}
例子:
int plus(int,x int,y)
{
return x+y;
}
int代表的是字节宽度,除int外,还有两个常使用的变量类型
变量类型 | 数据宽度 |
---|---|
int | 4个字节 |
short | 2个字节 |
char | 1个字节 |
画堆栈图
int plus(x,y)
{
return x+y;
}
void main() //程序入口
{
plus(1,2); //函数调用
return; //执行结束
}
就从上面这个程序来说,它究竟是怎么执行的呢?我们下个断点,追一下程序内存的变化,就像这样:
这里一定要记住两个寄存器的变化,一个是ESP栈顶寄存器,一个是EBP栈底寄存器