【发布时间】:2009-01-20 21:02:00
【问题描述】:
我正在努力学习 redcode,因为做一个机器人看起来很有趣。
简介
对于那些不知道什么是 redcode 的人,这里有一个简短的解释。 它是一种类似 ASM 的语言,但更加简单和精简。它用于编写需要关闭虚拟内存中其他程序的小程序。 (查看更多信息:http://vyznev.net/corewar/guide.html)
这是一段代码:
;redcode
;name Mice
;author Chip Wendell
;strategy paper (replicator)
;history Winner of the 1986 ICWS tournament
Top dat #0, #0
Start mov #12, Top
Loop mov @Top, <Target
djn Loop, Top
spl @Target,0
Spacer equ 653
add #Spacer,Target
jmz Start, Top
Target dat #0, #833
end Start
问题
基本策略是将自身复制到另一个地方,然后分叉该过程。 我不明白的是这条规则:
Loop mov @Top, <Target
我理解这行的意思。就是说,将目标B-Field移动到顶点B-Field所在的线,并减小目标B-Field的值。
第一次执行循环时,第一行是:
Top dat #0, #12
据我所知,带有 Loop 的行的意思是: 将指令前移 12 行(用 dat #0、#0 填充)到第 833 行。
但是当这段代码执行时,代码行放在了第839行。
有人了解真正发生的事情吗?
【问题讨论】: