東大理情では、学部 3 年の冬学期に「プロセッサ実験」と呼ばれる演習を行っています。これは、その年の 3 年生を数人ごとの班にわけ、FPGA というソフトウェア的にプログラム可能な LSI を利用して、独自の CPU を設計・製作するという授業です。
この実験は「コンパイラ演習」というもう一つの演習とリンクしており、単に CPU を作るだけでなく、それをターゲットとしたコンパイラも作成し、実際にレイトレーシングのプログラムをコンパイル・実行して、CPU とコンパイラの性能を競います。
「コンパイラ演習」の授業では Scheme(のサブセット)のコンパイラを中心に学習するので、各班のコンパイラ係は授業に沿った Scheme コンパイラを作成して提出するのが普通です。それ以外のメンバーは、授業で紹介された論文を読んだり、独自のリサーチを行ったりして、レポートを提出します。
僕は CPU の設計を担当しており、Scheme コンパイラは別の人がちゃんと作っていたので、Scheme ではなく C のコンパイラを作ることにしました。しかし、C はプログラミング言語としてお世辞にもきれいとはいえず、C コンパイラを 0 から作るのはかなり面倒なことです。そこで、すでにさまざまな CPU に対応していて、非常に多くの実績があり、ソースコードも公開されている GCC を 我々の CPU「TSU」に対応させることにしました。
このドキュメントは、96 年秋にプロセッサ実験とコンパイラ演習がスタートしてから、97 年春の競技会で TSU-GCC が生成したコードが実際に動作するまで、半年にわたる製作の過程を記録したものです。
なお、このドキュメントも含めて TSU-GCC に関するファイルの多くは WWW 上 で公開していますので、必要に応じて参照してください。