编译原理课件第六章中间代码优化.ppt

* 首先定义四个基本集合: IN[B] : 代表到达基本块 B 入口点时的各变量的所有定值点集; OUT[B]:代表到达基本块 B 出口点时的各变量的所有定值点集; GEN[B]:表示 B 中所定值的且到达 B 之后的定值点集; KILL[B]: 表示属于 B 外的定值点,而这些定值点所定值的变量在 B中又被重新定值 这几个集合满足如下方程: OUT[B]=(IN[B] - KILL(B)) ∪ GEN[B] IN[B] = OUT[p1] ∪ OUT[p2] ∪...... ∪ OUT[pk] p1 , p2...... pk 为B的前趋结点. 该方程即为到达------定值方程,求解该方程,得到IN[B] . * 2求 ud[ A] 算法如下: 若 B 中,变量 A 的引用点 u 之前有 A 的定值点 d,且到达 u ,则 ud[ A] = { d }; 否则 ud[ A] = { di | di ∈IN[B] 且 di为A的定值点}. 这样,可以求出每个变量在引用点 u 的定值状况. * 四 循环的几种基本优化 下面介绍三种循环优化: 代码外提,强度削弱,删除归纳变量. 一 代码外提 定义: 对于循

文档评论(0)

1亿VIP精品文档

相关文档