実行命令の前のコンベア アーキテクチャでは、命令はより小さな命令に分割されます。したがって、それらははるかに高速に実行されます。ただし、命令全体を実行する前に、同じレジスタにアドレッシングされた次の命令を実行することはできません。そうですか、同じレジスタ (または RAM セル) にアピールする命令の順序を最適化するために、これらの命令は互いにできるだけ離れて配置されましたか? または、コンパイラ自体がこのように最適化するため、これには意味がありませんか?
例えば:
int a = 1, b = 2, c = 3;
a *= a;
b *= a; // stop and waiting for the end of calculating (a)
c *= c;
最適化:
int a = 1, b = 2, c = 3;
a *= a;
c *= c; // calculating (a), but we don't need this and don't stop
b *= a;