在前期的学习中,我们可能会有很多困惑:
那么通过学习函数栈帧的创建和销毁,以上困惑就会迎刃而解。
注: 本次讲解使用的是vs2013,不要使用太高级的编译器,越高级的编译器,越不容易学习和观察;同时,在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现。
为了讲清楚函数栈帧,我们需要先做一些铺垫:
寄存器: eax ebx ecx edx ebp esp
ebp、esp这2个寄存器中存放的是地址,这2个地址是用来维护函数栈帧的
每一个函数调用,都要在栈区创建一个空间

接下来,就正式开始介绍函数栈帧的创建和销毁






把从edi这个位置开始,向下的39h个dword(double word;一个word是两个字节)的数据,全部改成CCCCCCCC










把30放到eax这个寄存器里面






main函数的销毁和Add函数的销毁类似,就不再进行演示了。
总结: