编译器优化 - 语句重排算法?

时间:2015-05-17 21:38:07

标签: algorithm memory compiler-optimization

因此,我对编译器重新排列特定语句的任何方法感兴趣,以便更好地分配内存,例如注册分配。因此,在某些情况下,可以更早地评估语句,以便我们可以重用中间寄存器。考虑:

input(a1,a2,a3)
b = f1(a1,a2);
c = f2(b,a3);
d = f3(b,a1,a2);
k = f4(c,1);
l = f5(d,a3);
r = k + l + b + c;

这里编译器将使用4"寄存器" - 1)b,2)c,3)d和l,4)k和r将是前面的任何一个。 相反,如果我们这样做,这在寄存器分配方面可能更有效:

input(a1,a2,a3)
b = f1(a1,a2);
c = f2(b,a3);
r = b + c + f4(c,1);
c = f3(b,a1,a2);
r += f5(c,a3);

我们可以使用3个寄存器。

我正在寻找的是一个计算图,我拥有所有变量依赖项,以便为寄存器生成更好的优化代码。问题是有没有算法这样做?

PS:注意这个例子可能不是最好的,但是没有其他简单的想法。

0 个答案:

没有答案