Next: , Previous: , Up: Assembly Coding   [Index]


15.8.9 ループ展開

ループ展開は,複数のリムを各ループで処理するコードを複製することでできるようになります。 ループのオーバーヘッドを展開した分だけ減らすことができるは当然として,他にも例えばレジスタを他と組み合わせて使うことで,もっと有効活用できるようになることも期待できます。

展開する分量は,1回回るごとにN減らされるループカウンタを用いて制御します。停止するのは,残りのループカウンタがNより小さくなった時です。もしくは,開始時にNを差し引き,停止条件はループカウンタCがゼロより小さくなった時とします(残っているリムの数はC+Nになります)。

別のやり方としては,2のべき乗の場合は,ループカウンタや残り数はシフトとマスクの処理だけで計算することもできます。大規模なループの真ん中にジャンプする場合にも便利に使えます。

リムは多重ループ展開ではないので,様々なやり方で制御できます。例えば下記のようにします。