- 30
- 0
- 约1.32万字
- 约 86页
- 2017-09-22 发布于广东
- 举报
CNSUME 目标代码 PRDUCE 目标代码 Char *50 buf int next char c Char *80 buffer int next Cnsume 活动记录 prduce 活动记录 目标代码 静态数据 6.3.2 栈式存储分配 基于控制栈的原理:?存储空间被组织成栈,活动记录的推入和弹出分别对应于活动的开始和结束。 与静态分配不同的是,在每次活动中把局部名字和新的存储单元绑定,在活动结束时,活动记录从栈中弹出,因而局部名字的存储空间也随之消失。 ? 例6.5 图6.11表明当控制流通过图6.3的活动树时活动记录被推人或弹出运行时刻的栈中的情况,设寄存器top标记栈顶。 ? s S a:array top r r i:integer top top q(1,9) q(1,9) i:integer top p(1,9) p(1,9) i:integer top top q(1,3) q(1,3) i:integer top 图 6.11 栈式分配活动记录在栈中的变化 确定活动记录中局部数据的地址:假设 top-sp标记一个活动记录的开始的位置, dx表 示x的地址相对于top-sp的偏移量。那么, x在 过程的目标代码中的地址可写成 dx(top-sp) 在运行时刻,当把x的活动记录筑于栈顶时,寄 存器top- sp被赋于实际的地址, top- sp可以是 一个寄存器。 调用序列和返回序列 ? 通过在目标代码中生成调用序列和返回序列 实现过程的调用。激活一个过程的活动是执行 过程语句的结果。过程语句 p(e1,e2,……,en) 的目标代码(调用序列)完成任务: ??? 1. 调用者对实在参数求值,并把它们传送给 被调用过程的活动记录的参数域。 ??? 2.调用者在被调用者的活动记录中存放返 回地址和老top-sp之值。之后调用者把 top一sp之值增加到图6.12所示的位置。 ??? 3.被调用者存放寄存器值和其它状态信息。 ??? 4.被调用者初始化其局部数据并开始执行。 返回序列,return目标代码完成的任务是: ??? 1.被调用者在自己的活动记录的返回值域 中放一个返回值。 ??? 2.利用状态域中的信息,被调用者恢复 top-sp和其它寄存器,并且按返回地址转 移到调用者的代码之中。 ??? 3.调用者复制返回值到自己的活动记录中。 任务的划分,根据源语言、目标机器和操 作系统等具体情况而定。 上述任务,由运行支持子程序完成,可视为虚机指令。 ?可变长度的数据 源程序的例子 PROCEDURE exam(l,m,n:integer); VAR a:array [1..l] of real; b:array [1..m] of real; c:array [1..n] of real; BEGIN …… END; 编译时,不知 a,b,c的大小,仅对每个数组设置一个指针。 Control link ?a ?b ?c Top-sp top Array a Array b Array c top P的活动记录 P的动态数组 图6.13 动态分配的数组 活动记录的进栈和推栈 栈顶活动记录用两个指针top和top-sp指示。 top-sp指向栈顶活动记录保存机器状态域的末 端,用于访问局部数据。 top指向栈顶。 P调用q:栈[top+h]:=top-sp; top-sp:=top+h; top:=top+q的活动记录长度 从q的活动返回:top:=top-sp–q (h) top-sp:=栈[top-sp] p q top-sp top-sp top top h 6.3.3 堆式存储分配 1.局部名的值在活动结束时必须被保存。 ???2. 被调用者的活动生存期超过调用者。 用活动树不能够正确描绘这种语言的过 程之间的控制流。
您可能关注的文档
- DA & AD转换器及其与单片机接口.ppt
- Delphi_数据库程序设计.ppt
- e01.Introduction绪论.ppt
- e03.Connective tissue结缔组织.ppt
- e04.Cartilage & Bone软骨和骨.ppt
- e05.Blood and Hemopoiesis血液淋巴和血发生.ppt
- e06.Muscular Tissue肌组织.ppt
- e09.Circulat0ry system循环系统.ppt
- e10.Immune system免疫系统.ppt
- e11.Skin皮肤.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025年省考超大杯刷题-申论套卷四.pdf VIP
- 小学学校总务处的工作计划.pptx VIP
- 大学毕业论文__小型液压挖掘机的设计.doc VIP
- 食材配送人员配置与资质要求.docx VIP
- 2025年山东省济南市中考英语试卷试题真题(精校打印版).pdf VIP
- 一种能够在太阳光下快速固化的可剥离去污复合膜及制备方法.pdf VIP
- 骨科临床诊疗指南及操作规范(2025版).docx
- 2025-2026学年小学信息技术(信息科技)四年级下册浙教版(2023)教学设计合集.docx
- 沪科版九年级(上) 中考题同步试卷:22.5 二次函数的应用(18).doc VIP
- 中国的刺腹牙甲属、脊胸牙甲属和凹基牙甲属昆虫鞘翅目牙甲科牙甲族研究.pdf VIP
原创力文档

文档评论(0)