第 293 回 PTT のお知らせ


日時: 2003年10月23日 (木) 18:30 から
場所: 東京工業大学大岡山キャンパス西8号館W棟10階1008号会議室 地図を参考に、大岡山駅(東急大井町線、東急目黒線)からおいで 下さい。駅前交差点を渡ったところがキャンパスの正門です(図の右下)。

開催場所は図の25番で示される建物です。これまでの開催場所 (西7号館;23)とは異なりますのでご注意下さい。

西8号館はふたつの建屋から構成されています。正面玄関を入ったところ がE棟で玄関奥にのびる廊下を渡ってW棟に行けます。開催場所はW棟の 10階の最奥にあります。


話者: 内山雄司(東京工業大学)
題名: インタプリタ生成系 Virtual Machine Builder の紹介
概要:
インタプリタ自動生成システム Virtual Machine Builder (VMB) を紹介する. VMB は,バイトコード命令の仕様を抽象的な記述として受けとり,その記述を 解析してインタプリタのコードを出力するシステムである.VMB を利用するこ とで,移植性や保守性に優れたインタプリタをより簡単に実装できるようにな ると考えている.今回の発表では VMB の概要について述べ,VMB を用いたイ ンタプリタの開発例を示す.また,本研究の応用として,命令の仕様の記述を バイトコード解析に利用することについて考察する.

第 293 回 PTT メモ


日時: 2003年10月23日 (木) 18:30 から
場所: 東京工業大学大岡山キャンパス西8号館W棟10階1008号会議室
出席者: 笹田耕一(農工大),首藤一幸(産総研),伊知地宏(ラムダ数学教育研), 鷹岡良治,脇田建(東工大),酒井政裕(慶應大),三浦明平,崔哲浩, 佐々木直志,花田智洋,多田好克,鈴木信吾(電通大), 石畑清(明大),田中哲朗(東大)
題目: インタプリタ生成系 Virtual Machine Builder の紹介
話者: 内山雄司(東京工業大学)
概 要:

インタプリタ自動生成システム Virtual Machine Builder (VMB) を紹介する. VMB は,バイトコード命令の仕様を抽象的な記述として受けとり,その記述を 解析してインタプリタのコードを出力するシステムである.VMB を利用するこ とで,移植性や保守性に優れたインタプリタをより簡単に実装できるようにな ると考えている.今回の発表では VMB の概要について述べ,VMB を用いたイ ンタプリタの開発例を示す.また,本研究の応用として,命令の仕様の記述を バイトコード解析に利用することについて考察する.


質疑応答:
Q.
言語機能としての例外処理などは記述できるのか.
A.
できる.O'Caml にも例外処理機構はあって,それは記述できている.
Q.
スレッドは記述できるのか.
A.
今は何も考えていない.
Q.
多相型を扱う命令は記述できるのか.
A.
型情報がオブジェクトに埋め込まれているのであれば,条件分岐を使って 記述できる.
Q.
float が扱えないために書けない命令が 2 つというのは,少なくないか.
A.
O'Caml では float 演算は全て C の関数を呼んでインタプリタの外側で処 理しているため.
Q.
演算の際に int に変換するのではなく,O'Caml の型の上での演算をユー ザが定義して,それを使えばよいのではないか.
A.
そうしたいと考えている.
Q.
(前質問への回答に対して) そういう事をすると,仕様記述の利点と言って いたものがほとんど失われてしまうのではないか.
A.
ユーザ定義の演算が算術演算としてのセマンティクスを満たしている事を 仮定して解析するとか...(まだ深く考えてはいない)
Q.
(オリジナルのインタプリタとの性能比較に関して) VMB はスタック溢れの チェックなどをしていないが,比較はフェアになっているのか.
A.
フェアな比較になるように,VMB が生成したものとオリジナルの実装とを 見比べて,スタック溢れ検査のコードなどはオリジナルと同等になるよう に手で挿入している.
Q.
性能差の原因として挙げられているものは,実行環境やアセンブリ命令の 並び方に依存する話なのでは.
A.
そう思う.
Q.
O'Caml の他には何か書けるのか.
A.
BIT という,scheme の処理系を書こうと試みた.BIT はオブジェクトの表 現にリストを用いており,VMB ではループを表現できないので,あまりう まくいかなかった.
Q.
列の表現で [v] の代わりに V(1) と書いても同じなのか
A.
[v] を代入するだけの操作なら同じだが,[v] と書くことで,後状態とし て [v + x] というような演算に利用できる.
Q.
後状態の方に S(n) ではなく単に S と記述するのは,書かなくても S(n) に決まっているという理由か.
A.
そうです.
Q.
直列化は,全部退避してしまって C コンパイラに任せるのでもよいのでは.
A.
要素数が静的に決まらない列を退避するためにはメモリアロケーションが 必要になるので,効率が悪い場合がある.また,そうやってメモリに退避 してしまうと C コンパイラでの最適化は難しい.