《编译原理第六章.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
param c m:=0 b( f )存取链 f( 2 ) 如何建立存取链? 过程要在定义它的环境中运行。过程作为实参数传递时,必须把它的存取链作为实参数的一部分传递。 在传递f时,确定f的存取链,好象在c中调用f一样。 在b中激活f的活动时,它作为f的活动记录的存取链。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. CNSUME 目标代码 PRDUCE 目标代码 Char *50 buf int next char c Char *80 buffer int next CNSUME 活动记录 PRDUCE 活动记录 目标代码 静态数据 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 6.3.2 栈式存储分配 基于控制栈的原理:?存储空间被组织成栈,活动记录的推入和弹出分别对应于活动的开始和结束。 与静态分配不同的是,在每次活动中把局部名字和新的存储单元绑定,在活动结束时,活动记录从栈中弹出,因而局部名字的存储空间也随之消失。 ? 例6.5 图6.11表明当控制流通过图6.3的活动树时活动记录被推人或弹出运行时刻的栈中的情况,设寄存器top标记栈顶。 ? Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 图 6.11 栈式分配活动记录在栈中的变化 s s a:array top_sp top r r r:integer top_sp top top_sp top q(1,9) q(1,9) k:integer top_sp top P(1,9) p(1,9) i,j,x,v: integer top_sp top Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 确定活动记录中局部数据的地址:假设 top-sp标记一个活动记录的开始的位置,dx表 示x的地址相对于top-sp的偏移量。那么, x在 过程的目标代码中的地址可写成 dx(top-sp) 在运行时刻,当把x所在的活动记录筑于栈顶时,top- sp被赋于实际的地址, top- sp可以是一个寄存器。 调用序列和返回序列 ? 通过在目标代码中生成调用序列和返回序列实现过程的调用。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 激活一个过程的活动是执行过程语句的结果。过程语句 p(e1,e2,……,en) 的目标代码(调用序列)完成如下任务: ??? 1. 调用者对实在参数求值,并把它们传送给 被 调用过程的活动记录的参数域。 ??? 2.调用者在被调用者的活动记录中存放返 回地 址和老top-sp之值。之后调用者把top-sp之 值增加到图6.12所示的位置。 ??? 3.被调用者存放寄存器值和其它状态信息。 ??? 4.被调用者初始化其局部数据并开始执行。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 返回序列,return目标代码完成的任务是: ??? 1.被调用者在自己的活动记录的返回值域中放 一个返回值。 ??? 2.利用状态域中的信息,被调用者恢复top-sp

文档评论(0)

you9391 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档