第五章运行环境.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章运行环境.ppt

第五章 运行环境 5.1 过程的动态特性 5.1.1 过程与活动 5.1.1 过程与活动(续1) 5.1.1 过程与活动(续2) 5.1.1 过程与活动(续3) 5.1.1 过程与活动(续4) 5.1.1 过程与活动(续5) 5.1.2 控制栈与活动记录 控制流与活动树的关系 控制流与活动树的关系(续) 5.1.2 控制栈与活动记录(续1) 上次课主要内容 条件转移语句的语法制导翻译 if-then、if-then-else、while-do语句的控制流与语法制导定义 一条语句的多个出口 翻译方案-拉链与回填技术的应用 过程的动态特性 过程、活动、活动的生存期 顺序执行程序的控制流 活动树与控制栈 控制栈与活动记录 5.1.3 名字的绑定 5.1.3 名字的绑定(续1) 5.1.3 名字的绑定(续2) 5.1.3 名字的绑定(续3) 5.1.3 名字的绑定(续4) 5.2 运行时数据空间的组织 5.2.1 运行时内存的划分与数据空间的存储分配策略 5.2.2 静态与动态分配简介 1 静态分配策略(续) 5.2.2 静态与动态分配简介(续1) 5.2.2 静态与动态分配简介(续2) 5.3 栈式动态分配 5.3.1 控制栈中的活动记录 5.3.1 控制栈中的活动记录(续1) 5.3.1 控制栈中的活动记录(续2) 5.3.2 调用序列与返回序列 5.3.2 调用序列与返回序列(续1) 5.3.2 调用序列与返回序列(续2) 5.3.2 调用序列与返回序列(续3) 上次课主要内容 影响存储分配策略的因素 运行时内存的划分和数据空间的分配策略 静态数据区 (静态分配策略) 动态数据区—栈数据区(栈分配策略) —堆数据区(堆分配策略) 栈式动态分配 控制栈中的活动记录 调用序列与返回序列 5.3.3 栈式分配中对非本地名字的访问 1 允许嵌套定义过程的语言 2 访问链 3 利用访问链访问非本地数据 3 利用访问链访问非本地数据(续1) 3 利用访问链访问非本地数据(续2) 4 如何在调用序列中生成访问链 4 如何在调用序列中生成访问链(续1) 4 如何在调用序列中生成访问链(续2) 5 利用显示表(display)访问非本地数据 5 利用显示表(display)访问非本地数据(续1) 5 利用显示表(display)访问非本地数据(续2) 5 利用显示表(display)访问非本地数据(续3) 6 如何生成与维护显示表及其访问链 6 如何生成与维护显示表及其访问链(续1) 6 如何生成与维护显示表及其访问链(续2) 5.4 本章小结 5.4 本章小结(续1) 5.4 本章小结(续2) 设过程p的嵌套深度是np,过程p中引用一个嵌套深度为na且na≤np的变量a。 设p和a的层次之差为x,即na+x=np,于是x= np-na。 则a的存储可以如下方式找到: 当控制在p中,p的一个活动记录肯定在栈顶。从栈顶的活动记录中追踪访问链np-na次。(np-na的值是静态作用域规则决定的,可以在编译时计算得到) ; 追踪访问链np-na次后,找到a的声明所在过程的活动记录的访问链sp(a)。 与本地变量相比,非本地变量的地址需要两个信息: (np-na,Δa) (5.1) 可存放在符号表a的条目中,用于生成存取变量a的代码。 强调: 本地变量仅需偏移量,非本地变量还需要层次差; 层次差与偏移量一样,均可以静态确定 例如:在p(1,3)中访问s中变量a: 因为:np-na=2 所以:追踪访问链2次,即可到达a所在过程的sp。 (np-na,Δa) (5.1) asp:= sp t1:= np-na L1: t1:=t1-1 if t10 goto L2 asp:=*asp goto L1 L2: … Δa[asp] 显示表形式 建立访问链的代码是过程调用序列的一部分; 假定嵌套深度为np的过程p调用嵌套深度为nx的过程x,则建立访问链分下边两种情况: ① np<nx:必有: np-nx=-1 (为什么?) 此时被调用过程x的访问链必须指向栈中刚好在它下面的调用过程p活动记录的访问链(无需追踪访问链)。 ② np≥nx:p和x有公共外层,即深度为1,2,...(nx-1)的过程。 从调用过程追踪访问链np-nx+1次,到达静态包围x和p的最接近过程的最新活动记录。所到达的访问链就是被调用过程x必须指向的访问链 综

文档评论(0)

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

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档