Topic: My First Corewar Book Chapter 1 Translator: Michael ZENG [Michaelz2000@21cn.com] Date: 02-5-10 12: 53 * Reprint Do not delete, thank you *
My First Corewar Book ------ - Preface -------
This book collected some Corewar warriors and their comments. I assume that everyone knows the ICWS '88 RedCode language (see M. Durham Guide. 1 and Guide. 2 (Translator: I also translated)). Unless otherwise stated, All RedCode follows ICWS '88 and is 8,000 in the magnetic core size. The process restrictions 8000. All mentioned in this article can be found in the subdirectory pub / corewar / Corewar / Corewar / Corewar / Corewar / Corewar / Corewar / Corewar / Corewar / Corewar / Corewar / Corewar / CoreWar / Corewar / Corewar / Corewar / Corewar / Corewar / in the subdirectory.
After a short introduction, each chapter is titled with the name of the warrior. I will evaluate them one by one and give some tips. I will also mention other warriors worthy of further research. Unless otherwise pointed out, these soldiers You can find Warrior10.tar in the redcode / directory.
------- Preface -------
This book is an introductory collection of corewar warriors withcommentary. It assumes an acquaintance with the ICWS '88 redcode language (See M.Durham's tutorial.1 and tutorial.2 for details). Unless otherwisenoted, all redcode is written in ICWS '88 and Is Designed for a Coresize Of8000, Process Limit 8000. All Documents Referred to in This Text Areavailable By Anonymous Ftp At ftp.csua.berkeley.edu in One of theubdirectories of Pub / Corewar /.
After a brief introduction, each chapter presents warriors by subject. Ithen pontificate on the merits of these various warriors and give somehints for successful implementation. I mention credits and give referencesto other warriors worth further investigation. Unless otherwise indicated, these warriors are archived in warrior10 .tar in the redcode / directory.
The description of each soldier is probably similar. First, give the parameters of the warrior. Including the name, author, attack speed, effective length, durability, power, and score to Pizza Hill. Effective length refers to the attack phase Execute the length of the code, including the recycled code. Then, it is given to the source code and simple description of itself. Finally, the warrior is analyzed in detail.
I hope this is a bit help. If you have questions or suggestions, please send it to morrell@math.utah.edu, valid until 1994 June
Steven Moore Steven Morrell
The presentation of each warrior follows roughly the same format. First, the parameters of the warrior are given. These include the name, author, attack speed, effective size, durability, and effectiveness, and scoreagainst the Pizza Hill. The effective size is the size of the executingcode during the attack phase, taking into account regenerative code. Next, self-contained source code is given, followed by a brief description of thewarrior. Finally, a detailed technical description of how the warrior runsis given.I hope that this Helps. if you have quintions or commertes, send themortu, WHERE You Can Reach Me Until June, 1994
Steven morrell
--------------------- Chapter 1: Imp-rings ---------------------
On October 14, 1992, A.ivner released a big reform of the warrior of the magnetic core war. "The Impire Strikes Back" is approximately 170 points in Intel Hill, and the negative rate is only 10%, which makes it firmly standing. The first place .a.ivner invented a method of killing opponents through IMP - the world's first IMP ring (Imp-Ring) .d.nabutovsky improved the IMP ring startup code in his "Impressive" in his "IMPRESSIVE" By manufacturing IMP spiral (Imp-spiral), it is only 2% in Hill, which is 195 (STONES). From then on, Most of the soldiers in Hill have IMP or anti-IMP procedures. This chapter from Akdewdney proposed in the original article of "Science US" in the original article of Akdewdney, to modern us as many successful warriors component IMP spiral (Imp-Spiral ) To tell IMP.
--------------------- Chapter 1: Imp-rings ---------------------
On October 14, 1992, A.Ivner posted a warrior that revolutionized thegame of corewar. "The IMPire strikes back" scored about 170 on the Intelhill and only suffered 10% losses, putting it firmly in first place.A.Ivner had invented a way to kill other programs with imps -. the world'sfirst imp-ring D.Nabutovsky improved the launch code a bit by making animp-spiral and adding a stone in his "Impressive", which lost only 2% andscored 195 when it started on the hill (for more information on stones, seechapter 2). Since that time, most warriors on the hill have either beenimps or something hostile to imps.This chapter deals with imps, from the basic imp proposed by AKDewdney inthe original Scientific American Articles to the MODERN-DAY IMP-SPIRAL WESEE AS A Component of Many Successful Warriors.
--1-- Name: Wait Waiting Speed: No length: 1 Durability: Powerful Power: No score:
Wait Jmp Waitend Wait
Wait is the easiest warrior. It is very small, so it is difficult to find. However, it will not attack, so only when the opponent is destroyed, it can be victorious. We treat it as an material.
--1 - Name: Waitspeed: Nonesize: 1Durability: Strongeffectiveness: Nonescore:
Wait Jmp Waitend Wait
.
--2--
Name: Imp urchin Author: A.K.Dewdney speed: c of 100% (continuously) Length: 1 Durability: great power: weak points:
IMP MOV IMP, IMP 1END IMP
IMP gives an opponent a small mobile goal unless they are directly hit, it will not die. It is often flattened and is easily attacked by IMP-GATE. (See Program 3)
--2 - Name: Impauthor: a.k.dewdeed: 100% of C (SEQUENTIAL) SIZE: 1DURABILITY: STRONGEFFECTIVENESS: POORSCORE:
Imp MOV IMP, IMP 1END IMPIMP PRESENTS THEMPING TARGET That Will Not Diewithout A Direct Hit. It Ties a Lot, And is Vulnerable To The Imp-Gate. (See Program 3)
Working principle: It is like this in IMP and executed, it is like this:
MOV 0,1 (1)
((1) Indicates the command will be executed in the first cycle.) When (1) is executed, it copies yourself to the next address, then move to the next instruction:
MOV 0,1; original directive MOV 0, 1 (2); replica
Execute (2). Because the address is relatively, the replica will be responsible for the next address and continue to advance.
MOV 0,1MOV 0,1MOV 0,1 (3); second replica
It has been moving forward, covering all things with MOV 0, 1 instructions. So when it encounters hostilities, it also covers the hostile code with the MOV 0, 1 instruction, so that the enemy process becomes IMP. Note, Although the hostility code is not, the hostile process is still, so IMP can't win unless the enemy is destroyed.
How IT Works: When Imp Is Loaded and Before It Executes, IT Looks LikeTHIS:
MOV 0,1 (1)
(1) Shows Which Instruction Will Execute on The First Cycle.) IT First Address Andness To The Next Addressand The Moves To The Next INSTRUCTION:
MOV 0,1; this is the original.mov 0,1 (2); this is the copy.
Process (2) Now Executes. Since All Addressing is Relative, The ProcessCopies ITS ITSTRUCTION TO The Next Address and Advances.
MOV 0,1MOV 0,1MOV 0,1 (3); this is the second copy.
And so it goes, overwriting anything in its path with MOV 0,1 instructions.So when it encounters enemy code, it replaces the enemy code with MOV 0,1instructions, turning the enemy processes into imps. Note that althoughthe enemy code is gone, ............
--3 - Name: IMP GATE Moistone Gate: None Length: 1 Durability: Powerful Power: Very good IMP, very weak score for others:
Gate Equ WAIT-10WAIT JMP WAIT, IMP Gate (IMP Gate) Waiting for IMP through 10 instructions in front of it and destroy IMP. It is very small by IMP, and it is not easy to position. The IMP door is self-defense, unrecognizable enemies, unless the enemy is destroyed . --3 - Name: IMP Gatespeed: Nonesize: 1Durability: Strongeffectiveness: Excellent Against Imps, Extreme Poor Against Otherscore: Gate Equ Wait-10Wait Jmp Wait, Imp Gate waits and destroys imps that happen to pass 10 instructions beforeit. It is seldom overrun by imps and its small size makes it difficult tolocate. The imp gate is defensive by nature, and will not win against astationary enemy unless this enemy self-destructs . Working principle: The process jumps to this command in _wait_, which is returned to _Wait_. However, it is also consumed (unhappy) _gate_ B-field. This, _gate_ The B-fields are consumed (minus 1). When the hostile IMP is coming, it will be like this: MOV 0,1 (x); IMP is coming DAT 0, -5; this is the door IMP copy itself and advances: MOV 0,1MOV 0, 1 (x 1); this is the door Door consumption (minus one): (Translator: Decrement translated into what is good?) MOV 0,1MOV 0,0 (x 1); this is the door IMP replication instructions to yourself (there is no effect) and move forward (translator: falling ~): MOV 0,1MOV 0,0; this is the door (x 2) The door is still consumed again (but it has caused damage.) MOV 0, 1MOV 0, -1; this is the door (x 2) The enemy process implemented a illegal instruction dead. HOW IT WORKS: The process running at _wait_ jumps to the A-value of thiscommand, ie back to _wait_ However, it also decrements the B-field of_gate_ Thus, the B-field of _gate_ is decremented every turn When anenemy imp... Comes by this is what happens: MOV 0,1 (x); here comes the impdat 0, -5; Here Is The Gate The Imp Copies Itself and Advances Onto The Gate: MOV 0,1MOV 0,1 (x 1); Here Is The Gate The Gate Decremers: MOV 0,1MOV 0,0 (x 1); Here Is The Gate THE IMP COPIES THISTRUCTION TO ITSELF (Effectively Doing Nothing) andadvances, falling off the end: MOV 0, 1MOV 0, 0; Here Is The Gate (x 2) The Gate Decrements Again (But The Damage Has Already Been Done.) MOV 0,1MOV 0, -1; Here Is The Gate (x 2) The Enemy Process Executes An Illegal Instruction and Dies. --4 - Name: WORM worm speed: 25% (linear) length: 1.75 Durability: Very strong power: weak score: Launch SPL B SPL Abaa JMP IMPAB JMP IMP 1B SPL BBBA JMP IMP 2BB JMP IMP 3 IMP MOV IMP, IMP 1END LAUNCH WORM is a number of IMP symbiosis. The WORM susceptible part of the attack only has the tail command and the upcoming instruction, so the effective length is 1.75 (with 25% time, the tail instruction is the upcoming instruction.) It is difficult to kill Death, because each IMP must be handled separately. However, it is still vulnerable to IMP Gates. Like IMP, Worm covers enemy code but retains enemy processes. --4 - Name: WormSpeed: 25% of C (linear) Size: 1.75durability: Very strongeffectiveance: Poorscore: Launch SPL B SPL Abaa JMP IMPAB JMP IMP 1B SPL BBBA JMP IMP 2BB JMP IMP 3 IMP MOV IMP, IMP 1END LAUNCH Worm is a symbiotic collection of imps. The only vulnerable parts of theworm is the tail instruction and the instruction about to execute, hence theeffective size of 1.75 (25% of the time, the tail instruction is theinstruction about to execute.) It is very DIFFICUSE EACHIMP MUST BE DISPOSED OF INDIVIDUALLY. HOWEVER, IT IS STILL Vulnerable TOIMP GATES. AS with IMP, WORM OVERWRITES Enemy Code But Preserves EnemyProcesses. working principle: First, we run Worm: SPL 4,0 (1) SPL 2,0jmp 5,0JMP 5,0SPL 2,0JMP 4,0jmp 4,0mov 0,1 The first process is divided into processes (2) and (3): SPL 4,0SPL 2,0 (2) JMP 5,0JMP 5,0SPL 2,0 (3) JMP 4,0jmp 4,0MOV 0, 1 Process (2) Split to Process (4) and (5): SPL 4,0SPL 2,0JMP 5,0 (4) JMP 5,0 (5) SPL 2,0 (3) JMP 4,0JMP 4,0MOV 0, 1 Process (3) split: SPL 4,0SPL 2,0jmp 5,0 (4) JMP 5,0 (5) SPL 2,0jmp 4,0 (6) JMP 4,0 (7) MOV 0, 1 Process (4) jump: SPL 4,0SPL 2,0JMP 5,0jmp 5,0 (5) SPL 2,0jmp 4,0 (6) JMP 4,0 (7) MOV 0,1 (8) Process (5), (6) and (7) jump: SPL 4,0Spl 2,0JMP 5,0jmp 5,0SPL 2,0JMP 4,0JMP 4,0MOV 0,1 (8) (9) (10) WORM Now starts to move forward in memory. Note that if the process (10), (10) or (11) Now, it will be executed to the illegal instruction dead. However, the process (8) is executed, and the Copy the MOV command to the process (9) will be executed. SPL 4,0SPL 2,0JMP 5,0JMP 5,0SPL 2,0jmp 4,0jmp 4,0mov 0,1mov 0,1 (9) (12) (10) (11) Now execute the process (9), copy the MOV instruction to the process (10). SPL 4,0SPL 2,0JMP 5,0jmp 5,0SPL 2,0jmp 4,0jmp 4,0mov 0,1mov 0,1 (12) MOV 0,1 (10) (13) (11) (10) and (11) After the execution, WORM creeping advances a directive, leaving a sticky MOV 0, 1 trace. SPL 4,0SPL 2,0JMP 5,0JMP 5,0SPL 2,0JMP 4,0jmp 4,0mov 0,1MOV 0,1 (12) MOV 0,1 (13) MOV 0,1 (14) MOV 0,1 ( 15) HOW it works: First, We Launch The Worm Using A Binary Launch: SPL 4,0 (1) SPL 2,0jmp 5,0JMP 5,0SPL 2,0JMP 4,0jmp 4,0mov 0,1 The First Process Splits Into Processes (2) and (3): SPL 4,0SPL 2,0 (2) JMP 5,0JMP 5,0SPL 2,0 (3) JMP 4,0jmp 4,0MOV 0, 1 Process (2) Splits Into Processes (4) and (5): SPL 4,0SPL 2,0JMP 5,0 (4) JMP 5,0 (5) SPL 2,0 (3) JMP 4,0JMP 4,0MOV 0, 1 Process (3) splits: SPL 4,0SPL 2,0jmp 5,0 (4) JMP 5,0 (5) SPL 2,0jmp 4,0 (6) JMP 4,0 (7) MOV 0, 1 Process (4) jumps: SPL 4,0SPL 2,0JMP 5,0jmp 5,0 (5) SPL 2,0jmp 4,0 (6) JMP 4,0 (7) MOV 0,1 (8) Processes (5), (6) and (7) jump: SPL 4,0SPL 2,0JMP 5,0JMP 5,0SPL 2,0jmp 4,0jmp 4,0mov 0,1 (8) (9) (10) (11) The worm will now start crawling though memory. Note that if processes (9), (10) or (11) executed right now, they would execute an illegalinstruction and die. But process (8) executes, copying the MOV instructionto where process ( 9) Is Going to Execute: SPL 4,0SPL 2,0JMP 5,0JMP 5,0SPL 2,0jmp 4,0jmp 4,0mov 0,1mov 0,1 (9) (12) (10) (11) Now Process (9) Executes, Copying The Mov Instruction to Process (10). SPL 4,0SPL 2,0JMP 5,0jmp 5,0SPL 2,0jmp 4,0jmp 4,0mov 0,1mov 0,1 (12) MOV 0,1 (10) (13) (11) Andreat (10) and (11) Have Executed, The Worm Has Crawled Forward Aninstruction, Leaving A Slimy Mov 0,1 Trail Behind. SPL 4,0SPL 2,0JMP 5,0JMP 5,0SPL 2,0JMP 4,0jmp 4,0mov 0,1MOV 0,1 (12) MOV 0,1 (13) MOV 0,1 (14) MOV 0,1 ( 15) --5 - Name: Ring ring speed: 100% (proximity linear) length: 1 Durability: General Power: Good score: C JMP IMP-2666LAUNCH SPL C SPL IMP 2667 IMP MOV 0,2667End Launch Ring is a syntain of 3 IMP distribution in the magnetic core. It can destroy the enemy process it crossed, if the enemy is only 1 or 2 processes. This code can only run correctly in the case of the magnetic core size of 8000, although Change the constant to run at any magnetic core that cannot be removed from 3. Ring is an example of 3 point IMP. --5 - Name: Ringspeed: 100% of C (Mostly Linear) Size: 1Durability: AverageeeffECTIVESS: FAIRSCORE: C JMP IMP-2666LAUNCH SPL C SPL IMP 2667 IMP MOV 0,2667End Launch Ring is a symbiotic collection of three imps distributed through core. Ithas the capability to destroy enemy processes it overruns, if the enemy isrunning only one or two processes. This code will run correctly only in acoresize of 8000, although the constants may be tweaked to Run in AnycoreSize Not Divisible by 3. Ring IS AN EXAMPLE OF A 3-PT IMP. Working principle: The startup code is small: JMP -2663, 0SPL 0, 0 (1) SPL 2668, 0MOV 0,2667 (1) Split: JMP -2663, 0 (3) SPL 0, 0SPL 2668, 0 (2) MOV 0,2667 (2) Split: JMP -2663, 0 (3) SPL 0, 0SPL 2668, 0MOV 0, 2667 (4) ... (5); here is the back 2667 instructions after IMP (3) Jump: MOV 0,2667 (4) ... (5); here is the 2667 instructions behind IMP ... (6); here is the process (2) 2667 instructions I am having a bit fun. (4) Execute, copy the IMP instruction to (5) and start (7): MOV 0,2667 (7) ... MOV 0,2667 (5) ... (6) (5) Execution, copy IMP instructions (6): MOV 0,2667 (7) ... MOV 0,2667 (8) ... MOV 0, 2667 (6) (6) Execution, copy the IMP instruction back (7): MOV 0,2667mov 0,2667 (7) ... MOV 0,2667 (8) ... MOV 0,2667 (9) The cycle starts again, and Ring is also spread forward. Let's take a look at Ring to WAIT (Program 1). WAIT executes JMP 0,0 until it is finally covered with MOV 0,2667 by Ring. MOV 0,2667 (1) WAIT executes this instruction and advances: MOV 0,2667 (2) Because Ring wants to write the next command with 3 cycles, the Wait process is now executed by illegal instructions. So ring slowly moves in the magnetic core, so if the enemy only has a process, it will fall into the end of the IMP ring. How it works: The launching code is a very small binary startup: JMP -2663, 0SPL 0, 0 (1) SPL 2668, 0MOV 0,2667 The First Process Splits: JMP -2663, 0 (3) SPL 0, 0SPL 2668, 0 (2) MOV 0,2667 The Second Process Splits: JMP -2663, 0 (3) SPL 0, 0SPL 2668, 0MOV 0, 2667 (4) ... (5); this location is 2667 instructions after the imp The Third Process Jumps: MOV 0,2667 (4) ... (5); this location is 2667 instructions after the imp ... (6); this location is 2667 instructions instance process (2) Now the fun begins. Process (4) Executes, Copying The Imp Instruction Toprocess (5) And Becoming Process (7): MOV 0,2667 (7) ... MOV 0,2667 (5) ... (6) (5) Executes, Copying the Imp Instruction to process (6): MOV 0,2667 (7) ... MOV 0 , 2667 (8) ... MOV 0,2667 (6) And now (6) Executes, Copying the Imp Instruction Back to Process (7): MOV 0,2667mov 0,2667 (7) ... MOV 0,2667 (8) ... MOV 0,2667 (9) The Cycle Starts All Over Again, And The Ring Creeps Forward. Let's see what happens when Ring Fights Wait (Program 1). Wait Executesjmp 0,0 Until Eventually Ring Overwrites this instruction with MOV 0,2667.MOV 0,2667 (1) WAIT EXECUTES THIS INSTRUCTION AND Advances: MOV 0,2667 (2) Since Ring Takes 3 Cycles To Move The Next Command INTO Place, Wait'SProcess now Executes An Illegal Instruction and Dies. So Ring Slowly Advances Through Core, And iF The Enemy Is Running A SingleProcess, IT Falls Off The end of the imp raning. --6 - Name: Spiral Spiral Speed: C 37.5% (rigid linear) length: 1.875 Durability: Very powerful: Good score: Step EQU 2667LAUNCH SPL 8 SPL 4 SPL 2 JMP IMP IMP IMP STEP SPL 2 JMP IMP (Step * 2) JMP IMP (Step * 3) SPL 4 SPL 2 JMP IMP (Step * 4) JMP IMP (Step * 5) SPL 2 JMP IMP (Step * 6) JMP IMP (Step * 7) IMP MOV 0, Stepend Launch Spiral also has WORM's durability and Ring's power. Spiral can resist most of the routine attacks, because it is an 8 process IMP ring (Imp-Ring), it can kill any less than 8-process enemies covered by it The only vulnerable point is the SPIRAL tail and the current run. Although this SPIRAL is restrained by the IMP Gates. --6 - Name: SpiralSpeed: 37.5% of C (Mostly linear) Size: 1.875durability: Very strongeffectiveness: Fairscore: Step EQU 2667LAUNCH SPL 8 SPL 4 SPL 2 JMP IMP IMP IMP STEP SPL 2 JMP IMP (Step * 2) JMP IMP (Step * 3) SPL 4 SPL 2 JMP IMP (Step * 4) JMP IMP (Step * 5) SPL 2 JMP IMP (Step * 6) JMP IMP (Step * 7) IMP MOV 0, Stepend Launch Spiral crosses the durability of a worm with the effectiveness of a ring.Spiral is resistant to most conventional attacks, and since it is an8-process imp-ring, it kills any enemy it overwrites if the enemy has lessthan 8 processes running. The only Vulnerable Parts of The Spiral Areail and The Process That Is Currently Running. Spiral IS Vulnerable TOIMP GATES, HOWEVER. Working: After startup, the process is allocated as follows: MOV 0,2667 (16); This is 2667 instructions (22) after (18) ... (17); 2667 instructions after (16) (20) (23) ... (18); 2667 instructions (21) here (21) SPIRAL is now creeping forward: (16) Copy IMP to (17), (17) Copy to (18), so push. At this time, all processes advance 1 instruction, then the IMP delivery command will start again. One step by step, IMP Gates, how to destroy Spirals is lengthy and unnecessary. The key is that the IMP gate is constantly changing. When IMP passes the IMP gate, IMP instructions cannot be completely copied to the next The location of the process. The next process will be executed to the illegal instruction dead. This repeatedly until the entire spiral through the IMP door and decomposed. How IT Works: After a binary launch, The Processes Are Arranged Asfollows: MOV 0,2667 (16); this process is 2667 instructions after process (18) (22) ... (17); this process is 2667 instructions instance (16) (20) (23) ... (18); this process is 2667 instructions instance (17) (21) Now The Spiral Worms Along: (16) Copies the Imp To (17), Which Copies It To (18), And So ON. All The Processes Advance 1 Instruction As this Happens, and the imp-passing instructions begin again. A step-by step analysis of how imp gates destroy spirals would be lengthyand unnecessarily complicated The key idea is this:.. The imp gate isconstantly being modified As the imp overruns the imp gate, no impinstructions are left intact to copy to the next processes 'location.This next process executes an illegal instruction and dies This scenariorepeats until the entire spiral moves through the imp gate anddisintegrates .-- 7-- name:. Gate Crashing spiral break screw speed: c 12.5% (generally linear) Length: 5.875 Durability: Very strong power: strong score: Step1 EQU 2667STEP2 EQU 2668START SPL LNCH1 SPL LNCH3 LNCH2 SPL 8 SPL 4 SPL 2 JMP IMP2 (Step2 * 0) JMP IMP2 (Step2 * 1) SPL 2 JMP IMP2 (Step2 * 2) JMP IMP2 (Step2 * 3) SPL 4 SPL 2 JMP IMP2 (Step2 * 4) JMP IMP2 (Step2 * 5) SPL 2 JMP IMP2 (Step2 * 6) JMP IMP2 (Step2 * 7) LNCH3 SPL 8 SPL 4 SPL 2 JMP IMP3 (Step2 * 0) JMP IMP3 (Step2 * 1 ) SPL 2 JMP IMP3 (Step2 * 2) JMP IMP3 (Step2 * 3) SPL 4 SPL 2 JMP IMP3 (Step2 * 4) JMP IMP3 (Step2 * 5) SPL 2 JMP IMP3 (Step2 * 6) JMP IMP3 (Step2 * 7 ) LNCH1 SPL 8 SPL 4 SPL 2 JMP IMP1 (Step2 * 0) JMP IMP1 (Step2 * 1) SPL 2 JMP IMP1 (Step2 * 2) JMP IMP1 (Step2 * 3) SPL 4 SPL 2 JMP IMP1 (Step2 * 4) JMP IMP1 (Step2 * 5) SPL 2 JMP IMP1 (ST EP2 * 6) JMP IMP1 (Step2 * 7) IMP1 MOV 0, Step1 Dat # 0 DAT # 0 DAT # 0imp2 MOV 0, Step2 MOV 0, Step2 Imp3 MOV 0, Step2 MOV 0, Step2nd Startgate Crashing Spiral Combine 3 spirals Kill IMP Gate (IMP Gates). The first is a standard IMP spiral, the rest of the two slightly modifications, providing stronger protection by cross storage to confront the split bombs. Because the startup code is large, it It is easy to defend the opponent's fast. --7 - Name: Gate Crashing SpiralSpeed: 12.5% of C (Mostly Linear) Size: 5.875 Durability: Very strongeffectiveness: Goodscore: Goodscore: Step1 EQU 2667STEP2 EQU 2668START SPL LNCH1 SPL LNCH3 LNCH2 SPL 8 SPL 4 SPL 2 JMP IMP2 (Step2 * 0) JMP IMP2 (Step2 * 1) SPL 2 JMP IMP2 (Step2 * 2) JMP IMP2 (Step2 * 3) SPL 4 SPL 2 JMP IMP2 (Step2 * 4) JMP IMP2 (Step2 * 5) SPL 2 JMP IMP2 (Step2 * 6) JMP IMP2 (Step2 * 7) LNCH3 SPL 8 SPL 4 SPL 2 JMP IMP3 (Step2 * 0) JMP IMP3 (Step2 * 1 ) SPL 2 JMP IMP3 (Step2 * 2) JMP IMP3 (Step2 * 3) SPL 4 SPL 2 JMP IMP3 (Step2 * 4) JMP IMP3 (Step2 * 5) SPL 2 JMP IMP3 (Step2 * 6) JMP IMP3 (Step2 * 7 ) LNCH1 SPL 8 SPL 4 SPL 2 JMP IMP1 (Step2 * 0) JMP IMP1 (Step2 * 1) SPL 2 JMP IMP1 (Step2 * 2) JMP IMP1 (Step2 * 3) SPL 4 SPL 2 JMP IMP1 (Step2 * 4) JMP IMP1 (Step2 * 5) SPL 2 JMP IMP1 (ST EP2 * 6) JMP IMP1 (Step2 * 7) Imp1 MOV 0, Step1 Dat # 0 DAT # 0 DAT # 0 IMP2 MOV 0, Step2 MOV 0, Step2imp3 MOV 0, Step2 MOV 0, Step2nd Startgate Crashing Spiral IS A Collection of Three Spirals that work together tokill imp gates. The first is a standard imp spiral and the other two areslightly modified, interleaved for greater protection against split bombs.The large size of its launch code makes it vulnerable to fast attacks. Working principle: Each spiral has its own startup code. The first spiral first started and crawled a command. At this time, the remaining two spirals also started. The magnetic core looks like this (for convenience, reset the counter) : Mov 0,2667; here is label IMP1 | MOV 0,2667 | MOV 0,2667mov 0,2667 (17) | MOV 0,2667 (18) | MOV 0,2667 (19) MOV 0,2667 (20) | MOV 0,2667 (21) | MOV 0,2667 (22) DAT # 0, # 0 (23) | (24) | MOV 0,2668 (1); here is tag IMP2 | | MOV 0,2668 | (2) | MOV 0,2668 (9); here is the tag IMP3 | (3) MOV 0,2668 | (10) | (4) | | (11) | (5) | (12) | | (6) | 13) | (7) | | (14) | (8) | (15) | | | (16) | These IMP images move forward. When Gate Crashing Spiral is first collided through the gate (GATE), the second or third spiral: MOV 0,2668 (x); this is an IMP door Door consumption (reduced): MOV 0,2667 (x) Injured spiral copy yourself to 2667 instructions: MOV 0,2667 (x 24) ... MOV 0,2667 Now this spiral is fell into the end, then the first spiral came to the door: MOV 0,2667 (y); this is an IMP door ... MOV 0,2667 (Y 1) Door consumption (reduced): MOV 0,2666 (y) ... MOV 0,2667 (y 1) Execute the (Y) process, it cannot copy the IMP to the process (Y 1), but it doesn't matter, because the process (Y 1) performs the Imp instruction left by the first two spirals. In this way, the spiral passes the door and continues to advance And kill the enemy process. HOW IT WORKS: Each spiral has its own binary launch The first spirallaunches first and crawls forward an instruction by the time the other twospirals have launched Core then looks like this (after resetting thecounter for clearer exposition)..: MOV 0,2667; this is label IMP1 | MOV 0,2667 | MOV 0,2667mov 0,2667 (17) | MOV 0,2667 (18) | MOV 0,2667 (19) MOV 0,2667 (20) | MOV 0,2667 (21) | MOV 0,2667 (22) DAT # 0, # 0 (23) | (24) | MOV 0,2668 (1); this is label IMP2 | | MOV 0,2668 | (2) | MOV 0,2668 (9); this is label omp3 | | (3) MOV 0,2668 | (10) | (4) | (11) | (5) | (12) | | (6) | 13) | (7) | | (14) | (15) | | | (16) | The Imps The Move Forward Via The Usual Instruction Juggling. When a Gate Crashing Spiral Overruns a Gate, The Second Or Third Spiralshit First: MOV 0,2668 (x); IMP GATE Here The Gate Decremers: MOV 0,2667 (x) The Wounded Spiral Copies this instruction 2667 Ahead: MOV 0,2667 (x 24) ... MOV 0,2667 The Second and Third Spirals Now Fall Off The end and die, and then thefirst spiral Hits the Gate: MOV 0,2667 (y); IMP GATE ... MOV 0,2667 (Y 1) The Gate Decremers: MOV 0,2666 (y) ... MOV 0,2667 (y 1) Process (y) executes, and can not copy the imp to process (y 1), but this isokay, because process (y 1) executes the imp instruction from the twospirals gone before. The spiral crawls through the gate and goes On tokill the Enemy Processes. - 8 - Name: Nimbus SpiRal Spiral Spiral Speed: 50% (Rough Linear) Length: 1.992 Durability: Very strong Power: Good score: Step EQU 127imp MOV 0, Steplaunch SPL 1; 1 Process SPL 1; 2 Processes SPL 1; 4 Processes SPL 1; 8 Processes SPL 1; 16 Processes MOV-1, 0; 32 Processes SPL 1; 63 Processes SPL 2; 126 ProcessessPread JMP @ spread, IMP add # step, Spreadend Launch Nimbus Spiral launches a 63-point spiral, each point has two processes. Because binary starts more than 100 instructions, Nimbus Spiral uses a start-up method called a Nimbus-Type. This type of startup code It is obvious, but the start time is about twice. --8 - Name: Nimbus Spiralspeed: 50% of C (Somewhat Linear) Size: 1.992durability: Very strongeffectiveness: Fairscore: Step EQU 127imp MOV 0, Steplaunch SPL 1; 1 Process SPL 1; 2 Processes SPL 1; 4 Processes SPL 1; 8 Processes SPL 1; 16 Processes MOV-1, 0; 32 Processes SPL 1; 63 Processes SPL 2; 126 ProcessessPread JMP @ spread, IMP add # step, Spreadend Launch Nimbus Spiral launches a 63-point spiral with two processes per point.Because a binary launch would exceed the 100-instruction limit, NimbusSpiral uses what is called a Nimbus-type launch. The code for this typeof launch is obviously smaller, but the time IT Takes to Launch Spirals IsRoughly Doubled. Working principle: Each SPL 1 command doubles the number of processes before and after the next command. The first process of executing MOV -1, 0 is not divided, but the later process performs a SPL 1 command. So, execute in the SPL 2 command Before, the magnetic core is such a (reset counter): MOV 0, 127SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0 (1) - (126) JMP @ 0, -9ADD # 127, -1 After SPL 2 command : MOV 0, 127SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0, -9 odd processes add # 127, -1 even process We reset the process again. Now (1), jump to the position specified by the B-operand of the JMP instruction: MOV 0,127 (253); This from (1) SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0, the odd process add # 127, -1 even process Execute (2), plus the b-operand of 127 to JMP instruction: MOV 0,127 (253) SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0,118 greater than 1 odd process add # 127, -1 greater than 2 even process (254 This comes from (2) Now continue. (3) Jump to the new location. The odd process modifies the jump vector, the even process jumps. When (127) is executed, the whole situation is as follows: MOV 0,127 (253) SPL 1,0 (379) SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0, -134ADD # 127, -1 even process ... odd number Process spreads over the entire core The odd process constitutes an IMP spiral, and the even process performs illegal instructions to die, leaving only the spiral in memory. HOW IT WORKS: Each SPL 1 command doubles the number of processes acting intandem at the next instruction The first process that executes theMOV -1,0 command does not split, but all subsequent processes execute aSPL 1 command Hence, before execution of the.. SPL 2 Command, Core Lookslike this (with counter reset): MOV 0, 127SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0 (1) - (126) JMP @ 0, -9add # 127, -1 After Execution of the SPL 2 Command: MOV 0, 127SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0, -9 ODD Processesadd # 127, -1 Even Processes We reset the processes again. Process (1) Now Executes, Jumping to Thelocation of the B-OPERAND OF THE JMP INSTRUCTION: MOV 0,127 (253); this Came from Process (1) SPL 1,0Spl 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2, 0jmp @ 0, -9 ODD Processes Greater Than 1Add # 127 , -1 Even Processes Process (2) Now Executes, Adding 127 To The B-OPERAND OF THE JMPINSTRUCTION: MOV 0,127 (253) SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0,118 Odd Processes Greater Than 1Add # 127, -1 Even Processes Greater Than 2 (254); this Came from Process (2) ... And it continues Process (3) jumps to a new location The even processesmodify the jump vector, and the odd processes do all of the jumping Bythe time process (127) is ready to execute, we have the followingsituation: MOV 0,127 (253) SPL 1,0 (379) SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 1,0SPL 2,0jmp @ 0, -134ADD # 127, -1 Even processes ... ODD Processes Broadcast THROUGHOUT CORE The Odd Processes Form An Imp Spiral and The Even Processes Execute Illegalinstructions and Die, Leaving Just The Spiral To Crawl THROUGH MEMORY. --in conclusion-- There are two questions to answer: When do you add an IMP in your favorite soldiers? How to kill the IMP? Now most of the warriors have certain resistance to IMP, so pure IMP programs are very successful. But it is easy to join IMP in multi-process code, just like the stone, vampires, or Paper. Most successful Imp warriors use most of their process time to conduct regular attacks, and rely on the IMP loop as aura. Joining IMP is good, depending on your program; you may lose less, but may also Win less. The only thing that can be determined is that you will often make a flat hand. This can be improved by testing your warrior. --ConClusion --- Two Questions Beg To BE Answered: When Should You Add An Imp To yourfavorite Warrior, And How Do You Kill Imps? Most of today's fighters have some resistance to imps, so pure imp programsseldom are successful. But imps are easy to add to code that has multipleprocesses running, like today's stones, vampires, or paper. The mostsuccessful imp warriors use most of their process time in a moreconventional attack, and rely on the imp-ring as a backup Whether an impis a good idea in your program depends on the program;. you may lose less, but you may win less About the only thing you can be sure of is. TYINGMORE. But Testing Your Warrior Always Helps. Kill IMP is difficult, but not there is no possibility. IMP doors are valid for most IMPs, but should do their own constructs after your program. Such IMP Gate SPL 0, Killing imps is difficult, but not impossible. Imp gates work well againstmost imps, but should only be executed after the rest of your code has doneits stuff. Imp gates of the form SPL 0, Some IMP-style programs worth researching are listed below. Unless otherwise stated, you can find it at the 88 directory Warrior10.TAR. The IMP and Stone combiners will be listed later. "The Impire Strikes Back" author is Anders Ivner (IMPIRE) Author's author is Anders Ivner (TRIDENT) "Nimbus 1.2" author is Alex Macaulay (Nimbus12) "IMPS! IMPS! IMPS!" Author is Steven Morrell (Contact Morrell @ Math.utah.edu) - Program 2, IMP, A.K. Dewdney is proposed in the articles of Scientific American. Program 3, IMP GATE, B.THOMsen proposes its general form, often referred to as a coward (WIMP) in the literature. Program 5, Ring, striken from _push off_P.kline and modified, it looks like a triangle of A.ivner "Trident." Program 7, Gate Crashing Spiral, stolen from P.Kilne's shelling "Cannonade" and modified Program 8, Nimbus Spiral, stolen from A.Macaulay "Nimbus 1.2" and modified [this chapter] An enhancement to the imp-launching routines is to add decrement statementsto all the b-fields of the SPL and JMP commands. If you have a largebinary launch, for example, you could decrement 63 instructions throughoutcore for free. Most of the original code I HAVE BASED THIS Chapter On Hassuch B-Fields. Here Is A List of Imp-Style Programs Worth Investigating. Unless, The 88 Directory. Imp-Stonecombos Will Be listed in The Back of Chapter 2. "THE IMPIRE STRIKES BACK" by Anders Ivner "Trident" by Anders Ivner (TRIDENT) "Nimbus 1.2" by Alex Macaulay (Nimbus12) "IMPS! IMPS! IMPS!" By Steven Morrell (Contact Morrel@math.utah. EDU) --Program 2, IMP, Was Written by a.k. Dewdney for His Scientific AmericanArticles. Program 3, Imp Gate, Was Suggested In Its Current Form B.Thomsen, Andis Offense. Program 5, Ring, Was Stolen and Modified from a _Push Off_ Article fromP.kline, But it looks suspiciously like a.ivner's "Trident." Program 7, Gate Crashing Spiral, Was Stolen and Modified from P.kilne's "Cannonade." Program 8, Nimbus Spiral, Was Stolen and Modified from A.macaulay's "Nimbus 1.2."