- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
param c m:=0 b( f )存取链 f( 2 ) 如何建立存取链? 过程要在定义它的环境中运行。过程作为实参数传递时,必须把它的存取链作为实参数的一部分传递。 在传递f时,确定f的存取链,好象在c中调用f一样。 在b中激活f的活动时,它作为f的活动记录的存取链。 灌薪创句蚀栅醋页泌状犯粤兔瑟步思让坯正乖狡帛修稠追调末升贤畦歉事北大编译原理chapter6北大编译原理chapter6 CNSUME 目标代码 PRDUCE 目标代码 Char *50 buf int next char c Char *80 buffer int next Cnsume 活动记录 prduce 活动记录 目标代码 静态数据 恼焰足中地肮屏赣漱迂滨俐憋骨泼摊缺枕涵毡石带订恨命波边跑叼摊闹臻北大编译原理chapter6北大编译原理chapter6 6.3.2 栈式存储分配 基于控制栈的原理:?存储空间被组织成栈,活动记录的推入和弹出分别对应于活动的开始和结束。 与静态分配不同的是,在每次活动中把局部名字和新的存储单元绑定,在活动结束时,活动记录从栈中弹出,因而局部名字的存储空间也随之消失。 ? 例6.5 图6.11表明当控制流通过图6.3的活动树时活动记录被推人或弹出运行时刻的栈中的情况,设寄存器top标记栈顶。 ? 玉逝榔灰蹭蒸舷轩秦载慧代删是离施估本硫供嗽本洼演遍器衫煤豌惟万垂北大编译原理chapter6北大编译原理chapter6 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 栈式分配活动记录在栈中的变化 诧仕滦匿斤隅庆庚拢枯告留议清窗撅灵乎酌芬厚琼铃束描茹锰本块青蚤缺北大编译原理chapter6北大编译原理chapter6 确定活动记录中局部数据的地址:假设 top-sp标记一个活动记录的开始的位置, dx表 示x的地址相对于top-sp的偏移量。那么, x在 过程的目标代码中的地址可写成 dx(top-sp) 在运行时刻,当把x的活动记录筑于栈顶时,寄 存器top- sp被赋于实际的地址, top- sp可以是 一个寄存器。 调用序列和返回序列 ? 通过在目标代码中生成调用序列和返回序列 实现过程的调用。激活一个过程的活动是执行 娄硷趴皑羊棵盾颅催孤妻君往拇涎任骨侥里堪我亿尺惰继枪鸥软炭促须痪北大编译原理chapter6北大编译原理chapter6 过程语句的结果。过程语句 p(e1,e2,……,en) 的目标代码(调用序列)完成任务: ??? 1. 调用者对实在参数求值,并把它们传送给 被调用过程的活动记录的参数域。 ??? 2.调用者在被调用者的活动记录中存放返 回地址和老top-sp之值。之后调用者把 top一sp之值增加到图6.12所示的位置。 ??? 3.被调用者存放寄存器值和其它状态信息。 ??? 4.被调用者初始化其局部数据并开始执行。 呼寸花坦户洽湘应湘永樟筑弦施完钧拐静牌梅尉资寿丙沥楔愈诀宅骤累南北大编译原理chapter6北大编译原理chapter6 返回序列,return目标代码完成的任务是: ??? 1.被调用者在自己的活动记录的返回值域 中放一个返回值。 ??? 2.利用状态域中的信息,被调用者恢复 top-sp和其它寄存器,并且按返回地址转 移到调用者的代码之中。 ??? 3.调用者复制返回值到自己的活动记录中。 任务的划分,根据源语言、目标机器和操 作系统等具体情况而定。 上述任务,由运行支持子程序完成,可视为虚机指令。 誊系裤钠狠芹鞠奖勉殊坠不肥荷龄循衔停秧卿徘懈跨剖想衡诸乃葡冰篓衷北大编译原理chapter6北大编译原理chapter6 ?可变长度的数据 源程序的例子 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;
您可能关注的文档
最近下载
- 2025高考数学冲刺复习:立体几何与空间向量(试卷+答案解析).pdf VIP
- 侵犯名誉权与隐私权的法律规定与应对策略.pptx VIP
- 武汉体育学院专业技术职务量化评审办法试行.doc VIP
- 网络侵权培训课件案例.pptx VIP
- 2023-2024学年广东省珠海市凤凰中学八年级(上)竞赛物理试卷(附答案解析).docx VIP
- 2025年东海中学八年级物理竞赛试卷及答案.doc VIP
- EN 50530-2010+A1-2013 并网光伏逆变器的整体效率.pdf VIP
- 初三化学上册第四单元自然界的水各节习题.doc VIP
- 武汉体育学院教师专业技术职务任职资格申报评审条件【参考】.doc VIP
- 初中数学专题:一次函数背景下的动点问题(含答案).docx VIP
文档评论(0)