第七章代码优化与目标代码生成
典型例题 :
单项选择题
7.1.1. 优化可生成_的目标代码。(陕西省 2000 年自考题)
a. 运行时间较短
放手放开所有
b. 占用存储空间较小
c. 运行时间短但占用内存空间大
d. 运行时间短且占用存储空间小
7.1.2 .下列—优化方法不是针对循环优化进行的。
a. 强度削弱
b. 删除归纳变量
c. 删除多余运算
d. 代码外提
7.1.3. 基本块内的优化为_。(陕西省 1998 年自考题)
a. 代码外提,删除归纳变量
b. 删除多余运算,删除无用赋值
c. 强度削弱,代码外提
d. 循环展开,循环合并情绪的种类
7.1.4. 关于必经结点的二元关系,下列叙述中不正确的是 __ 。
a. 满足自反性
b. 满足传递性
c. 满足反对称性
d. 满足对称性
7.1.5. 对一个基本块来说,_是正确的。(陕西省 2000 年自考题)
a. 只有一个入口语句和一个出口语句
b. 有一个入口语句和多个出口语句
c. 有多个入口语句和一个出口语句
d. 有多个入口语句和多个出口语句
7.1.6. 在程序流图中,我们称具有下述性质_的结点序列为一个循环。
a. 它们是非连通的且只有一个入自结点
b. 它们是强连通的但有多个入口结点
c. 它们是非连通的但有多个入口结点
d. 它们是强连通的且只有一个入口结点
中老年补钙吃什么钙片好
7.1.7. _不可能是目标代码。(陕西省 1997 年自考题)
a. 汇编指令代码
b. 可重定位指令代码
c. 绝对指令代码
d. 中间代码
7.1.8 ._属于局部优化。
a. 代码外提
b. 删除多余运算。
c. 强度削弱
d. 删除归纳变量
7.1.9. 下面_不能作为一个基本块的入口。
a. 程序的第一个语句
b. 条件语句转移到的语句
c. 无条件语句之后的下一条语句
d. 无条件语句转移到的语句
坐下用英语怎么说7.1.10 .下列—优化方法是针对循环优化进行的。
a. 复写传播
b. 删除归纳变量
c. 删除无用赋值
d. 合并已知量
何首乌泡酒7.1.11. 属于基本块的优化为_。(陕西省 1997 年自考题)
a. 删除无用赋值
b. 删除归纳变量
c. 强度削弱
d. 代码外提
7.1.12. 经过编译所得到的目标程序是—。
a. 二元式序列
b. 四元式序列
c. 间接三元式
d. 机器语言程序或汇编语言程序
7.1.13. 一个控制流程图就是具有_的有向图。
a. 唯一入口结点
b. 唯一出口结点
c. 唯一首结点
d. 唯一尾结点
多项选择题:
7.2.1 .根据优化所涉及的范围,可将优化分为_。
a. 局部优化
b. 过程优化。 C. 全局优化
d. 循环优化
e. 四元式优化
卢德铭
7.2.2. 下列优化中,属于循环优化的有_。(陕西省 1997 年自考题)
a. 强度削弱
b. 合并己知量
c. 删除无用赋值
d. 删除归纳变量
e. 代码外提
7.2.3. 如果 a → b 是程序流图中的一条边,则由这条回边构成的循环由_结点组成。(陕西省 1999 年自考题)
a. a
b. b
c. 有通路到达 b 的结点
d. 有通路到达 a 且该通路上不经过 b 的结点
e. 有通路到达 b 且该通路上不经过 a 的结点
7.2.4. a, b, c 是程序流图中的三个结点,_是正确的。(陕西省 1998 年自考题)
a. a DOM b, b DOM c 则 a DOM c
你在终点等我歌词b. a DOM a
c. a DOM b 则 b DOM a
d. a DOM b, b DOM a 则 a=b
e. a DOM b. a DOM c 则 b=c
7.2.5. 采用无环有向图 (DAG), 可以实现的优化有_。(陕西省 2000 年自考题)
a. 合并已知量
b. 删除公共子表达式
c. 强度削弱
d. 删除无用赋值
e. 删除归纳变量
7.2.6 .如果 A 离开循环 L 后仍然活跃,则对不变运算 S : A:=B op C 来说,必须满足下面的几个条件方可将不变运算 S 提到循环外。
a. A 在 L 中已经定值
b. A 在 L 中其他地方未再定值
c. S 所在结点是 L 的所有出口结点的必经结点
d . S 所在结点不是 L 的所有出口结点的必经结点
e. L 中所有 A 的引用点只有 S 中 A 的定值才能到达
7.2.7. 编译程序的输出结果可以是_。
a. 目标代码
b. 汇编语言代码
c. 中间代码
d. 优化后的中间代码
e. 可重定位代码
樋口一叶7.2.8 .通过 DAG 图可实现—优化。
a. 合并已知量
b. 变换循环控制条件
c. 删除多余运算
d. 复写传播
e. 删除无用赋值
7.2.9 .局部优化包括_。
a. 删除归纳变量
b. 删除多余运算。
c. 合并已知量
d. 代码外提
e. 删除无用赋值
7.2.10. 关于流图()的结论是正确的。
a: 2 → 3 是回边 b. 3 → 2 是回边 c. 2 → 3 , 3 → 2 都是回边
d. 2 → 3 不是回边
e. 3 → 2 不是回边
7.2.11. 通常的无用赋值有_。
a. 对某变量 A 赋值后,在该 A 值被引用前又对 A 重新赋值
b. 对某变量 A 赋值后,在该 A 值被引用后又对 A 重新赋值
c. 对某变量 A 赋值后,该 A 值在程序中不被引用
d. 对某变量 A 赋值后,该 A 值在程序中多次引用
e. 对某变量 A 进行递归赋值,且该 A 值在程序中仅在递归运算中被引用
7.2.12. 基本块的入口语句是_。
a. 程序的第一个语句
b. 紧跟在无条件语句后面的语句
c. 紧跟在条件转移语句后面的语句
d. 能由条件转移语句转移到的语句
e. 能由无条件转移语句转移到的语句
填空题:
7.3.1 .局部优化是在_范围内进行的一种优化。
7.3.2. 若 ___ ,则称 ni 是 nj 的必经结点,必经结点具有 ___ 性、 ___ 性、 __ _性。
7.3.3. 在一个基本块内,可实行 3 种优化方法,即合并己知量、_、_。(陕西省 1999 年自考题)7.3.4 .优化就是对程序进行各种_变换,使之能生成更有效的_。
(陕西省 1997 年自考题)
7.3.5. 在优化中,可把循环中的_提到循环外面去,这种方法称为_。
( 陕西省 2000 年自考题)
7.3.6 .根据优化所涉及的范围,可将优化分为
7.3.7. 常见的循环优化包括 ____ 、 ___ 、 _____ 、 ____ 和 ____ 。
7.3.8. 一个基本归纳变量是一 ___ 。(陕西省 1998 年自考题)
7.3.9. 把循环中的乘法运算化为加法,以_运算速度的方法称为_。
(陕西省 1998 年自考题)
7.3.10. 在程序流图中,循环是具有唯一_结点的_。(陕西省 1997 年自考题)
判断题:
7.4.1 .进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。 ( ) 7.4.2. 四元式的入口语句就是程序的第一条语句。()
7.4.3. 强度削弱是局部优化的一种方法。(陕西省 1998 年自考题)()
7.4..4. 变量 A 在某点 d 的定值到达 v 点,是指程序流图中从 d 有一条通路到达 v, 且该通路上没有
A 的其他定值点。(陕西省 2000 年自考题)()
7.4.5 .一个流图称为可归约的,当且仅当流图中除去回边外,其余的边构成一个无环路流图。()
7.4.6. 对中间代码的优化依赖于具体的计算机。()
7.4.7 .对某变量 A 赋值后,在该 A 值被引用前又对 A 重新赋值,则可删除原来对 A 的赋值。 ( ) 7.4.8 .循环中的不变运算均可提到循环外。()
7.4.9. 代码优化应以等价变换为基础,既不改变程序的运行结果,又能使生成的目标代码更有效。()7.4.10 .循环中无用赋值在循环优化时均可删除。()
7.4.11. 一个程序可用一个流图来表示。()
7.4.12. 为了找出程序中的循环,就需要对程序中的控制流程进行分析。()
综合题
7.5.1. 何谓局部优化、循环优化和全局优化?优化工作在编译的哪个阶段进行?
7.5.2. 将下面程序划分为基本块并作出其程序流图。
read(A,B)
F := 1
C:=A*A
D:=B*B
If C<D goto L 1
E:=A*A
F:=F+l