📅  最后修改于: 2020-12-06 08:07:34             🧑  作者: Mango
优化过程可以应用于基本块。在优化时,我们不需要更改由块计算的表达式集。
基本块优化有两种类型。这些如下:
基本块上的主要保留结构转换如下:
在公共子表达式中,无需一遍又一遍地对其进行计算。取而代之的是,您可以一次计算它,并在再次遇到它时将其保存在引用的位置。
a : = b + c
b : = a - d
c : = b + c
d : = a - d
在上面的表达式中,第二和第四表达式计算出相同的表达式。因此,可以按以下方式转换块:
a : = b + c
b : = a - d
c : = b + c
d : = b
可以将语句t:= b + c更改为u:= b + c,其中t是一个临时变量,u是一个新的临时变量。 t的所有实例都可以用u替换,而无需更改基本块值。
假设一个块具有以下两个相邻的语句:
t1 : = b + c
t2 : = x + y
当t1的值不影响t2的值时,这两个语句可以互换而不会影响block的值。
a:= b + c
e:= c +d +b
可能会生成以下中间代码:
a:= b + c
t:= c +d
e:= t + b