Gauche:YAGHG:VM:Insn

Gauche:YAGHG:VM:Insn

インストラクションの構造

次の図はScmWordを32ビット幅と仮定したものである。

     |   10    |   10   |   8   |
+----+---------+--------+-------+
|    |  ARG1   |  ARG2  |  CODE |
+----+---------+--------+-------+
|         ARG           |

+--------------------------------+
|            OPERAND             |
+--------------------------------+

VMインストラクション一覧

注意点

コード例におけるcompile-p3

どのようなSchemeコードによって該当インストラクションが生成されるかを示す「コード例」ではgauche.internalモジュールのcompile-p3を利用しています。

フレーム

表記
C#N、 E#N

それぞれコンティニュエーションフレーム、環境フレームを表します。 Nは単なる識別子にすぎません。

環境フレームのポインタ

環境フレームは引数フレームと環境ヘッダからなり、また環境フレームへのポインタは 環境ヘッダを指すため、正確に表記するなら次のようになりますが

         +=========+ =====
         | arg     |   |
env ---->+---------+
         |         |  E#0
         | ENV_HDR |
         |         |   |
         +=========+ =====

これを次のように表しています。

env ---->+=========+
         |         |
         | E#0     |
         |         |
         +=========+

なお、コンティニュエーションフレームも積みかけの引数フレームを含むことがありますが 基本的にそれは考慮しません。

スタックとヒープ

原則すべての(スタックにあり得る)フレームはスタックにあるものとして表されます。

More ...