0

NotchのDCPU-16仕様のアセンブラを作成しようとしています。このCPUの元の仕様はここにあります。

関連する行:

SET A, 0x30 ;7c01 0030

..。

IFN A, 0x10 ;c00d

これまでの説明は理解できましたが、これは私にとっては、単なる2語ではなく少なくとも2語の長さである必要があります。0xc00d

SET A, 0x10 

になります7c01 0010。それで

IFN A, 0x10 

すべきで7c0d 0010はないですか?

bの引数がIFN、命令に[PC ++]またはnextwordコンポーネントを必要としないのはなぜですか?

4

1 に答える 1

3
     0x1f: next word (literal)
0x20-0x3f: literal value 0x00-0x1f (literal)

これは、あなたが求めている仕様のコア部分です。0 ~ 31 (0x1f) のリテラル値をオペコードにエンコードできます。値が大きすぎる場合、リテラル値には 0x1f で示される余分な単語が必要です。

0x10IFN A, 0x10リテラルはオペコード内に収まるほど小さいため、必要な単語は 1 つだけです。16 ビットのオペコードは、b オペランドの 6 ビット、a オペランドの 6 ビット、および命令の 4 ビットに分割されます。したがって、b = 0x30 (0x20+リテラル)、a = 0x00 (レジスタ A)、instr = 0xd (IFN) です。それらを一緒にするopcode = (b << 10) | (a << 4) | instr;と、0xc00d が得られます。

于 2012-04-29T12:07:19.590 に答える