坐标:编译原理,代码优化
1. 代码优化的种类
局部优化和全局优化。一般先局部后全局。
代码优化主要由三部分组成:控制流分析、数据流分析和变换。
2.什么是基本块和流图
基本块是进行局部代码优化的单位,其他优化则为全局优化。基本块是只能从它的第一条指令进入并从最后一条指令离开的最长的指令序列。
流图是代码优化器对代码的中间表示,在流图中边表示控制流,节点表示基本块。
3.流图中的结构——循环:具有唯一入口的强连通子图。
4.常见的代码优化,及其范围
程序的控制结构很多,如顺序执行、循环等。控制流分析的主要任务是找出循环结构,对循环进行优化。
代码优化方法 | 范围 | 备注 |
常量合并 | 基本块内,全局 | 属于无用代码删除 |
消除无用变量 | 基本块内 | 属于无用代码删除 |
代码外提 | 全局 | 与循环有关的优化 |
强度削弱(如用加减运算代替乘除运算) | 全局 | 与循环有关的优化 |
删除归纳变量 | 全局 | 与循环有关的优化 |
删除多余运算 | 基本块内 | 属于无用代码删除 |
公共子表达式删除 | 基本块内,全局 |
|
5.什么是数据流分析
数据流分析是对程序中变量的定义与引用关系的分析。
哈工大陈鄞配套版本 MOOC 第16讲 代码优化1 测验答案
1单选(1分)
优化可生成(A)的目标代码。
A.运行时间短且占用存储空间小
B.占用存储空间较小
C.运行时间短但占用内存空间大
D.运行时间较短
2单选(1分)
基本块内的优化为 ( C)。
A.强度削弱,代码外提
B.循环展开,循环合并
C.删除多余运算,删除无用赋值
D.代码外提,删除归纳变量
3单选(1分)
在程序流图中,我们称具有下述性质(B)的结点序列为一个循环。
A.它们是非连通的且只有一个入口结点
B.它们是强连通的且只有一个入口结点
C.它们是非连通的但有多个入口结点
D.它们是强连通的但有多个入口结点
4判断(1分)
中间代码的优化依赖于具体的计算机。
错
5判断(1分)
一个程序可用一个流图来表示。
对
6判断(1分)
优化工作只能在中间代码这一层次上进行。
错