【问题标题】:Are the I and J registers special in DCPU-16?DCPU-16 中的 I 和 J 寄存器是特殊的吗?
【发布时间】:2012-04-04 13:52:22
【问题描述】:

DCPU-16 包括 8 个通用寄存器,分别命名为 A, B, C, X, Y, Z, IJ。将IJ 用于循环计数器有点像程序员的“比喻”。在 DCPU-16 中,IJ 是专用寄存器,它们只能在循环中使用 - 还是它们最终都以相同的颜色结束?

【问题讨论】:

  • 据我所知,唯一的官方文档在这里:0x10c.com/doc/dcpu-16.txt。因此,除非 Notch 自己访问此站点,否则不确定您能否得到答案 :-) 我的猜测是它们不是“保留”寄存器,它们都是通用的。
  • 解释器是140行C代码,不要犹豫,看一看。不,这些寄存器没什么特别的。
  • @HansPassant 这个解释器在哪里?
  • 在 github,点击 google 链接。
  • @HansPassant 你指的是这个:github.com/swetland/dcpu16/blob/master/dcpu.c 吗?这是一个非官方的实现,所以我会说它不能 100% 保证像“真实的东西”一样运行。但由于它遵循规范并且规范没有说明特殊寄存器,我同意它应该没问题。

标签: assembly dcpu-16


【解决方案1】:

一切都表明 DCPU-16 的 8 个主要寄存器是“通用”的:虽然它们是“打算”用于某种用途,但程序员可以随意使用它们。 x86 的通用寄存器具有类似的架构。

DCPU-16 上唯一的特殊用途寄存器是 SP、PC 和 O。

编辑:DCPU 1.3 规范引入了一条单指令 (MVI),它在执行后将 I 和 J 都加 1,目的是用作快速内存副本。 Notch 表示不喜欢这个,所以最终可能会被放弃,但现在我和 J 有点特别。

【讨论】:

  • x86 寄存器的意图在指令集中进行了编码——如果您按照最初设想的方式使用它们,指令往往适合 1 个字节。 swansontec.com/sregisters.html已全面处理
【解决方案2】:

我确信会出现约定,但指令集与寄存器A, B, C, X, Y, Z, IJ 完全正交,因此DCPU-16 中固有的它们之间没有区别。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 2013-01-29
    • 2011-08-15
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多