编泽原理 墨例如: t1:=a*a t2:=a*b t3:=2*t2 t4:=t1+t2 t5:=b*b t6:=t4+t5 第引|
编译原理 第11页 例如: t1:=a * a t2:=a * b t3:=2 * t2 t4:=t1+ t2 t5:=b * b t6:=t4+ t5
编译原理 一、基本块的划分 三地址语句序列=>基本块表 入口语句: 采用如下规则确定: (a)代码序列的第一个语句。 (b)条件或无条件转移语句的转移目标语句。 (©)紧跟在无条件转移语句或条件转移语句后 面的语句。 第12负
编译原理 第12页 一、基本块的划分 三地址语句序列=>基本块表 入口语句: 采用如下规则确定: (a)代码序列的第一个语句。 (b)条件或无条件转移语句的转移目标语句。 (c)紧跟在无条件转移语句或条件转移语句后 面的语句
编泽原理 1 算法:划分四元式程序形成基本块 输入:一个四元式语句序列。 输出:一个基本块表,其中每一条四元式语句仅在一个 块中。 方法: 1确定各个基本块的入口语句。 2对每一个入口语句。构造其所属的基本块: (1)由该入口语句到下一入口语句(不包括) (2)由该入口语句到一个转移语句(包括) (3)由该入口语句到一个停语句(包括)。 由(1)或(2)或(3)之间的语句序列组成。 3.未被纳入某一基本块中间的语句要删除。 第3列
编译原理 第13页 算法:划分四元式程序形成基本块 输入:一个四元式语句序列。 输出:一个基本块表,其中每一条四元式语句仅在一个 块中。 方法: 1.确定各个基本块的入口语句。 2.对每一个入口语句。构造其所属的基本块: (1)由该入口语句到下一入口语句(不包括) (2)由该入口语句到一个转移语句(包括) (3)由该入口语句到一个停语句(包括)。 由(1)或(2)或(3)之间的语句序列组成。 3.未被纳入某一基本块中间的语句,要删除
编泽原理 二.基本块的变换 包括: 1.删除公共子表达式 2复写传播 3.删除无用代码 4.重新命名临时变量 5.交换语句次序 6.合并已知量 第14页
编译原理 第14页 二.基本块的变换 包括: 1.删除公共子表达式 2.复写传播 3.删除无用代码 4.重新命名临时变量 5.交换语句次序 6.合并已知量
编泽原理 1.删除公共子表达式(多余运算) 公共子表达式: ①子表达式E先前已计算过。 ②且从上次计算到现在,E中的变量的值没 有改变。 优点:避免重复计算。 第5
编译原理 第15页 1.删除公共子表达式(多余运算) 公共子表达式: ①子表达式E先前已计算过。 ②且从上次计算到现在,E中的变量的值没 有改变。 优点:避免重复计算