【发布时间】:2020-01-04 20:35:55
【问题描述】:
我的方程是 x = y+z;
我已经看到,在解决 x = y+z x,y,z 是变量的问题时,这些变量通常会转换为三个地址代码,如下所示: t1 = y+z; x = t1;
我的疑问是当 x = y+z 本身是一个三地址代码时,因此我们为什么使用临时变量。
例如转换
for(int i=1; i<10; i++) x = y+z;
3地址码:
i = 1
l1: if(i>=10) goto l2
t1 = y+z;
x = t1;
goto l1;
l2:
为什么我们不能写 x = y+z 而不是 t1 = y+z 和 x = t1;
【问题讨论】:
-
使用临时对象是标准且“幼稚”的做法。在实现优化器时,通常需要在课程中获得额外学分来识别这种不需要临时的特殊情况。
-
@Someprogrammerdude 谢谢。我明白了,两者都是正确的。我没有足够的声望点来结束这个问题。如果能关闭就更好了。
标签: compiler-construction intermediate-code