- 0
- 0
- 约1.43万字
- 约 79页
- 2023-04-26 发布于河北
- 举报
大学,本科,专科,硕士,笔记,课件,期中试卷答案,期末试卷答案,教材答案,知识点,经济法,材料科学基础,材料力学,电路,电子技术基础,高频电子线路,宏观经济学,模拟电路基础,模拟电子技术,数字电路,数字电子技术,数字信号处理,通信原理,信号与系统,化工原理,机械设计基础,机械原理,机械制图,微机原理与接口技术,C++程序设计,JAVA技术与应用,MATLAB基础与应用,计算机网络,计算机组成原理,软件工程数据结构,工程力学,工程热力学,结构力学,力学,流体力学,水力学,工程测量,工程经济学,工程
6.显示表的存储分配 由于顺序执行程序的排他性特点,程序运行到任何一个时刻,只需一个显示表副本。为了提高访问速度,可以用一组寄存器来作为显示表的存储空间,寄存器的个数(即显示表的容量)就是程序设计语言允许过程嵌套的层次数。原理上,程序嵌套的深度是不应受到限制的,而寄存器资源是十分宝贵的,因此,也可以设立一块静态存储区作为显示表,在栈分配中,它可以被放在栈底。 显示表的另外一种存储分配是,给显示表多个副本。栈顶每生成一个新的活动记录时,从旧栈顶的活动记录中复制两个活动的公共外层的显示表部分,而把当前活动记录的访问链地址作为显示表中的最新元素。 例5.7 将图5.10中访问链改为显示表方案,则显示表建立的过程如图5.11(a)~(f)所示。读者可以根据上述方法,在活动返回的序列中将显示表和控制栈的内容从图5.11(f)恢复到图5.11(a)。 图5.11 显示表的维护 5.3.4 参数传递的实现 根据上一章的分析,我们知道参数传递的主要区别在于传递的是左值还是右值,而且无论是哪种情况,均可按下述原则处理: ① 过程定义时形参被当作局部名看待,即在活动记录中为参数分配存储单元; ② 将调用时实参的左值或者右值放入形参单元; ③ 根据传递的是左值还是右值确定过程中对形参单元的数据是间接访问还是直接访问。 此处我们仅考虑最简单的情况,即参数是简单变量,且传递的是右值(值调用)。对于4.9节中的过程调用call sum(X+Y,Z),当时生成了如下的中间代码: (k–3) param T (k–2) param Z (k–1) call 2, sum 设sum的声明为:proc sum(a,b:int),则可具体处理如下。 1.设计含有参数存储单元的活动记录 设计一个简化的活动记录,如图5.12(a)所示,其中访问链和控制链存放在连续的两个单元中,sp指向访问链的存储单元。当所处理的语言不需要访问链时,sp直接指向控制链。如果有n个参数,则相对sp寻址的前n+1个单元分配给参数,从第n+2个单元开始分配给过程中声明的变量,最后是代码生成时引进的临时变量。对于一段完整的过程来讲,所有这些内容在编译时均是可以确定的,因此,过程活动记录的长度L是可确定的。这实际上给栈式分配带来很大的方便:为新的活动记录分配存储空间就是将旧的top加上L形成新的栈顶。 图5.12 活动记录与内容的填写 (a) 简化的活动记录;(b)参数传递;(c) 调用前后活动记录的变化 2.调用序列中将实参的值放入对应的存储单元 参数传递的过程在调用者的调用序列中实现,将call 2, sum扩充为一个调用序列,其中的参数传递代码可以如下,从而得到图5.12(b)所示的sum活动记录的参数的内容。 (k–3) param T (k–2) param Z (k–1) 4[top] := 2 (k) 5[top] := –3[pc] (k+1) 6[top] := –3[pc] (k+2) ... 3.过程内部对参数访问的实现 值调用中参数传递的是右值,过程内部对参数进行直接访问,形参a和b的地址分别为:2[sp]和3[sp]。注意,此时是在sum的活动记录中,相对sp寻址,而参数传递过程是在调用者中实现,相对当时的栈顶top寻址。 例5.8 用显示表实现非本地数据的访问,考虑q(1,9)调用q(1,3)和从q(1,3)返回q(1,9)的过程,它们的调用序列和返回序列分别如表5.3所示,其中忽略了函数的返回值和机器状态的保存与恢复等。具体的活动记录和显示表内容如图5.12(c)所示,本地数据的分配均简化为一个变量占用一个存储单元。 表5.3 例5.8的调用序列和返回序列 调 用 序 列 返 回 序 列 q(1,9): 4[top] := 2 -- 参数传递 5[top] := –3[pc] 6[top] := –3[pc] 3[top] := d[2] -- 维护访问链 d[2] ????:= top+3 2[top] := sp-1 ?-- 保存控制链 1[top] := pc -- 保存返址 jmp q -- 控制转移 q(1,3): d[2] := 0[sp] -- 恢复访问链 sp := –1[sp] -- 恢复旧sp top ??:= top-L --
您可能关注的文档
- 北京体育大学《组织行为学》课件-第2章个体心理与个体行为领导理论.pptx
- 北京体育大学《组织行为学》课件-第6章组织文化.pptx
- 北京外国语大学《编译原理》课件-第1章 引言.ppt
- 北京外国语大学《编译原理》课件-第3章 80x86微处理器.ppt
- 北京外国语大学《编译原理》课件-第4章 语法制导翻译生成中间代码.ppt
- 北京外国语大学《编译原理》课件-第6章 代码生成.ppt
- 北京外国语大学《大学语文》课件-第2章现代文阅读.pptx
- 北京外国语大学《大学语文》课件-第3章科普小品写作.pptx
- 北京外国语大学《大学语文》课件-第4章公文概述.pptx
- 北京外国语大学《大学语文》课件-第5章请示批复.pptx
最近下载
- (T8联考)2025届高三部分重点中学12月第一次联考 英语试卷(含答案解析).docx
- 增材制造医疗器械.docx VIP
- 八年级下册语文第二单元知识总结.docx VIP
- 2024年安徽省公务员行测及答案详解【最新】.docx VIP
- 《林海雪原》章节精读读书笔记.pdf VIP
- 2024级“工商管理学”学术学位硕士研究生培养方案(120200).pdf VIP
- (2025春新版本)一年级下册道德与法治全册教案.pdf
- XX人民医院采购功能性电刺激(低频电子脉冲刺激仪)技术参数(2026年).docx VIP
- T/CARM 002-2023 康复医院建设标准.pdf VIP
- 《Java语言程序设计案例教程》课件第4章.ppt VIP
原创力文档

文档评论(0)