Générateur de code 6502 surpasse GCC et LLVM

2025-02-16

Un développeur a créé un générateur de code pour l'architecture 6502 qui, étonnamment, surpasse GCC, LLVM et d'autres compilateurs. L'avantage de vitesse ne provient pas d'optimisations de haut niveau supérieures, mais de techniques innovantes de génération de code. Le compilateur utilise des instructions « illégales », une sélection d'instructions coûteuse en calcul et des optimisations qui échangent de l'espace contre du temps. L'algorithme principal combine la sélection d'instructions avec l'allocation de registres, utilisant intelligemment le style de passage de continuation. Il fonctionne avec une représentation intermédiaire DAG et SSA, générant de multiples combinaisons de code assembleur, en effectuant une élagage avec la programmation dynamique et branch-and-bound, et enfin en résolvant un problème PBQP pour une sélection optimale. Bien qu'il utilise quelques « astuces », le compilateur présente des résultats de benchmark remarquables, offrant de nouvelles perspectives sur la génération de code.

Développement