9

我试图理解规范,但无法理解给出的示例的第一行:

SET A, 0x30              ; 7c01 0030

这是我从规格中了解到的:

  • 第一个字(7c01)完全定义了指令
  • 操作符是 0x1 这是命令SET a, b
  • b = 111100 = 0x3C(当我转换为十六进制时)= 文字值 0x3C
  • a = 000000 = 寄存器 A

所以我将指令理解为 SET A, 0x3C

谁能告诉我哪里出错了?

4

2 回答 2

9

好吧,从评论中我终于得到了答案。

您缺少规范中的“值”部分,它说:

Values:
....
0x1f: next word (literal)

所以我们有:

0x7c01 = 0111110000000001

0001 = SET
000000 = register A
011111 = 1F -> next word -> [PC++]

下一个词是0x0030……瞧。

于 2012-04-05T13:02:00.630 回答
1

@cli_hlt 几乎是正确的

dcpu 文档说:

在一条基本指令中,指令第一个字的低五位是操作码,剩下的十一位被分成五位值b和六位值a。

b 总是在 a 之后由处理器处理,并且是低五位。以位为单位(LSB-0 格式),基本指令的格式为:aaaaaabbbbbooooo

所以正确答案是:

0x7c01 = 0111110000000001

00001 = SET
00000 = register A
011111 = 1F -> next word -> [PC++]
于 2015-07-09T21:59:33.130 回答