【问题标题】:SET A, 0x1E vs SET A, 0x1FSET A,0x1E 与 SET A,0x1F
【发布时间】:2012-04-29 02:38:04
【问题描述】:

这是我第一次尝试 dpcu,我正在检查 dpcu-16 程序集生成的机器代码

我正在使用这个模拟器:http://dcpu.ru/

我正在尝试比较由

生成的代码
SET A, 0x1E
SET A, 0x1F

生成的代码如下:

fc01 
7c01 001f 

我不明白为什么这两个值之间的操作数大小会发生变化

【问题讨论】:

    标签: stack dcpu-16


    【解决方案1】:

    该模拟器似乎正在使用the next version of the DCPU-16 spec,它指定a 的同字文字值允许从0xFFFF (-1) 到0x1E (30) 的值。这意味着要获取此范围之外的任何文字值,汇编器必须使用下一个字文字语法,这会使操作数大一个字节。

    【讨论】:

      【解决方案2】:

      0x1F (dec:31) 不再是短文字(值 -1 到 30),因此必须将其视为“下一个单词”参数。

      操作码如下:

      SET A, 0x1E
      SET =             00001
      A   =        00000
      1E  =  111111
      op  =  1111110000000001 = fc01
      
      
      SET A, 0x1F
      SET =             00001
      A   =        00000
      NW  =  011111
      op  =  0111110000000001 = 7c01 + 001f
      

      【讨论】:

        猜你喜欢
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-02
        • 2016-02-01
        • 2022-12-01
        • 1970-01-01
        相关资源
        最近更新 更多