0

コンパイラのようなものを書いています。問題は次のとおりです。一連の割り当てで構成されるコードがあります。

    t1=a+b+c
    t2=t1*d
    t3=sqrt(t1+t2)
    t4=t2+5
    ...

「t」変数のほとんどは一時的なものです。一時変数の数を減らし、可能な限り再利用したいと考えています。したがって、コードを再配置し、式をグループ化し、変数の割り当てにできるだけ近い変数を持たせる必要があるため、これらの式を計算した後、変数を再利用できます。もちろん、この手順ではコード ロジックを保持したいと考えています。これを行うのに最適なアルゴリズムはどれですか?

4

1 に答える 1

0

変数の寿命を調べます。変数が使用されなくなったら、破棄してメモリ空間を再利用できます。例えば:

t1=a+b+c
t2=t1*d
t3=sqrt(t1+t2)
// t1 is no longer used, free space to use for t4
t4=t2+5
// t2 is no longer used

...assuming only t3 and t4 is used later on

また、変数を割り当てる必要さえないほど寿命が短い変数を調べることもできます。次に例を示します。

t1 = a+b+c
t2 = t1 * 2

ここでt1は、次のステートメントで 1 回だけ使用されるため、前の計算の結果を取得して使用することができます。

t2 = (a+b+c) * 2
于 2012-10-06T11:33:25.253 に答える