Rev2のバックエンド命令セット(バイト単位版)
(0)
- このページはpage0072の派生で、hh4かがわずらわしい人向けです。わかりやすいバイト単位で記述されています。
- ASKAも内部ではこのコードを生成しているので、この出力がダサいとかそういうことはありません。
- appackというツールを使えば、以下のバックエンドのバイトコードからコンパクトなフロントエンドコードに変換できます(予定)。
(1) 基本構成
- 最初に3バイトのシグネチャがある。
05 E2 00
- 命令表: (rはRxx+0x80のこと、pはPxx+0x80のこと、bitは定数32を入れておくとよい(つまり0x20)、uimmは符号なし整数のこと)
+00 | +01 | +02 | +03 | +04 | +05 | +06 | +07 | +08 | +09 | +0A | +0B | +0C | +0D | +0E | +0F | +10 | +11 | +12 | +13 | +14 | +15 | +16 | +17 | 命令表記 | 説明 |
F0 | | NOP(); | |
F1 | F7 | 88 | uimm | F7 | 88 | opt | | LB(opt, uimm); | |
F2 | F7 | 88 | imm | r | F7 | 88 | bit | | LIMM(bit, r, imm); | |
F3 | F7 | 88 | uimm | p | | PLIMM(p, uimm); | |
F4 | r | | CND(r); | CND命令は下位1bitしか見ない |
88 | p | F7 | 88 | typ | F7 | 88 | 00 | 00 | 00 | 00 | r | F7 | 88 | bit | | LMEM(bit, r, typ, p, 0); | |