编译原理阶段练习四

编译原理阶段练习四

ID:9096005

大小:49.00 KB

页数:5页

时间:2018-04-17

编译原理阶段练习四_第1页
编译原理阶段练习四_第2页
编译原理阶段练习四_第3页
编译原理阶段练习四_第4页
编译原理阶段练习四_第5页
资源描述:

《编译原理阶段练习四》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、编译原理练习四一、填空题1.编译过程中,常见的中间语言形式有四元式、三元式、逆波兰表示和树形表示。2、表达式x+y£zVa>0Λ(8+z)>3的逆波兰表示为xy+z£a0>8z+3>ΛV。3、在编译程序中安排中间代码生成的目的是便于代码优化和便于目标程序的移植。4、根据所涉及程序的范围,优化可分为局部优化、循环优化和全局优化三种。5、编译程序进行数据流分析的目的是为了进行全局优化。6.局部优化是局限与一个基本块范围内的一种优化。7.基本块内可进行的优化有:删除公共子表达式、删除无用代码、合并已知常量等。8.从词法分析器到

2、中间代码生成与被编译的源代码有关,称之为编译器的前端,而目标代码生成主要与目标机有关,称之为编译器的后端。9.编译器通常按需要把寄存器分为三组使用:可分配寄存器、保留寄存器和零用寄存器。10.释放寄存器的总的原则是释放代价最小的寄存器。二、选择题1.表达式-a+b*(-c+d)的逆波兰式是d。a.ab+-cd+-*b.a-b+c-d+*c.a-bc+-d+*d.a-bc-d+*+2.在编译程序中安排中间代码生成的目的是bd。a.便于进行存储空间的组织b.有利于目标代码的优化c.有利于编译程序的移植d.有利于目标代码的移植

3、e.有利于提高目标代码的质量3.-a-(b*c/(c-d)+(-b)*a)的逆波兰表示是c。a.abc*cd-b-a*+/--b.a-bc*cd-b-a*+/-c.a-bc*cd-/b-a*+-d.a-bc*/cd-b-a*+-4.赋值语句X:=-(a+b)/(c-d)-(a+b*c)的逆波兰表示是c。a.Xab+cd-/-bc*a+-:=b.Xab+/cd-bc*a+--:=c.Xab+-cd-/abc*+-:=d.Xab+cd-/abc*+--:=5.对任何一个编译程序来说,产生中间代码是b.a.不可缺少的b.不一定

4、必要的6.逆波兰表达式ab+cd+*所代表的中缀形式的表达式是b。a.a+b+c*db.(a+b)*(c+d)c.(a+b)*c+dd.a+b*c+d7.目标代码生成应着重考虑的问题是ada.每个语法成分的语义b.目标程序运行所占用的空间c.目标程序运行速度d.目标代码中需要哪些信息,怎样截取这些信息e.如何使生成的目标代码尽可能简短8.代码优化的主要目标是abc。a.如何提高目标程序的运行速度b.如何减少目标程序运行所需的空间c.如何协调a和bd.如何使生成的目标代码尽可能的简短9.编译程序在优化时b用到源程序中的注释

5、a.可能要b.不可能10.在编译程序采用的优化方法中,cde是在循环语句范围内进行的。a.合并已知常量b.删除多余运算c.删除归纳变量d.强度消弱e.代码外提11.程序基本块是指d。a.一个子程序b.一个仅有一个入口和一个出口的语句c.一个没有嵌套的程序段d.一组顺序执行的程序段,仅有一个入口和一个出口12.合并表达式中的常量运算的目的是c。a.合并常量,使表达式中的常量尽可能少b.合并常量,是表达式尽可能简短c.将可在编译时刻计算的常量运算在编译时刻计算出来,然后用所计算出来的值替换表达式中出现的所以这种常量运算,使得

6、生成的代码指令尽可能少13.下面的程序段可以进行哪些优化cdei:=1j:=10readk1:x:=x*iy:=j*iz:=x*ywriteji:=i+1ifi<100goto1halta.合并已知常量b.删除多余运算c.删除归纳变量d.强度消弱e.代码外提一、为什么要使用中间语言形式?解答:使用中间语言形式有如下好处:i.中间语言与具体机器无关,把与机器特性紧密相关的内容尽可能放到后端,有利于重定目标,一种中间语言可以为生成多种不同型号目标机上的目标代码服务ii.可以对中间语言进行与机器无关的优化,有利于提高目标代码的

7、质量iii.使各阶段的开发复杂性降低,有利于编译程序的开发四、设有表达式A*(B*C-A)£B+C*D(1)写出逆波兰式中间代码(2)写出三元式中间代码(3)写出多元式中间代码(4)画出树解答:逆波兰表示:ABC*A-*BCD*+£三元式表示:(1)*BC(2)-(1)A(3)*A(2)(4)*CD(5)+B(4)(6)£(3)(5)多元式表示:(1)*BCT1(2)-T1AT2(3)*AT2T3(4)*CDT4(5)+BT4T5(6)£T3T5T6树表示:£+**B-ADCA*BC五、试写出下列语句的四元式中间代码(1

8、)ifx>0thenx:=0elsex:=1(2)whilex>0dox:=x-1(3)ifx>0thenifx<0thenx:=x+1elsex:=1elsex:=1(4)whilex>0dowhiley>0dobeginy:=y-x;x:=x-1end解答:(1)>x0t1FJ5t1/:=0/xRJ6//:=1/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。