[第五章运行环境.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)。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 与本地变量相比,非本地变量的地址需要两个信息: (np-na,Δa) (5.1) 可存放在符号表a的条目中,用于生成存取变量a的代码。 强调: 本地变量仅需偏移量,非本地变量还需要层次差; 层次差与偏移量一样,均可以静态确定 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例如:在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] 显示表形式 Evaluation only. Created with Aspose.Slides for .
显示全部