フロントエンドバイトコードの仕様
(1)
- 1: LB命令
- 1:
- LB(0, ...);を生成します。optはゼロで、ラベル番号は直前に生成したラベル番号+1が自動的に指定されます。
- 41(op):
- LB(opt, no);を生成します。opt=op&0xff;で、no=「直前に生成したラベル番号+1」+op/256;になります。
- 2: LIMM命令, CP命令
- 2(imm)(reg0):
- immの値が定数を表しているときは、LIMM(32, reg0, imm);命令を生成します。32の部分をほかの数値にさせることもできて、その際はimmやreg0の部分でプリフィックスをつけて指定することになります。
- immの値がレジスタを表しているときは、CP(32, reg0, reg1);命令を生成します。32の部分をほかの数値にさせることもできて、その際はimmやreg0の部分でプリフィックスをつけて指定することになります。
- immは以下のルールでエンコードされています。
- 4ビットモードのとき:
- rep0はリピートレジスタ0を表していて、直前に代入されたRxxレジスタを意味します。
- 8ビットモードのとき:
97 | 98 | 99 | 9a | 9b | 9c | 9d | 9e | 9f |
0x20 | 0x18 | 0x40 | 0x80 | 0x100 | 0xff | 0x7f | 0x3f | 0x1f |