有人能解释一下核心战争中的小鬼戒指吗?
c JMP imp-2666
launch SPL c
SPL imp+2667
imp MOV 0,2667
end launch
我认为上面的代码是 '88 标准的,因为它用于end
表示程序的开始,并且标签没有冒号。
该程序从启动标签开始。我需要帮助想象这个小鬼环是如何“爬行”在记忆中的。
让我们逐行剖析:
c JMP imp-2666
这会导致程序计数器跳转到“imp”的位置......实际上,它之前的 2666 个位置。这叫做偏移量。注意标签“c”。
launch SPL c
这里,标签“launch”用于命名后面的代码块。SPL 表示“拆分”,这意味着它不仅会跳转到位置 C,还会执行后面的代码。这就是分裂的本质——开始另一个过程。得到它?:)
SPL imp + 2667
再次启动另一个 imp 进程,尽管这次它位于当前指令指针的 2667 AHEAD 处。
imp MOV 0, 2667
还记得在他们的领域中使用“imp”的所有说明吗?就是这个。如果您还不知道,imp 所做的只是将自己(MOV 指令)复制到某个地方,这样它就可以无休止地执行自己。
end launch
是的,你是对的,它表示代码块的结束。真的是为了预处理器。
当然,在汇编中,你必须看到全局:为什么这条指令会出现在这里,它与其他所有内容有什么关系?这很简单:它在每 2667 个内存位置生成一个小鬼,这样它们就可以超越核心及其敌人。虽然它很愚蠢,除非它是一个更大的战士的一部分,主要是因为 imps 覆盖了它的敌人,将它作为一个进程吸收,而不是杀死它。它以平局结束。
嘿,当我们讨论这个主题时,我正在寻找可以一起玩的人。我自己也参加了核心战争。想玩一会儿吗?哈哈。希望我的解释对你有用。