答案:
题 2 中当程序编译到 r 的过程体时的名字表 table 的内容为:
name
kind
level/val adr
size x
variable 0 dx y
variable 0
dx+1 p
procedure
0
过程 p 的入口(待填) 5
a
variable 1 dx q
procedure 1
过程 q 的入口 4 s
procedure 1
过程 s 的入口(待填) 5 c
variable 2 dx d
variable
2 dx r
procedure 2
过程 r 的入口 5 e
variable 3 dx f
variable 3
dx+1
注意:q 和 s 是并列的过程,所以 q 定义的变量 b 被覆盖。
第 4 题
指出栈顶指针 T,最新活动记录基地址指针 B,动态链指针 DL,静态链指针 SL 与返 回地址 RA 的用途。
答案:
栈顶指针 T,最新活动记录基地址指针 B,动态链指针 DL,静态链指针 SL 与返回地址 RA 的用途说明如下:
T: 栈顶寄存器 T 指出了当前栈中最新分配的单元(T 也是数组 S 的下标)。
B:基址寄存器,指向每个过程被调用时,在数据区 S 中给它分配的数据段起 始 地址, 也称基地址。
SL: 静态链,指向定义该过程的直接外过程(或主程序)运行时最新数据段的基地址, 用以引用非局部(包围它的过程)变量时,寻找该变量的地址。
DL: 动态链,指向调用该过程前正在运行过程的数据段基地址,用以过程执行结束释 放数据空间时,恢复调用该过程前运行栈的状态。
RA: 返回地址,记录调用该过程时目标程序的断点,即调用过程指令的下一条指令的 地址,用以过程执行结束后返回调用过程时的下一条指令继续执行。
在每个过程被调用时在栈顶分配 3 个联系单元,用以存放 SL,DL, RA。
第 5 题
PL/0 编译程序所产生的目标代码是一种假想栈式计算机的汇编语言,请说明该汇编语 言中下列指令各自的功能和所完成的操作。
(1) INT 0 A (2) OPR 0 0 (3) CAL L A
答案:
PL/0 编译程序所产生的目标代码中有 3 条非常重要的特殊指令,这 3 条指令在 code 中 的位置和功能以及所完成的操作说明如下:
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新医药卫生编译原理(第2版)课后习题答案详解 (3)全文阅读和word下载服务。
相关推荐: