- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理阶段练习四
编译原理练习四
填空题
1.编译过程中,常见的中间语言形式有四元式 、 三元式 、 逆波兰表示和
树形表示。
2、表达式x+y?zVa0Λ(8+z)3的逆波兰表示为 xy+z?a08z+3ΛV 。
3、在编译程序中安排中间代码生成的目的是 便于代码优化 和 便于目标程序的移植 。
4、根据所涉及程序的范围,优化可分为局部优化、循环优化 和全局优化三种。
5、编译程序进行数据流分析的目的是为了进行全局优化。
6.局部优化是局限与一个 基本块 范围内的一种优化。
7.基本块内可进行的优化有:删除公共子表达式 、删除无用代码 、合并已知常量等。
8.从词法分析器到中间代码生成与被编译的源代码有关,称之为编译器的 前端,
而目标代码生成主要与目标机有关,称之为编译器的 后端 。
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.在编译程序中安排中间代码生成的目的是 b d 。
便于进行存储空间的组织
有利于目标代码的优化
有利于编译程序的移植
有利于目标代码的移植
有利于提高目标代码的质量
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. 不一定必要的
6.逆波兰表达式ab+cd+*所代表的中缀形式的表达式是 b 。
a.a+b+c*d b. (a+b)*(c+d)
c. (a+b)*c+d d. a+b*c+d
7.目标代码生成应着重考虑的问题是 a d
每个语法成分的语义
目标程序运行所占用的空间
目标程序运行速度
目标代码中需要哪些信息,怎样截取这些信息
如何使生成的目标代码尽可能简短
8.代码优化的主要目标是 a b c 。
如何提高目标程序的运行速度
如何减少目标程序运行所需的空间
如何协调a和b
如何使生成的目标代码尽可能的简短
9.编译程序在优化时 b 用到源程序中的注释
a.可能要 b.不可能
10.在编译程序采用的优化方法中, c d e 是在循环语句范围内进行的。
合并已知常量
删除多余运算
删除归纳变量
强度消弱
代码外提
11.程序基本块是指 d 。
一个子程序
一个仅有一个入口和一个出口的语句
一个没有嵌套的程序段
一组顺序执行的程序段,仅有一个入口和一个出口
12.合并表达式中的常量运算的目的是 c 。
合并常量,使表达式中的常量尽可能少
合并常量,是表达式尽可能简短
将可在编译时刻计算的常量运算在编译时刻计算出来,然后用所计算出来的值替换表达式中出现的所以这种常量运算,使得生成的代码指令尽可能少
13.下面的程序段可以进行哪些优化c d e
i:=1
j:=10
read k
1: x:=x*i
y:=j*i
z:=x*y
write j
i:=i+1
if i100 goto 1
halt
a.合并已知常量 b.删除多余运算
c.删除归纳变量 d.强度消弱 e.代码外提
为什么要使用中间语言形式?
解答:使用中间语言形式有如下好处:
中间语言与具体机器无关,把与机器特性紧密相关的内容尽可能放到后端,有利于重定目标,一种中间语言可以为生成多种不同型号目标机上的目标代码服务
可以对中间语言进行与机器无关的优化,有利于提高目标代码的质量
使各阶段的开发复杂性降低,有利于编译程序的开发
四、设有表达式A*(B*C-A) ? B+C*D
(1)写出逆波兰式中间代码
写出三元式中间代码
写出多元式中间代码
画出树
解答:逆波兰表示:ABC*A-*BCD*+?
三元式表示:(1)* B C
(2)-(1) A
(3)* A (2)
您可能关注的文档
最近下载
- 第4.3节-协方差与相关系数——概率论与数理统计李长青版.ppt VIP
- OTIS奥的斯XIOTIS西子奥的斯GECS服务器使用手册.pdf
- 土方工程监理实施细则范本.doc
- 数据新闻可视化PPT.pptx VIP
- 第11课 辽宋夏金元的经济、社会与文化 课件-高一上学期统编版(2019)必修中外历史纲要上(2).pptx
- 2024年人教版七年级上册生物第一单元生物和细胞第三章从细胞到生物体第四节单细胞生物.pptx VIP
- 刺络放血拔罐治疗偏头痛应用指南.pptx
- 介绍小米总裁雷军.pptx VIP
- 气管切开患者的气道护理.pptx
- Siemens 西门子家电 洗衣机 WB45UM210W 产品功能表.pdf
文档评论(0)