根据DCPU 规范SET
,指令失败的唯一情况是该a
值是文字。
那么下面的工作吗?
SET [PC],0x1000
一个更有用的版本是设置一个偏移量PC
,所以一个相当奇怪的无限循环将是:
SET [PC+0x2],0x89C3 ; = SUB PC,0x2
可能(=我认为它应该有效,但我没有尝试)。
这被称为“自我修改”代码,并且在 8 位时代非常普遍,因为 a) 有限的 RAM 和 b) 有限的代码大小。像这样的代码非常强大但容易出错。如果您的代码库增长,这很快就会成为维护的噩梦。
著名用例:
JMP
)[PC] 没有任何价值,所以我猜你需要通过将 PC 存储在可以用作指针(注册表或内存)的东西中来以一种迂回的方式来做到这一点。
套装A 设置 [A+3], 0x8dc3 ; SUB PC, 3(如果 A 不能从 SUB PC 外部更改,2 也可以。)