根据DCPU规范,SET指令失败的唯一时间是a值是文字.
那么下面的工作呢?
SET [PC],0x1000
Run Code Online (Sandbox Code Playgroud)
一个更有用的版本是设置偏移量PC,所以一个相当奇怪的无限循环将是:
SET [PC+0x2],0x89C3 ; = SUB PC,0x2
Run Code Online (Sandbox Code Playgroud)
可能(=我认为它应该工作,但我没有尝试).
这被称为"自修改"代码,并且在8位时代非常普遍,因为a)有限的RAM和b)有限的代码大小.这样的代码非常强大但容易出错.如果您的代码库增长,这很快就会成为维护的噩梦.
着名用例:
JMP)