第十章复习题
单选
-
局部优化是在(B)范围内进行的优化?
A 过程体
B 基本块
C 函数体
D 循环体 -
有关基本归纳变量的作用,错误的是(D)。
A 自身定值
B 计算其它同族归纳变量
C 控制循环
D 记录循环的结果 -
在循环内可以实行的优化有(D)。
A 代码外提
B 删除归纳变量
C 强度削弱
D 以上都有 -
利用DAG进行局部优化,不能实现(C)。
A 删除公共子表达式
B 删除无用赋值
C 代码外提
D 合并已知量 -
对于基本快内Out集合由In集合计算出来,而对于基本块之间,In集合由前驱基本块的Out集合计算出来。这样的数据流问题属于(A)。
A 向前流问题
B 向后流问题
C 任意路径问题
D 全路径问题
判断
-
优化应该不计一切代价追求高效的程序。错误
-
对于所有相同的表达式,仅保留一个,删除其余,称作删除公共子表达式。错误
-
只要在循环中不会发生变化的运算,都是可以进行代码外提的。错误
-
合并已知量是将编译时可以计算出的值计算出来,不必等到运行时再计算。正确
-
强度削弱是指把程序中执行时间较长的运算替换为执行时间较短的运算。正确
-
删除公共子表达式是一种局部优化,仅在基本块内可采用此方法。错误
-
DAG是有向无环图,利用DAG可实现局部优化。正确
-
分析表达式的可用性,可用来进行全局公共子表达式的优化。正确
-
一个变量若在某基本块出口处是活跃的,则其在该基本块入口处也必定是活跃的。错误
-
交换语句顺序并没有减少语句的数量,所以不是一种优化方法。错误