|

本プロジェクトでは、利用者として、特殊な言語・CPU のコンパイラを早く作りたい開発者、コンパイラ研究者、
コンパイラ学習者を対象に、マルチソース、マルチターゲットのコンパイラを容易に作成可能な支援環境を開発した。
本コンパイラ作成支援環境は、次のソフトウェアから構成されている。
(1) コンパイルモジュール
(a) パーサ、タイプチェッカ、AST 簡約系、LIR 簡約系
(b) フロー解析、ループ解析モジュール
(c) リターゲッタブルレジスタアロケータ
(2) コンパイラ作成支援ツール
(a)パーサジェネレータ yayacc
(b) リターゲッタブルコード生成ジェネレータ TMD-compiler
(c) 可視化ツール
(3) Graphviz (AT&T) へのインタフェース
(4) 開発環境、ライブラリ
改良されたトップレベルループ、多倍精度演算ライブラリ、等
(5) Emacs Lisp 演習問題集
演習問題を通じたコンパイラ作成支援系の学習例題集
図1にコンパイラの構成を示す。yayacがパーサジェネレータ、TMD-compilerがリターゲッタブルなコード生成系である。yayacにより、新しいソース言語に対するフロントエンドを構文定義から自動生成できる。また、TMD-compilerにより、アーキテクチャに対するコード生成規則を記述することで対応するコード生成系を自動生成できる。各モジュール間のインタフェースはS式により定義される。データと同時に、S式により処理手続きをも記述できる。

図2.コンパイラモジュールの構成図
構成の中で(2)(c)の可視化ツール、Graphvizへのインタフェースはグラフ構造を持つデータを可視化することにより、記述の読解、デバッグを容易にする。また、(5)の例題集は、Emacs Lispに慣れると同時に、コンパイラ開発の学習を容易にする目的で開発された。
上記の構成要素を期間内に開発した。Emacs Lispで29000行近い規模となっている。現在、ソース言語として言語Cが実装されている。また、ターゲットアーキテクチャとしてx86のTMDが作成されており、実際にプログラムをコンパイルし、実行できることを検証した。
|