3.1 Front end and VM interpreter

インタープリター・ステムは通常、 入力言語をパースしてプログラムの中間表現を生成する「フロント・エンド」と、 プログラムの中間表現を実行するインタープリターに分かれます。

効率的なインタープリターの場合、 選択される中間表現は(抽象構文ツリーなどではなく、 )仮想マシン・コードです。 「仮想仮想マシン」(VM) コードは、 メモリー内に順番に配置された VM 命令で構成されます。 これらは VM インタープリターによって順番に実行されますが、 VM 分岐命令は制御フローを変更することができ、 制御構造の実装に使用されます。 実際のマシン・コードと概念的に類似しているため、 「仮想マシン」という名前が付けられます。 実機の用語に類似したさまざまな用語が使用されています。 たとえば、 「VM レジスター」(命令ポインターやスタック・ポインターなど)があり、 VM 命令は 「オペコード」と 「直接引数」(immediate arguments)で構成されます。

このフレームワークでは、 Vmgen は VM インタープリターと、 VM 命令を処理するその他のコンポーネントの構築をサポートします。 VM コード生成のサポートを除いて、 フロント・エンドのサポートはありません。 フロント・エンドは、 flexbison などのツールでサポートされる、 従来のコンパイラー・フロント・エンド手法を使用して実装できます。

中間表現は通常、 インタープリターの内部にのみ存在しますが、 一部のシステムでは、 イメージ・ファイルとして、 または完全なリンク可能なファイル形式(JVM など)でのファイルへの保存もサポートしています。 現在、 Vmgen ではそのような機能に対する特別なサポートはありませんが、 命令記述に記載されている情報が役に立つ可能性があります。 また、 私達は機能のリクエストや提案をお待ちしています。