インタープリター・ステムは通常、 入力言語をパースしてプログラムの中間表現を生成する「フロント・エンド」と、 プログラムの中間表現を実行するインタープリターに分かれます。
効率的なインタープリターの場合、 選択される中間表現は(抽象構文ツリーなどではなく、 )仮想マシン・コードです。 「仮想仮想マシン」(VM) コードは、 メモリー内に順番に配置された VM 命令で構成されます。 これらは VM インタープリターによって順番に実行されますが、 VM 分岐命令は制御フローを変更することができ、 制御構造の実装に使用されます。 実際のマシン・コードと概念的に類似しているため、 「仮想マシン」という名前が付けられます。 実機の用語に類似したさまざまな用語が使用されています。 たとえば、 「VM レジスター」(命令ポインターやスタック・ポインターなど)があり、 VM 命令は 「オペコード」と 「直接引数」(immediate arguments)で構成されます。
このフレームワークでは、 Vmgen は VM インタープリターと、 VM 命令を処理するその他のコンポーネントの構築をサポートします。 VM
コード生成のサポートを除いて、 フロント・エンドのサポートはありません。 フロント・エンドは、 flex
や
bison
などのツールでサポートされる、 従来のコンパイラー・フロント・エンド手法を使用して実装できます。
中間表現は通常、 インタープリターの内部にのみ存在しますが、 一部のシステムでは、 イメージ・ファイルとして、 または完全なリンク可能なファイル形式(JVM など)でのファイルへの保存もサポートしています。 現在、 Vmgen ではそのような機能に対する特別なサポートはありませんが、 命令記述に記載されている情報が役に立つ可能性があります。 また、 私達は機能のリクエストや提案をお待ちしています。