四畳半テクノポリス

コロナのストレスで気が狂い、D進した院生

自作CPU上でセルフホスティングできる自作コンパイラを動かしたい

自作CPU上でセルフホスティングできる自作コンパイラを動かしたい

 知っている方は知っていると思うが、私は去年大学院入試で失敗し今年の前半は大学院浪人生活を送っていた、前半は浪人生として真面目に勉強していたのだが8月の院試に合格すると本格的にニートになってしまった。その後10月に語学留学にカナダを予定していたので、その対策を行ったりしていたのだが。二ヶ月後には語学留学も終わり本格的にやらなければ行けないことがなくなってしまった。

1月現在ニート生活もあと三ヶ月になった。現在英語の勉強をしたり大学院への準備としてニューラルネットワークの勉強をしたりしているわけであるが、かの有名な東京大学のCPU実験に触発されて自分でも似たようなことが前からやりたかったので、やることにした。もちろん、大学院ではハードウェアアクセラレーションの研究をするのでCPUの設計はもちろんコンパイラの作成も十分に役に立つのではないかと考えている。だたまぁ東京大学のCPU実験はグループでやる実験だし、私は東大生ほど賢くないのでどこまでできるかよくわからない。

やることの目標は次のようにした。

RISC-Vを選んだ理由は命令が単純でなんとなく流行っているからであり、就職のときネタにできるかなっていう軽いノリだけである。

C言語を選んだのはC言語を実装してしまえばC言語完全に理解したってネタが実際にできると思ったからである。ソンダケ

セルフホスティングを目的にしたのは自分の作ってCPU上でプログラムをコンパイルできれば、PCから独立した端末として成長できるということになり面白いと思ったからである。

やること

今回の計画でやることは次の通りである。

1.エミュレータの作成

コンパイラを作成する上で実行環境がなとテストを行えないので、まずはRISC-Vのアークてくちゃの理解も兼ねて実行環境の構築を行う、gcc等で生成したバイナリを使って動作確認を行う。

2.コンパイラの作成

エミュレータ上で動作するバイナリを出力できるコンパイラの開発を行う、東大のCPU実験のようにレイトレーシングを行うわけではないので、とりあえずちゃんと動作するバイナリを吐けるものを目指す。

3.OSの作成

セルフホスティングする際にファイルの読み込みやバイナリの出力、プログラムの実行等を行わなければ行けないためOSが必要になる。そのための機能を持ったOSが必要を用意する。できることならμCLinuxやMINIXが使えると面白そうなんだけどなぁ。

4.CPUの作成

RISC-VをFPGA上に実装する。正直あんまり作り込むつもりはないがパイプライン化くらいできるといいな程度に考えている。アウトオブオーダー等にはチャレンジしない。

5.セルフホスティング

エミュレータ上で作成した環境を実機上に移植しコンパイラを動作させ、プログラミングをおこなう