主观题:h0034. 给出过程调用时刻运行栈的布局和使用的display表。
下面是一个类PASCAL结构(嵌套过程)的程序,该语言的编译器采用栈式动态分配策略管理目标程序数据空间。
program demo;
procedure A;
procedure B;
begin
…
if d then B else A;
end;
begin
B;
end;
begin
A;
end.
若过程调用为:demo →A→B
分别给出这个时刻运行栈的布局和使用的display表。
答案:解答:此时的运行栈只有主程序demo、过程A和过程B的3个数据区,过程B嵌套定义在过程A中,要引用主程序demo全局数据、过程A的数据和其自身的局部数据,因此其display表内容有3项,即主程序数据区首址、过程A的主程序数据区首址和过程B本身的数据区首址。-------------------5分
 -------------------5分
program demo;
procedure A;
procedure B;
begin
…
if d then B else A;
end;
begin
B;
end;
begin
A;
end.
若过程调用为:demo →A→B
分别给出这个时刻运行栈的布局和使用的display表。
答案:解答:此时的运行栈只有主程序demo、过程A和过程B的3个数据区,过程B嵌套定义在过程A中,要引用主程序demo全局数据、过程A的数据和其自身的局部数据,因此其display表内容有3项,即主程序数据区首址、过程A的主程序数据区首址和过程B本身的数据区首址。-------------------5分
 -------------------5分