编译原理阶段练习四.doc_第1页
编译原理阶段练习四.doc_第2页
编译原理阶段练习四.doc_第3页
编译原理阶段练习四.doc_第4页
编译原理阶段练习四.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理练习四一、 填空题1编译过程中,常见的中间语言形式有四元式 、 三元式 、 逆波兰表示和 树形表示。2、表达式x+yzVa0(8+z)3的逆波兰表示为 xy+za08z+3V 。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 。a. 便于进行存储空间的组织b. 有利于目标代码的优化c. 有利于编译程序的移植d. 有利于目标代码的移植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. 不一定必要的6逆波兰表达式ab+cd+*所代表的中缀形式的表达式是 b 。a.a+b+c*db. (a+b)*(c+d)c. (a+b)*c+dd. a+b*c+d7.目标代码生成应着重考虑的问题是 a d a. 每个语法成分的语义b. 目标程序运行所占用的空间c. 目标程序运行速度d. 目标代码中需要哪些信息,怎样截取这些信息e. 如何使生成的目标代码尽可能简短8代码优化的主要目标是 a b c 。a. 如何提高目标程序的运行速度b. 如何减少目标程序运行所需的空间c. 如何协调a和bd. 如何使生成的目标代码尽可能的简短9编译程序在优化时 b 用到源程序中的注释a.可能要b.不可能10在编译程序采用的优化方法中, c d e 是在循环语句范围内进行的。a. 合并已知常量b. 删除多余运算c. 删除归纳变量d. 强度消弱e. 代码外提11程序基本块是指 d 。a. 一个子程序b. 一个仅有一个入口和一个出口的语句c. 一个没有嵌套的程序段d. 一组顺序执行的程序段,仅有一个入口和一个出口12合并表达式中的常量运算的目的是 c 。a. 合并常量,使表达式中的常量尽可能少b. 合并常量,是表达式尽可能简短c. 将可在编译时刻计算的常量运算在编译时刻计算出来,然后用所计算出来的值替换表达式中出现的所以这种常量运算,使得生成的代码指令尽可能少13下面的程序段可以进行哪些优化c d e i:=1j:=10read k1:x:=x*iy:=j*iz:=x*ywrite ji:=i+1if i0 then x:=0 else x:=1(2) while x0 do x:=x-1(3) if x0 then if x0 do while y0 do begin y:=y-x; x:=x-1 end解答: (1) x 0 t1 FJ 5 t1 / := 0 / x RJ 6 / / := 1 / x (2) x 0 t1 FJ 6 t1 / - x 1 t2 := t2 / x RJ 1 / / (3)(4)略六、给出从多元式划分基本块的方法解答:基本块划分算法:1)求出多元式程序中各个基本块的入口语句:(1)程序的第一个句句;或者(2)能由条件转移语句或无条件转移语句转移到达的语句;或者,(3)仅跟在条件转移语句后面的语句。2)对以上求出的每一入口语句,构造其所属的基本块。3)凡未被纳入某一基本块中的语句,都是程序中控制流程无法到达的语句,从而也是不会被执行的语句,可把他们删除。七、给出程序流图(以基本块为结点)的一种表示方法。解答:参考书P328八、设有语句序列i:=2;j:=i*(i+1);k:=2*(i+j)试写出优化前和优化后的多元式代码。其中变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论