[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

17.5.2 レジスタの割当順

レジスタの割り当てには順番がある。

REG_ALLOC_ORDER

定義されていれば、整数のベクトルの初期化子である。 GNU CC が優先して使うべき順番に並んでいる、ハードレジスタ番号群を含む。 (最も優先すべきものから最も優先度の低いものへという順番である。)

このマクロが定義されていないと、レジスタは一番小さい番号から先に 使われる(等しいもの以外は全て)。

このマクロの使い道の一つは、一番大きな番号のレジスタを常にセーブする 必要があり、かつ、 複数のレジスタをセーブする命令が連続したレジスタの 列しかサポートしていない機種の場合である。 そういう機種では、REG_ALLOC_ORDER を、 割当可能な一番大きな番号のレジスタを先に列挙する初期化子になるように 定義する。

ORDER_REGS_FOR_LOCAL_ALLOC

一個の C の文(セミコロンなし)であり、 基本ブロックに局所的な疑似レジスタ用のハードレジスタを割り当てる 順番を選択する。

希望のレジスタの順番を配列 reg_alloc_order に格納する。 要素 0 は最初に割り当てるレジスタとすべきである。 要素 1 がその次のレジスタで、以下同様である。

マクロの本体では、このマクロの実行前の reg_alloc_order の内容に ついて何も仮定してはいけない。

大部分の機種では、このマクロを定義する必要はない。


This document was generated using texi2html 1.78.