この記事は言語実装 Advent Calendar 2022の23日目の記事です。 導入 2021年、私は llrl という自作プログラミング言語のセルフホスティングに取り組みました。 セルフホスティングには成功し、生成された処理系の実行ファイルのバイナリが完全一致するところまで辿り着きましたが、この言語処理系のバックエンドは「LLVMを使う」で終わっていたので、バックエンドの実装にもっと目を向けたいと思いました。そこで2022年は、この言語処理系に 新たにx86_64を直接ターゲットとするバックエンドを追加し、LLVMを用いずにセルフホスティングできるようにしました。 本記事はこの取り組みの振り返りとなります。 自作プログラミング言語の特徴とバックエンドの要件 llrlには大きな特徴が2つあります。 Hindley-Milnerベースの型推論による静的型付け (+型クラス) Lisp-l