著者
内山 雄司 緒方 大介 脇田 建
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.46, no.6, pp.1-17, 2005-04-15
被引用文献数
1

著者らが開発したバイトコードインタプリタ生成系であるVirtualMachineBuilder(VMB)について発表する.VMBは,仮想機械の仕様記述を入力として,仮想機械の中核をなすインタプリタの実装を生成するシステムである.VMBに与える仕様記述は,仮想機械を構成するレジスタやスタックの定義と,仮想機械で実行される各バイトコード命令の意味の定義からなる.バイトコード命令の意味は,仮想機械の状態遷移の形で表現される.以前のVMBには,データ型の宣言やオブジェクト間の参照の表現力に不十分な点があり,バイトコード命令の意味を記述する際に特別な工夫を必要とする場合があった.本研究では,仕様記述言語を再設計して,より自然な形で仮想機械の仕様を記述できるように工夫した.VMBを適用した処理系開発の事例として,簡単な手続き型言語に対するバイトコード言語を設計し,その処理系を実装した.さらに,VMBを利用してObjectiveCamlのインタプリタを実装し,仕様記述言語の表現力と生成されるインタプリタの性能という2つの観点からVMBの評価を行った.表現力については,146命令のうち133命令を自然な形で記述できた.インタプリタの性能については,ベンチマークテストの結果,手書きのインタプリタで実行した場合の93%の性能が得られた.The article proposes Virtual Machine Builder (VMB) which is a bytecode interpreter generator developed by authors group. VMB takes a specification of a virtual machine and generates implementation of the interpreter which compose a main part of the virtual machine. A specification of a virtual machine comprises a definition of a virtual hardware composed from registers and stacks, and a definition of the behavior of each virtual machine instruction. The behavior of an instruction is specified in terms of a machine state transition system. In the previous version of VMB, there were cases that we needed some tricks to specify the behavior of an instruction since the specification language lacked the way to declare data types of objects and to express references between objects. We redesigned the language so one could specify instructions more naturally. The article also shows an experience in developing tiny imperative language system using VMB. Also the expressiveness of the specification language and the perormance of the generated interpreter are evaluated by the use of a virtual machine of Objective Caml 3.08 generated by VMB. On the former point, 133 of 146 bytecode instructions can be defined naturally. On the latter point, a benchmark test shows that the efficiency of the generated virtual machine is 93% of a carefully implemented human-crafted one.