研究概要 |
1.コンパイラにおける時相論理を用いた最適化器の生成と最適化器の検証の研究 (1)コンパイラにおける時相論理を用いた最適化器の生成の研究 この研究では,時相論理の一つである双方向CTLを用いて最適化器を記述し,そこからモデル検査により最適化器を生成した.従来研究として,Laceyら(2004)のようなCTLなどの論理を用いて最適化器を生成する研究もあるが,従来研究では,理論的な側面に重点が置かれており,Pascalのサブセットなど簡単な言語だけしか扱えない,扱える最適化の種類が非常に限られている,時相論理の記述から生成した最適化器の効率が悪く,最適化時間や最適化されたコードの実行時間などの定量的なデータが得られていない,など克服すべき課題が多かった.本研究ではこれらの問題を解決したシステムを作成した. (2)コンパイラにおける手書きの最適化器の検証の研究 最適化された中間コードに対し,時相論理で記述した仕様が満たされているかどうかを検証する方法を実現した.これは,まず,既存の手書きの最適化器を用い,それにアスペクト指向プログラミングの手法を用いて中間表現を変更する部分にマークをつけるように修正する.一方,個々の最適化について,中間コードが満たすべき仕様を時相論理で記述しておく.各フェーズの最適化後にその仕様が満たされているかどうかをモデル検査により検証する.これにより,最適化のバグを見つけることができた. 2.配列に対するSSA形式最適化の新しい方式の実装 配列をSSA形式で扱う方法は長らく研究されていたが,実用性にはほど遠かった.本研究では,RusらのFortran向けの手法をC言語向けに改良し,実装して実験を行った.結果はベンチマークにより異なるが,配列の最適化の結果,目的コードの実行時間が最大10%速くなる例もあった.
|