page0107
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* フロントエンドバイトコードの仕様
-(by [[K]], 2014.08.13)
** (1)
-1: LB命令
--1:
---LB(0, ...);を生成します。optはゼロで、ラベル番号は直前...
--41(op):
---LB(opt, no);を生成します。opt=op&0xff;で、no=「直前に...
-2: LIMM命令, CP命令
--2(imm)(reg0):
---immの値が定数を表しているときは、LIMM(32, reg0, imm);...
---immの値がレジスタを表しているときは、CP(32, reg0, reg1...
---immは以下のルールでエンコードされています。
---4ビットモードのとき:
|0|1|2|3|4|5|6|
|0|1|2|3|4|rep0|-1|
---rep0はリピートレジスタ0を表していて、直前に代入されたR...
---8ビットモードのとき:
|80...96|0x0~0x16|
|97...9f|下記の表を参照|
|a0...ae|R00~R0E|
|af|R3F|
|b0...b7|rep0~rep7|
|b8...bf|-0x8~-0x1|
|97|98|99|9a|9b|9c|9d|9e|9f|
|0x20|0x18|0x40|0x80|0x100|0xff|0x7f|0x3f|0x1f|
---12ビットモードのとき:
|c00...cee|0x0~0xee|
|cef...cff|下記の表を参照|
|d70...dff|-0x90~-0x1|
|d00...d3f|R00~R3F|
|d60...d6f|0x20000, 0x40000, ..., 0x100000000|
|d50...d56|bit1, bit2, bit4, bit8, ..., bit64 (プリフィ...
|d57|更に柔軟なbit指定プリフィクス|
|d58...d5e|リザーブ(将来の拡張用)|
|d5f|10のベキ指定プリフィクス|
---d5f-x-y と書くと、imm=x*10^(3+y)と解釈されます。
|cef|cf0|cf1|cf2|cf3|cf4|cf5|cf6|cf7|
|0x200|0xf0|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x100...
~
|cf8|cf9|cfa|cfb|cfc|cfd|cfe|cff|
|0xffff|0x7fff|0x3fff|0x1fff|0xfff|0x7ff|0x3ff|0x1ff|
---16ビットモードのとき:
|e000...e7de|0x0~0x7de|
|e9e0...efff|-0x620~-0x1|
|e7df...e7ff|リザーブ(将来の拡張用)|
|e800...e9df|リザーブ(将来の拡張用)|
---reg0の部分は単純にRxxの番号を符号なしのhh4で記述したも...
(早くも力尽きた・・・)
-3: PLIMM命令
--3(imm):
---PLIMM(P3F, ...);を生成します。ラベル番号は直前に生成し...
--43(imm)(preg):
---PLIMM(Pxx, ...);を生成します。ラベル番号は直前に生成し...
-4: 第一プリフィックス命令
--44(reg):
---CND(Rxx);を生成します。
----
--dc0:
--dc1:
--dc2~dfb: リザーブ
--dfc(reg0): レジスタの値を16進数でコンソールに出力
---reg0は以下のルールでエンコードされています。
---4ビットモードのとき:
|0|1|2|3|4|5|6|
|R00|rep0|rep1|rep2|rep3|rep4|rep5|
---8ビットモードのとき:
|80...9f|R00~R1F|
|a0...af|rep0~rep15|
|b0...bf|R30~R3F|
---12ビットモードのとき:
|c00...c3f|R00~R3F|
--dfd(reg0): レジスタの値を10進数でコンソールに出力
--dfe: リザーブ
--dff: 特殊リマーク
終了行:
* フロントエンドバイトコードの仕様
-(by [[K]], 2014.08.13)
** (1)
-1: LB命令
--1:
---LB(0, ...);を生成します。optはゼロで、ラベル番号は直前...
--41(op):
---LB(opt, no);を生成します。opt=op&0xff;で、no=「直前に...
-2: LIMM命令, CP命令
--2(imm)(reg0):
---immの値が定数を表しているときは、LIMM(32, reg0, imm);...
---immの値がレジスタを表しているときは、CP(32, reg0, reg1...
---immは以下のルールでエンコードされています。
---4ビットモードのとき:
|0|1|2|3|4|5|6|
|0|1|2|3|4|rep0|-1|
---rep0はリピートレジスタ0を表していて、直前に代入されたR...
---8ビットモードのとき:
|80...96|0x0~0x16|
|97...9f|下記の表を参照|
|a0...ae|R00~R0E|
|af|R3F|
|b0...b7|rep0~rep7|
|b8...bf|-0x8~-0x1|
|97|98|99|9a|9b|9c|9d|9e|9f|
|0x20|0x18|0x40|0x80|0x100|0xff|0x7f|0x3f|0x1f|
---12ビットモードのとき:
|c00...cee|0x0~0xee|
|cef...cff|下記の表を参照|
|d70...dff|-0x90~-0x1|
|d00...d3f|R00~R3F|
|d60...d6f|0x20000, 0x40000, ..., 0x100000000|
|d50...d56|bit1, bit2, bit4, bit8, ..., bit64 (プリフィ...
|d57|更に柔軟なbit指定プリフィクス|
|d58...d5e|リザーブ(将来の拡張用)|
|d5f|10のベキ指定プリフィクス|
---d5f-x-y と書くと、imm=x*10^(3+y)と解釈されます。
|cef|cf0|cf1|cf2|cf3|cf4|cf5|cf6|cf7|
|0x200|0xf0|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x100...
~
|cf8|cf9|cfa|cfb|cfc|cfd|cfe|cff|
|0xffff|0x7fff|0x3fff|0x1fff|0xfff|0x7ff|0x3ff|0x1ff|
---16ビットモードのとき:
|e000...e7de|0x0~0x7de|
|e9e0...efff|-0x620~-0x1|
|e7df...e7ff|リザーブ(将来の拡張用)|
|e800...e9df|リザーブ(将来の拡張用)|
---reg0の部分は単純にRxxの番号を符号なしのhh4で記述したも...
(早くも力尽きた・・・)
-3: PLIMM命令
--3(imm):
---PLIMM(P3F, ...);を生成します。ラベル番号は直前に生成し...
--43(imm)(preg):
---PLIMM(Pxx, ...);を生成します。ラベル番号は直前に生成し...
-4: 第一プリフィックス命令
--44(reg):
---CND(Rxx);を生成します。
----
--dc0:
--dc1:
--dc2~dfb: リザーブ
--dfc(reg0): レジスタの値を16進数でコンソールに出力
---reg0は以下のルールでエンコードされています。
---4ビットモードのとき:
|0|1|2|3|4|5|6|
|R00|rep0|rep1|rep2|rep3|rep4|rep5|
---8ビットモードのとき:
|80...9f|R00~R1F|
|a0...af|rep0~rep15|
|b0...bf|R30~R3F|
---12ビットモードのとき:
|c00...c3f|R00~R3F|
--dfd(reg0): レジスタの値を10進数でコンソールに出力
--dfe: リザーブ
--dff: 特殊リマーク
ページ名: