第一范文网 - 专业文章范例文档资料分享平台

编译原理课后习题答案

来源:用户分享 时间:2025/6/1 11:28:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第九章

1.过程活动记录包含哪些信息?各信息的作用?何时填写它们?

2.下面是一个调用递归函数的Pascal程序

program PP(input,output) VAR k:integer;

FUNCTION F(n:integer):integer begin

if n<=0 then F:=1 else F:=n*F(n-1); end; begin

k:=F(10); … end.

当第二次(递归地)进入F后,DISPLAY的内容是什么?当时整个运行栈的内容是什么? 3.对于下面的程序:

procedure P(X,Y,Z); begin

Y:=Y+1; Z:=Z+X; end P; begin A:=2; B:=3;

P(A+B,A,A); print A end

当参数传递的办法分别为(1)传值;(2)传地址;(3)值-结果;(4)传名时,程序执行时输出的A分别是什么?

4.应用Pascal语言的作用域规则,说明下面程序中的名字a和b的每一次出现所应用的声明。

program a(input,output);

procedure b(u,v,x,y:integer); var a:record a,b:integer end; b:reocrd b,a:integer end; begin

with a do begin a:=u;b:=v end; with b do begin a:=x;b:=y end; writeln(a.a,a.b,b.a,b.b) end; begin

b(1,2,3,4) end.

5.为下面的C程序构造一个可能的运行时环境。

int a[10];

char *a=”hello”; int f(int i,int b[]) { int j=1; A: { int i=j;

char c=b[I]; … } }

25

void g(char *s) { char c[10]; B: { int a[5]; ... } }

main() { int x=1; x=f(x,a); g(s);

return 0; }

(1)在进入函数f中的块A之后。 (2)在进入函数g中的块B之后。

6.Display表和静态链的作用是什么?试举一个程序例子,并考察其Display表和静态链的内容。

7.过程参数的传递方式有几种?简述\传地址\和\传值\的实现原理。

26

第十章 1. 2. 3. 4.

什么叫指令的执行代价? 寄存器分配的原则是什么?

在剥夺寄存器的时候,应考虑哪些因素?什么时候一个变量可以主动释放它所占 试写出程序段

IF x > 0 THEN y:=y+1 ELSE IF x < 0 THEN y:=y-1

的目标代码,其中的变量均为非形参实型变量。 5.

试写出程序段

WHILE x < y DO BEGIN y :=y + 1;

IF y > 0 THEN y :=y-x ELSE WHILE y < 0 DO y := y + x END

的目标代码,其中变量均为非形参实型变量。 6. 7. 8.

试为FOR循环语句设计目标代码。 试为REPEAT循环语句设计目标代码。 试为CASE语句设计目标代码。

用的寄存器?

27

28

搜索更多关于: 编译原理课后习题答案 的文档
编译原理课后习题答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c35rem3hwqo6i8ss1cmvz_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top