编译原理-第10章-目标程序运行时的存储组织

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《编译原理》课后习题答案第十章盛威网()专业的计算机学习网站1第10章目标程序运行时的存储组织第5题:过程参数的传递方式有几种?简述“传地址”和“传值”的实现原理。答案:参数的传递方式有下述几种:“传值”--CallbyValue。“传地址”--CallbyAddress。“换名”--CallbyName。“得结果”--Value-result。“传值”方式,这是最简单的参数传递方法。即将实参计算出它的值,然后把它传给被调过程。具体来讲是这样的:1.形式参数当作过程的局部变量处理,即在被调过程的活动记录中开辟了形参的存储空间,这些存储位置即是我们所说的实参或形式单元。2.调用过程计算实参的值,并将它们的右值(r-value)放在为形式单元开辟的空间中。3.被调用过程执行时,就像使用局部变量一样使用这些形式单元。“传地址”方式,也称作传地址,或引用调用。调用过程传给被调过程的是指针,指向实参存储位置的指针。1.如实参是一个名字或是具有左值的表达式,则左值本身传递过去。2.如实参是一个表达式,比方a+b或2,而没有左值,则表达式先求值,并存入某一位置,然后该位置的地址传递过去。3.被调过程中对形式参数的任何引用和赋值都通过传递到被调过程的指针被处理成间接访问。《编译原理》课后习题答案第十章盛威网()专业的计算机学习网站2第6题:下面的程序执行时输出的a分别是什么?若(1)参数的传递办法为“传值”。(2)参数的传递办法为“传地址”。programmain(input,output);procedurep(x,y,z);beginy=y+1;∶z=z+x;∶end;begina=2;∶b∶=3;p(a+b,a,a);printaend.答案:(1)参数的传递办法为传值时,a为2。(2)参数的传递办法为传地址,a为7。《编译原理》课后习题答案第十章盛威网()专业的计算机学习网站3附加题问题1:下面是一个Pascal程序programPP(input,output)varK:integer;functionF(N:integer):integerbeginifN=0thenF:=1elseF:=N*F(N-1);end;beginK:=F(10);...end;当第二次(递归地)进入F后,DISPLAY的内容是什么?当时整个运行栈的内容是什么?答案:《编译原理》课后习题答案第十章盛威网()专业的计算机学习网站4问题2:对如下的Pascal程序,画出程序执行到(1)和(2)点时的运行栈。programTr(input,output);vari:integer;d:integer;procedureA(k:real);varp:char;procedureB;varc:char;begin...(1)...end;{B}procedureC;vart:real;begin...(2)...end;{C}begin.....B;C;.....end;{A}begin{main}...A(d);...end.答案:程序执行到(1)点时的流程是:①主程序激活AA②激活B程序执行到(2)点时的流程是:①主程序激活AA②激活B《编译原理》课后习题答案第十章盛威网()专业的计算机学习网站5B③执行结束返回A④A激活C问题3:有如下示意的Pascal源程序programmain;vara,b,c:integer;procedureX(i,j:integer);vard,e:real;procedureY;varf,g:real;begin...end;{Y}procedureZ(k:integer);varh,i,j:real;begin...end;{Z}begin.....10:Y;.....11:Z;.....end;{X}begin.....X(a,b);.....end.{main}并已知在运行时刻,以过程为单位对程序中的变量进行动态存储分配。当运行主程序而调用过程语句X时,试分别给出以下时刻的运行栈的内容和DISPLAY的内容。(1)已开始而尚未执行完毕的标号为10的语句。(2)已开始而尚未执行完毕的标号为11的语句。《编译原理》课后习题答案第十章盛威网()专业的计算机学习网站6答案:程序结构:(1)(2)

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功