编译原理机测客观题(7)优化和代码生成练习题

第十章优化和代码生成练习题

优化

知识点:

循环优化包括:代码外提、强度削弱、删除归纳变量、循环展开、循环合并

局部优化(基本块内优化):常量传播、常量折叠、公共子表达式消除、代数化简

全局优化(跨基本块优化):全局公共子表达式消除、复制传播、死代码消除、函数内联

一、单项选择题

1、优化可生成( )的目标代码。

A 运行时间较短 B.占用存储空间较小

C运行时间短但占用内存空间大 D.运行时间短且占用存储空间小

2、下列( )优化方法不是针对循优化进行的。

A.强度削弱 B.删除归纳变量 C.删除多余运算 D.代码外提

3、基本块内的优化为( )。

A.代码外提,删除归纳变量 B.删除多余运算,删除无用赋值

C.强度削弱,代码外提 D.循环展开,循环合并

4、关于必经结点的二元关系,下列叙述中不正确的是( )。

A满足自反性 B满足传递性 C满足反对称性 D满足对称性

5、对一个基本块来说,( )是正确的。

A 只有一个入口语句和一个出口语句

B 有一个入口语句和多个出口语句

C 有多个入口语句和一个出口语句

D有多个入口语句和多个出口语句

6、在程序流图中,我们称具有下述性质( )的结点序列为一个循环。

A它们是非连通的且只有一个入口结点

B它们是强连通的但有多个入口结点

C它们是非连通的但有多个入口结点

D它们是强连通的且只有一个入口结点

7、( )不可能是目标代码。

A汇编指令代码 B可重定位指令代码 C绝对指令代码 D中间代码

8、 经编译得到的目标程序是( )。

A. 机器语言程序或汇编语言程序

B. 四元式序列

C. 三元式序列

D. 二元式序列

9、在目标代码生成阶段,符号表用于( )。

A. 目标代码生成

B. 语义检查

C. 语法检查

D. 地址分配

10、所有编译程序都有目标代码生成阶段。( )

A.

B. 错

11、代码生成器的设计要着重考虑目标代码的质量问题。( )

A.

B. 错

12、目标代码生成时,无需考虑目标计算机的系统结构。( )

A. 对

B.

二、多项选择题

1、根据优化所涉及的范围,可将优化分为。

a.局部优化 b.过程优化 c.全局优化

d.循环优化 e.四元式优化

2、下列优化中,属于循环优化的有。

a.强度削弱 b.合并已知量 c.删除无用赋值

d.删除归纳变量 e.代码外提

3、如果a→b是程序流图中的一条边,则由这条回边构成的循环由结点组成。

a.a b.b c.有通路到达b的结点

d.有通路到达a且该通路上不经过b的结点

e.有通路到达b且该通路上不经过a的结点

4、采用无环有向图(DAG),可以实现的优化有。

a.合并已知量 b.删除公共子表达式 c.强度削弱

d.删除无用赋值 e.删除归纳变量

5、编译程序的输出结果可以是。

a.目标代码 b.汇编语言代码 c.中间代码

d.优化后的中间代码 e.可重定位代码

三、填空题

1、局部优化是++++一个基本块内++++ 范围内进行的一种优化。

2、在一个基本块内,可实行3种优化方法,即合并已知量、++++删除公共子表达式++++、

++++删除无用赋值++++ 。

3、优化就是对程序进行各种++++等价++++ 变换,使之能生成更有效的++++目标代码++++。

4、在优化中,可把循环中的++++循环不变量++++ 提到循环外面去,这种方法称为++++代码外提++++ 。

单选解答

1、优化的目的是使目标程序运行时间短、占用存储空间小,故选d。

2、删除多余运算属基本块优化,故选 c

3、基本块优化包括:合并已知量、删除无用赋值及删除多余运算,故选 b

4、必经结点满足自反性、传递性和反对称性关系,故选 d

5、选 a

6、选 d

7、选 d

多选解答

1、选 a c d

2、循环优化包括:代码外提、强度削弱、删除归纳变量、循环展开和循环合并,故选 a b e

3、如果 a b 是回边,则该回边的构成的循环由结点 a b 和能够到达 a 但通路不经过 b 的结点组成;故选 a b d

4、DAG图可进行基本块范围内的优化,故选 a b d

5、选 b c d e

、简述常用的优化技术有哪些?

|--------|---------------|
| 序号 | 优化 技术 |
| 1 | |
| | |
| | |
| | |
| | |
| | |
| | |

基本块

T1:=2

T2:=10/T1

T3:=S-R

T4:=S+R

A:=T2*T4

B:=A

T5:=S+R

T6:=T5*T3

B:=T6

(1)画出DAG图

(2)重建代码

|----|------|
| 序号 | 中间代码 |
| 1 | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |

(3)假设基本块出口时只有A和B还被引用,请写出优化后的三地址代码序列。

|----|------|
| 序号 | 中间代码 |
| 1 | |
| | |
| | |
| | |

(4)假设有两个寄存器R0和R1可用,请给出(3)中三地址代码生成的目标代码序列,并给出寄存器描述和地址描述。

|----|------|------|-------|------|
| 序号 | 中间代码 | 目标代码 | 寄存器描述 | 地址描述 |
| 1 | | | | |
| | | | | |
| | | | | |
| | | | | |

相关推荐
玛卡巴卡ldf5 小时前
【LeetCode 手撕算法】(细节知识点总结)
java·数据结构·算法·leetcode·力扣
wanzehongsheng5 小时前
零碳产业园光伏园区光伏电站追踪对比固定:发电增益技术边界分析
算法·光伏发电·光伏·零碳园区·太阳能追光·低碳环保·追踪电站
KobeSacre6 小时前
CyclicBarrier 源码
java·jvm·算法
手写码匠6 小时前
注意力机制全家桶:从 Multi-Head 到 GQA 再到 Flash Attention 的手写实现
人工智能·深度学习·算法·aigc
学究天人6 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷3.2)
线性代数·算法·机器学习·数学建模·动态规划·抽象代数·拓扑学
Yang_jie_037 小时前
笔记:数据结构(链队列的相关判断条件)
数据结构·笔记
tkevinjd7 小时前
力扣322-零钱兑换
算法·leetcode·动态规划
大鱼>7 小时前
AI+资产监控:农业设施智能监控系统
人工智能·深度学习·算法·机器学习
AI科技星7 小时前
乖乖数学·全域超复数统一场论:五大核心门槛与全套标准定量数据
人工智能·python·算法·金融·全域数学
Frostnova丶7 小时前
(13)LeetCode 53. 最大子数组和
算法·leetcode·职场和发展