第八篇 目标程序运行时的存储组织1.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文档。上传文档
查看更多
1 1 当过程P1调用过程P2而进入P2后,P2应如何建立起自己的  display? 当P1调用P2时必须把P0的display地址作为连接数据之一传  给P2 如果P2是一个真实过程,那么P0或者就是P1自身或者既是  P1又是P2的直接外层(图8.18的(a)(b)两种情形),不  论哪一种情形,只要在进入P2后能够知道P1的display就  能知道P0的display,从而可直接构造出P2的display。也  就是说,在这种情况下,只需所P1的display地址作为连  接数据之一传送给P2就能够建立P2的display 如果P2是形式参数,那么调用P2意味着调用P2当前相应的  实在过程 此时的P0应是这个实在过程的直接外层过程 假定P0的display地址可从形式单元P2所指示的地方获得 为了能在P2中获得P0的display地址,必须在P1调用P2时设  法把P1的display地址作为连接数据之一传送给P2 于是连接数据变为三项: (1)老SP值; (2)返回地址; (3)全局display地址 这样,整个活动记录的组织就如图8.17所示 例: 有如下示意的Pascal源程序   program main;    var a,b,c:integer;    procedure X(i,j:integer);     var d,e:real;     procedure Y;       var f,g:real;       begin       ...       end;{Y}     procedure Z(k:integer);       var h,i,j:real;       begin       ...       end;{Z}     begin       .....       10:Y;       .....       11:Z;       .....     end;{X}    begin     .....     X(a,b);     .....    end.{main} 并已知在运行时刻,以过程为单位对程序中的变量进行动态存储分配。当运行主程序而调用过程语句X时,试分别给出以下时刻的运行栈的内容和DISPLAY的内容。 (1)已开始而尚未执行完毕的标号为10的语句。 (2)已开始而尚未执行完毕的标号为11的语句。 老SP 返回地址 全局display 形参个数 形式单元 display 简单变量 内情向量 临时变量 0 返回地址 0 a b c 0 返回地址 2 2 i j 0 6 d e 6 返回地址 12 0 0 6 16 f g 解:(1)程序已开始而尚未执行完毕标号为10的语句时,运行栈的内容和Display表的内容如下图所示 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 全局display 全局display 全局display display display TOP→ SP2→ SP1→ SP0→ (2)程序已开始而尚未执行完毕标号为11的语句时,运行栈的内容和Display表的内容如下图所示 0 返回地址 0 a b c 0 返回地址 2 2 i j 0 6 d e 6 返回地址 12 1 k 0 6 16 h i j 全局display display display 全局display 全局display 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 TOP→ SP2→ SP1→ SP0→ 三.分程序结构的存储管理(自习) 一个分程序是一个含有它自己的局部数据(变量)声明  的语句 在C语言中,一个分程序的语法形式是:{ 声明 语句} 例如图8.19的C程序中的分程序B0,B1,B2和B3,分程  序的特征是它们的嵌套结构,使用界符标明分程序的开  始和结束,C语言用{ } 分程序结构可以用栈式存储分配实现 一种办法是把分程序看成一个“无参过程”,只不过是在  该分程序入口处调用,分程序出口处返回。分程序在哪  里定义就在哪里被调用 另一种办法是每次为一个完整的过程体分配存储,即把  一个过程体中的所有分程序所需的存储一次分配好,如  图8.19的C程序,可以为这里所有声明的名字分配一块存  储,如图8.20所示: ALGOL的结构特点是除了允许过程嵌套定义还含有分程  序的结构,如图8.21的一个ALGOL过程: 如采用将分程序看成“无参过程”,则效率很低,因为: 第一,分程序不存在被调用的问题,不必要在进入一个  分程序

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档