簡體   English   中英

核心戰爭中的小鬼戒指

[英]Imp Ring in Core Wars

有人可以解釋一下核心戰爭中的小鬼戒指嗎?

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 個內存位置產生一個小鬼,這樣他們就可以超越核心及其敵人。 不過這很愚蠢,除非它是更大戰士的一部分,主要是因為小鬼會覆蓋它的敵人,將其作為一個過程來吸收,而不是殺死它。 它以平局結束。

嘿,當我們討論這個話題時,我正在尋找可以一起玩的人。 我自己也在參加核心戰爭。 想玩一會兒嗎? 哈哈。 希望我的解釋對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM