文丽编译的教案.ppt.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文丽编译的教案.ppt

程序设计语言(第三版) 制作:仵文丽 学号:20031014137 信阳师范学院计算机科学系03本二班 非局部名字的访问的实现 章节名称 第九章第三节 非局部名字的访问的实现 教学目的 熟悉非局部名字访问的实现的两种方法 灵活运用静态链和显示表的概念 掌握过程递归调用时的活动记录 教学重点 绘制过程递归调用时活动记录及可访问的 display表内容 教学难点 概念的解释 过程调用时的活动记录和display表的画法 复习导入新课 强调简单栈式存储分配中C的活动记录 用一个过程的调用实例引入新的课题 教学过程与组织 嵌套过程语言的栈式实现 Pascal 语言取消了对过程的嵌套性的限制! 过程定义的“嵌套层次”(简称层数),我们始终假定主程序的层数为0,因此,主程序称为第0层过程。如过程Q是在层数为i的过程P内定义,并且P是包围Q的最小过程,那么,Q的层数就为i+1.这时,我们就P称为Q的直接外层过程,而Q称为P的内层过程。当编译程序处理过程说明时,过程的层数将作为过程名的一个重要属性登记的符号表中。计数每个过程的层次是很容易的。 下面是一个省略的PASCAL程序,其中包含了该程序里各过程的嵌套关系以及各名称说明和非局部名称的引用。 Program P; var a,x:integer; procedure Q(b:integer); var i:integer; proceure R(u:integer; Var v:integer); var c,d:integer; begin if u=1 then R(u+1,v) …… v:=(a+c)*(b-d); …… end {R} begin …… R(1,x); … end {Q} 9.5.1 非局部变量名字的实现 由于过程定义是嵌套的,一个过程可以引用包围它的任一外层过程所定义的变量或数组,也就是说,运行时,一个过程Q可能引用它的任一外层过程P的最新活动记录中的某些数据(这些数据视为过程Q的非局部量)本节讨论的两种方法: 1.通过静态链 2.通过显示表(display) 一、静态链和活动记录 概念:静态链是从一个活动的当前活动记录指向其直接外 层的最 新活动记 录,结构如右图所示: 分析:指针SP总是指向当前正在活动的过程的活动记录的 基地址。动态链总是指向调用该过程前正 在运行的 过程的最新活动记录的基地址。 二、嵌套层次显示表(display)和活动记录 概念:指针数组(提高访问非局部变量的速度),即每进 入一个过程后,在建立它的活动记录区的同时建立 一张嵌套层次 表 display。假定进入的过程的层数为i, 则它的display表 含有i+1个 单元。 过程P调用Q,Q调用R时的display表的内容: 讨论:显示表display表访问非局部量要比沿着静态链访问非局 部量的速度快,因为通过显示表的一个域可以确定任意 外层活动记录的指针,再沿着这个指针便可找到处于外 层活动记录的非局部量。 注意:0层过程的display只含一项,就是主程序开始工作时所建 立的第一 个SP值 讨论:过程P1调用P2而进入P2应如何建立起自己的display表? P2需知道它的直接外层过程(记为P0)的display,这意味着当p1调用P2时必须把P0的display表地址作为连接数据之一传给P2。 如果P2是形式参数,调用P2意味着调用P2当前相应的实用过程,此时的P0应是这个实在过程的直接外层过程。为了能在P2中获得P0的display地址,我们必须在P1调用P2时设法把P1的display地址作为连接数据之一(称为“全局displa

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档