esvm0006
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* ES-VMバイトコード暫定仕様#1
-(by [[K]], 2020.07.17)
** (0)
-(註)ここは確定情報ではないので何度も修正します。
** (1) 基本構造
-1つの関数は以下の2ブロックに分かれています。
--宣言ブロック
--コードブロック
** (2) 宣言ブロックについて
-ここでローカル変数、使用する定数、関数の引数などの様々な...
|RIGHT:0x1|宣言ブロックを終了して、コードブロックへ移行し...
|RIGHT:0x2|変数の基本ビット数を変更します。後続の引数の4...
----
-デフォルト設定:
--基本ビット数:32bit
|オペランド番号||
|RIGHT:0x00-0x0f|基本ビット数の整数レジスタ|
|RIGHT:0x10-0x1f|偶数:ポインタレジスタ、奇数:アクセス権レ...
|RIGHT:0x20-0x27|整数定数: 0, 1, 2, 3, 4, 5, 6, 7|
|RIGHT:0x28-0x2f|整数定数: 8, 15, 16, 31, 32, 63, 64, 127|
|RIGHT:0x30-0x37|整数定数: 128, 255, 256, 511, 512, 1023,...
|RIGHT:0x38-0x3f|整数定数: 2048, 4095, 4096, 8191, 8192, ...
** (3) コードブロック
|RIGHT:0x1||ローカルラベル宣言。||
|RIGHT:0x2|a,b|代入命令。 a=b||
|RIGHT:0x3|a|ローカルラベルへのgoto。|aはオペランド番号で...
|RIGHT:0x4||プリフィクス。||
|RIGHT:0x10|a,b|OR演算。 a|=b||
|RIGHT:0x11|a,b|XOR演算。 a^=b||
|RIGHT:0x12|a,b|AND演算。 a&=b||
|RIGHT:0x14|a,b|加算命令。 a+=b|プリフィクス4をつけると、...
|RIGHT:0x15|a,b|減算命令。 a-=b||
|RIGHT:0x16|a,b|乗算命令。 a*=b||
|RIGHT:0x21|a,b,c|条件分岐。if(a!=b)goto c|cはオペランド...
|RIGHT:0x3f||関数終了。||
** (4) コンパクトオペランド案
-たとえば、代入命令の最初のオペランドに定数は来ない。だか...
-ビット演算や加算命令や乗算命令は、可換なので、1番最後以...
-まあこれは面倒になるのでフロントエンドコードかな
終了行:
* ES-VMバイトコード暫定仕様#1
-(by [[K]], 2020.07.17)
** (0)
-(註)ここは確定情報ではないので何度も修正します。
** (1) 基本構造
-1つの関数は以下の2ブロックに分かれています。
--宣言ブロック
--コードブロック
** (2) 宣言ブロックについて
-ここでローカル変数、使用する定数、関数の引数などの様々な...
|RIGHT:0x1|宣言ブロックを終了して、コードブロックへ移行し...
|RIGHT:0x2|変数の基本ビット数を変更します。後続の引数の4...
----
-デフォルト設定:
--基本ビット数:32bit
|オペランド番号||
|RIGHT:0x00-0x0f|基本ビット数の整数レジスタ|
|RIGHT:0x10-0x1f|偶数:ポインタレジスタ、奇数:アクセス権レ...
|RIGHT:0x20-0x27|整数定数: 0, 1, 2, 3, 4, 5, 6, 7|
|RIGHT:0x28-0x2f|整数定数: 8, 15, 16, 31, 32, 63, 64, 127|
|RIGHT:0x30-0x37|整数定数: 128, 255, 256, 511, 512, 1023,...
|RIGHT:0x38-0x3f|整数定数: 2048, 4095, 4096, 8191, 8192, ...
** (3) コードブロック
|RIGHT:0x1||ローカルラベル宣言。||
|RIGHT:0x2|a,b|代入命令。 a=b||
|RIGHT:0x3|a|ローカルラベルへのgoto。|aはオペランド番号で...
|RIGHT:0x4||プリフィクス。||
|RIGHT:0x10|a,b|OR演算。 a|=b||
|RIGHT:0x11|a,b|XOR演算。 a^=b||
|RIGHT:0x12|a,b|AND演算。 a&=b||
|RIGHT:0x14|a,b|加算命令。 a+=b|プリフィクス4をつけると、...
|RIGHT:0x15|a,b|減算命令。 a-=b||
|RIGHT:0x16|a,b|乗算命令。 a*=b||
|RIGHT:0x21|a,b,c|条件分岐。if(a!=b)goto c|cはオペランド...
|RIGHT:0x3f||関数終了。||
** (4) コンパクトオペランド案
-たとえば、代入命令の最初のオペランドに定数は来ない。だか...
-ビット演算や加算命令や乗算命令は、可換なので、1番最後以...
-まあこれは面倒になるのでフロントエンドコードかな
ページ名: