为表达式 q + r/3 + s – t * 5 + u * v/w 创建静态单赋值形式的三地址代码所需的最少临时变量数为
(一) 4
(乙) 8
(三) 7
(四) 9答案:(乙)
解释:
正确答案是8。这道题是考试中的填空题。
三地址代码是编译器在优化代码时生成的中间代码。每条三地址代码指令最多可以有三个操作数(常量和变量)以及一个赋值和一个二元运算符。三地址码中需要注意的一点是,赋值左侧(LHS)使用的变量不能在LHS侧再次重复。静态单分配(SSA)只不过是对三个地址代码的改进。
所以,在这个问题中,我们有
t1 = r / 3;
t2 = t * 5;
t3 = u * v;
t4 = t3 / w;
t5 = q + t1;
t6 = t5 + s;
t7 = t6 - t2;
t8 = t7 + t4;
因此,我们需要 8 个临时变量(t1 到 t8)来创建静态单赋值形式的三个地址代码。
这个问题的测验