关于C++中函数调用的执行过程
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
C++中函数调用的执行过程有六步:
1、参数传递:将函数参数压栈:mov eax,dword ptr [n] ;(n为参数变元)。
2、操作:将帧指针压入栈中:push ebp;使得帧指针等于栈指针:mov ebp,esp;使栈指针自减,自减得到的内存地址应当能够(足够)用来存储被调用函数的本地状态:sub esp,0CCh。
3、传入保存状态:push ebx ;保存ebx寄存器的值;push esi ;保存esi寄存器的值;push edi ;保存edi寄存器的值。
4、装入edi:lea edi,[ebp-0CCh] ;0cch是当前活动记录的大小。
5、恢复传入的保存状态:00411417 pop edi;00411418 pop esi;pop ebx栈指针上移,恢复空间;add esp,0CCh。
6、函数返回释放空间:使栈指针等于帧指针: mov esp,ebp;从栈中将旧的帧指针弹出: pop ebp;返回:ret。
扩展资料:
如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整型处理。当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。
如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。