关于C++中函数调用的执行过程

 我来答
惠企百科
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

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。

扩展资料:

如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整型处理。当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。

 如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式