研究課題
計算中のプロセスの計算状態を安全に操作可能にすることで、高い実行性能と安全性・正当性を両立させるための拡張C言語の仕様設計、実装技術および応用手法を提案し、それらの評価することで、多数のプロセッサやノードから成るシステムを統合できることを示そうとしている。平成17年度は以下の成果を得た。1.入れ子関数の仕様設計言語仕様としては入れ子関数(クロージャ)を利用することにした。入れ子関数はC以外の言語ではよく用いられていて、関数呼出しの呼出し元のフレームで眠っている変数の値への正式なアクセスを可能としてくれる。一方で、calleeセーブ・レジスタを利用した変数へのレジスタ割当てなどの最適化を事実上不可能にすると考えられてきた。本研究ではこの常識を打ち破り、入れ子関数を持つ関数においてレジスタ割当てを可能にする新しいコンパイル技術を確立した。既存のC言語や拡張C言語との整合性を考慮し、最適化を阻害しない入れ子関数を持てるような言語設計を行った。2.入れ子関数の実装技術の開発実装技術のキーとなるのは、lazyな実行スタック操作である。呼出し元でのレジスタ保存を「とりあえず」後回しする既存のcalleeセーブ・レジスタの利用も、このカテゴリに属する。本研究では、入れ子関数の存在下でもこれを実現した。実行中の大部分は入れ子関数のアロケーションを含めて「とりあえず」の状態として実行し、いざ入れ子関数を呼び出す際に実行スタックを「見せられる」状態にすることで、入れ子関数からのアクセスが可能となった。
すべて 2006
すべて 雑誌論文 (1件)
Proceedings of 15th International Conference on Compiler Construction. Lecture Notes in Computer Science Vol.3923
ページ: 170-184