函数的创建和销毁
2026/6/2 0:20:49 网站建设 项目流程

main函数

intadd(intx,inty){intz=0;z=x+y;teturn z;}intmain(){inta=10intb=20intc=0;c=Add(a,b)}

在执行内存分配的时候内存会先进行一些的操作,main也是一个函数在执行的时候会被其他函数给调用这个函数就是 _tmainCRTStartup

进入main函数


在进行main操作的时候首先会有两个指针来进行维护,分别是
esp–栈高指针
ebp–栈低指针
这两个指针指向的部分就是当前操作的部分

这就是最开始的main被调用的准备

第一条指令是进行压栈将ebp放到esp的上面此时压的就是 _tmainCRTStartup函数的ebp


第二条指令是将esp的地址放到ebp里面去,此时的ebp不再指向原来的位置而是指向的是esp的位置目前esp和ebp同时指向,

第三条指令是将esp-0E4h并放到esp里面esp就来到了上面的低地址

//--------------------------------------------------------------------------------------------------------------//

接下来再将这三条指令进行压栈放到esp上方

//----------------------------------------------------------------------------------------------------------------


这四条指令表示从最开始的ebp-0E4h到ebp这段区间有39个内容全部为cccccccc

//----------------------------------------------------------------------------------------------------------------

13句表示将0Ah(10)放进ebp-8这个空间里面
14句表示将14h(20)放到ebp-14h这个空间里面
15句表示将0放到ebp-20h这个空间里面

//---------------------------------------------------------------------------------------------------------------

第一句表示将ebp-14h里面的值放到eax(寄存器)里面
第二句表示将eax压进去
第三句表示将ebp-8里面的值放到ecx里面
第四句表示将ecx压进去

//--------------------------------------------------------------------------------------------------------------

进入函数内部


call表示存放下一个地址也就是00C21450方便下次能够精确回来,此时进入了add函数


重复上面的操作进行压栈和创建局部变量和初始化

//----------------------------------------------------------------------------------------------------------------

第4句将0放到ebp-8的空间里
第6句将ebp+8的值放到eax
第7句将ebp+0ch的值放到eax里面
第8句将eax的值放到ebp-8里面

//-----------------------------------------------------------------------------------------------------------

出函数

接下就执行出栈先将edi esi ebx给出栈

再将esp移动到ebp的位置


再将ebp给弹出此时的ebp指向的是main的ebp所以一旦弹出则ebp就回到_tmainCRTStartup函数里面esp接着往下走一步

最后一条指令表示回到抓函数并弹出call指向的地址

//----------------------------------------------------------------------------------------------------------

回到main函数里面将esp+8(相当于又弹出b和a这两个数)


表示将eax(寄存器)里面的值(30)放到ebp-20h这个空间里面去也就是c

那么也就表示函数的栈帧和销毁就已经完成了

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询