当前位置: 首页 > wzjs >正文

营销型国外网站卡盟网站怎么做图片大全

营销型国外网站,卡盟网站怎么做图片大全,深圳做网站d,网站源码下载安全吗一、什么是栈帧(Stack Frame) 当一个函数被调用时,会在栈上开辟一段空间,叫做 栈帧。 每个栈帧保存了: 函数的参数 返回地址(从哪里跳回来) 上一个栈帧的栈底指针(保存调用者的 E…

一、什么是栈帧(Stack Frame)

当一个函数被调用时,会在栈上开辟一段空间,叫做 栈帧
每个栈帧保存了:

  • 函数的参数

  • 返回地址(从哪里跳回来)

  • 上一个栈帧的栈底指针(保存调用者的 EBP / FP)

  • 局部变量

  • 保存的一些寄存器(可选)


二、函数嵌套调用例子

以 C 为例:

void C() {int c = 3;
}void B() {int b = 2;C();
}void A() {int a = 1;B();
}int main() {A();return 0;
}

三、每次函数调用的栈帧结构(以 x86 为例)

栈增长方向:从高地址向低地址

每次调用栈帧大致如下(从下到上):

高地址
│
│  上一帧的 EBP(caller 的栈底)
│  返回地址(RET)
│  参数(如有)
│  局部变量(如 int x)
│
↓
低地址

四、函数嵌套时完整栈帧流程图

以调用链 main → A → B → C 为例,假设每层函数内部有 1 个 int 局部变量。

初始状态:
栈空main() 被调用:
+-------------------+ ← ESP,EBP(main 的栈底)
| 返回地址          |
+-------------------+
| 局部变量 return=0 |
+-------------------+main() → A()
+-------------------+ ← ESP(当前)
| 返回地址(main)    |
+-------------------+
| 上一帧的 EBP      |
+-------------------+
| 局部变量 a=1      |
+-------------------+A() → B()
+-------------------+
| 返回地址(A)       |
+-------------------+
| 上一帧的 EBP      |
+-------------------+
| 局部变量 b=2      |
+-------------------+B() → C()
+-------------------+
| 返回地址(B)       |
+-------------------+
| 上一帧的 EBP      |
+-------------------+
| 局部变量 c=3      |
+-------------------+栈顶 (ESP)

五、函数返回时的栈帧回退过程

函数返回时,会弹出当前栈帧,恢复上一个函数的栈帧(EBP 和 RET 地址)。

C() return → ESP 恢复到 B()
B() return → ESP 恢复到 A()
A() return → ESP 恢复到 main()
main() return → 程序结束

六、流程图总结

main
│
├── 调用 A()
│   │
│   └── 调用 B()
│       │
│       └── 调用 C()
│
└── 每层函数进栈,栈帧不断叠加每层函数返回,栈帧依次弹出

七、可视化理解

栈顶
│
│  C 的局部变量
│  返回地址(B)
│
│  B 的局部变量
│  返回地址(A)
│
│  A 的局部变量
│  返回地址(main)
│
│  main 的局部变量
│  返回地址(操作系统)
↓
栈底

八、汇编视角分析

以 x86 为例,函数调用时常见的指令:

CALL func   ; 压入返回地址 → 跳转
PUSH EBP    ; 保存当前帧
MOV EBP, ESP; 建立新栈帧
SUB ESP, n  ; 为局部变量分配空间
...
MOV ESP, EBP; 恢复 ESP
POP EBP     ; 恢复上层栈帧
RET         ; 弹出返回地址

九、总结

步骤栈帧变化关键指令
函数调用新栈帧入栈CALLPUSH EBP
建立栈帧保存旧帧 & 分配空间MOV EBP, ESPSUB ESP, n
函数返回弹出栈帧MOV ESP, EBPPOP EBPRE

补充:

  • 在 x86_64 下,函数参数会用寄存器传递(如 RDI、RSI)

  • 在 ARM64 下,栈帧也有 FP/LR(Frame Pointer / Link Register)结构

  • 调用链跟踪调试可用 gdb、ida、ghidra 中的栈回溯(backtrace)


文章转载自:

http://LJetyIpE.wyrkp.cn
http://g55HjD1Q.wyrkp.cn
http://czyvkoV9.wyrkp.cn
http://PlagHnJH.wyrkp.cn
http://aUpHyy11.wyrkp.cn
http://2BoNcooy.wyrkp.cn
http://jkbZ68Ra.wyrkp.cn
http://qN78HC4w.wyrkp.cn
http://6vLggHf3.wyrkp.cn
http://pJqwhAph.wyrkp.cn
http://r1PTNfwi.wyrkp.cn
http://GJdMyFg5.wyrkp.cn
http://IPL0OaEK.wyrkp.cn
http://mh8Yp2Zl.wyrkp.cn
http://snvR0M8q.wyrkp.cn
http://pKOzb85P.wyrkp.cn
http://5wvI9ryZ.wyrkp.cn
http://J14eqW0u.wyrkp.cn
http://yYvORBV7.wyrkp.cn
http://8MvWkAuj.wyrkp.cn
http://zshp6WBH.wyrkp.cn
http://USSeRGAy.wyrkp.cn
http://GsT7BgMm.wyrkp.cn
http://6RJ7POPt.wyrkp.cn
http://OTvYYHHx.wyrkp.cn
http://tDTTtvi1.wyrkp.cn
http://HNZiHEzz.wyrkp.cn
http://xSAAcM3d.wyrkp.cn
http://I3gC7Xmp.wyrkp.cn
http://G5fMch64.wyrkp.cn
http://www.dtcms.com/wzjs/773067.html

相关文章:

  • 网站app软件wordpress输出所有分类标题
  • 江苏网站建设seo优化策划营销
  • ui设计网站设计与网页制作视频教程网站建设的技能有哪些内容
  • 网站排名优化方案wordpress信息流主题
  • 昆山公司网站建设阜阳北京网站建设
  • 网站免费诊断免费网站建设专业服务平台
  • discuz怎么做网站地图如何将网站开发成微信小程序
  • 企业网站建设应避免数据孤岛冠县网站建设公司
  • 建设银行面试通知网站软件开发和网站开发难度
  • 企业网站宣传建设做一个网站的基本步骤
  • 江油移动网站建设集团公司网站模板
  • 网站搭建流程图郑州网站推广排名
  • 网站建设的公司如何选iis5.1 建立网站
  • 共享网站哪里建无锡网站服务公司
  • 电商网站 厦门金融网站策划方案
  • 北京网站定制流程建立一个网站要什么条件
  • wordpress网站特效外贸通道支持asp的网站吗
  • 青海网站建设设计wordpress网址更换
  • 怎么做健康咨询网站服务器上网站打不开
  • 西宁建设工程信息网站学习软件合集
  • 钓鱼网站制作视频教程四川建设厅官方网站九大员通知
  • 网站做查赚钱辽宁城乡建设官方网站
  • 包头网站建设包头网站重大建设项目公开发布制度
  • 制作企业网站作业南阳市网站建设
  • 肥猫网站建设安庆网站建设工作室
  • 一起做网店网站特点网页设计作业成品免费百度云
  • 网站被做跳转怎么办怎么阻止网站
  • 西安优秀的集团门户网站建设企查查官网查询入口
  • 建设wap手机网站制作如何创建网站主页
  • 销型网站建设必须的步骤包括网站创建软件