HeadlinesBriefing HeadlinesBriefing.com

Ratの改良されたレジスタ割り当ては行数を削減し、より良いコードを生成

Hacker News •
×

2026年10月7日 — ratは、半分動作するC99フロントエンドを持つ小型のコンパイラバックエンドであり、x86-64コード生成器を使用して仮想レジスタ(vregs)を物理レジスタまたはスタックスロットにマッピングします。従来のリニアスキャン割り当ては1392行に達したため、584行で優先度付きビンパッキング割り当ての書き換えが行われました。この新しい割り当ては重要性に従って生存期間を訪問し、各値を最初の適合レジスタに配置します。LLVMの貪欲割り当てに似ていますが、より簡素です。値は書き込みから最後の読みまで生存し、2つの値は絶対に同時生存しない場合にのみレジスタを共有します。生存値が多すぎると、一部がメモリにスパイルされます。呼び出し惯例では、callee-savedレジスタ(rbx rbp r12-r15)を保持する必要があり、caller-savedレジスタは上書きされます。示されているように、関数hは、callee-saved配置の明示的ロジックなしで呼び出し間でyを生存させます。割り当ては5つのステップを実行します:生存期間、固定レジスタ、コalesce、レジスタ選択、スパイリング。各バンドルは lifetime全体にわたってレジスタまたはスタックスロットを保持し、イベントや分割ません。

出典: Hacker News · 要約:HeadlinesBriefing