主观题:h0039. 请分别给出以下代码经过优化后的代码
基本块的 DAG 如下图所示,

若(1)B在该基本块出口处不活跃,(2)B 在该基本块出口处
活跃的,请分别给出以下代码经过优化后的代码。
答案:解答:
①当 B 在出口不活跃时,则 B 在外面就无用了,故 B:=A-D 这条赋值语句可删去,另外,
由于代码生成方面的关系,可把 D 的赋值语句提前到 C 的赋值语句以前。 ---------5分
故得到:
A:=B+C
D:=A-D
C:=D+C
②当 B 在出口活跃时,则 B 在出口处要引用,B 的赋值语句就不可删去了,然而 D 与 B 充
全一样,故 D 的赋值语句可简化,得: ---------5分
A:=B+C
B:=A-D
D:=B
C:=B+C

若(1)B在该基本块出口处不活跃,(2)B 在该基本块出口处
活跃的,请分别给出以下代码经过优化后的代码。
答案:解答:
①当 B 在出口不活跃时,则 B 在外面就无用了,故 B:=A-D 这条赋值语句可删去,另外,
由于代码生成方面的关系,可把 D 的赋值语句提前到 C 的赋值语句以前。 ---------5分
故得到:
A:=B+C
D:=A-D
C:=D+C
②当 B 在出口活跃时,则 B 在出口处要引用,B 的赋值语句就不可删去了,然而 D 与 B 充
全一样,故 D 的赋值语句可简化,得: ---------5分
A:=B+C
B:=A-D
D:=B
C:=B+C