函数的栈帧相关内容

本文详细阐述了函数栈帧的工作原理,包括寄存器esp和ebp的角色,以及函数调用过程中如何维护栈帧。通过push和pop操作描述了参数如何入栈和出栈,强调了eax, ebx等寄存器的临时存储功能。此外,还介绍了栈帧的申请与释放过程,以及函数调用中栈帧的变化情况。" 82908613,7384099,C++构造函数与初始化列表深度解析,"['C++编程', '构造函数', '初始化', '成员变量', '编译原理']
摘要由CSDN通过智能技术生成

一.寄存器(集成到CPU上的)

1.esp(栈顶指针),ebp(栈底指针)

这两个寄存器中存放的是地址,这两个地址是用来维护函数栈帧的,维护的是所调用的函数。

2.eax,ebx,ecx,edx,esi,edi....

临时存放形参变量,程序结束之后寄存器中的内容会销毁。

二.

1.push-----压栈(给栈区放入元素)

(1) 第一个push是在将调用main函数(__tmainCRTStartup)中的ebp的值压栈,再将esp所指的地址指向更低的地址,从而能够放下ebp的值。

                                              

(2) 第二,三,四个push是将ebx,exi,edi压栈到ebp和esp中间,同时esp存放的地址指向更低的地址。

(3)      ————>          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值