为表达式q + r / 3 + s – t * 5 + u * v / w创建静态单分配形式的三地址代码所需的最少临时变量数为
(A) 4
(B) 8
(C) 7
(D) 9答案: (B)
解释:
正确答案是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)以静态单分配形式创建三个地址代码。
这个问题的测验