6502コードジェネレータがGCCとLLVMを凌駕
2025-02-16
ある開発者が6502アーキテクチャ向けのコードジェネレータを構築したところ、驚くべきことにGCC、LLVM、その他のコンパイラを上回るパフォーマンスを示しました。この速度の優位性は、高度な最適化によるものではなく、革新的なコード生成技術によるものです。「不正」命令、計算コストの高い命令選択、時間と引き換えの空間最適化などを活用しています。中心となるアルゴリズムは、命令選択とレジスタ割り当てを組み合わせ、継続渡しスタイルを巧みに用いています。DAGとSSA形式の中間表現を用いて、複数のアセンブリコードの組み合わせを生成し、動的計画法と分枝限定法で枝刈りを行い、最終的にPBQP問題を解いて最適な組み合わせを選択します。いくつかの「裏技」を使っていますが、このコンパイラはベンチマークテストで優れた結果を示し、コード生成技術に新たな視点を与えています。
開発