Core War | |
---|---|
| |
Típusú | Játék programozóknak |
Szerző | D. G. Jones és A. K. Dewdney |
Első kiadás | 1984 |
Hardver platform | Linux |
Engedély | BSD , GNU GPL és ingyenes szoftver |
A Memory Fight ( eng. Core War ) a Darwin számítógépes játék egyik változata, amelyet Alexander C. Dewdney fejlesztett ki . Segített a játék fejlesztésében David Jones , a University of Western Ontario informatikus hallgatója , ahol Dewdney tanított.
Ebben a játékban a játékosok számítógépes programokat fejlesztenek az assemblerhez hasonló speciális programozási nyelven - Redcode . A programok egy ciklikusan zárt memóriaterületen (mag) helyezkednek el, amely 8000 cellából áll, és egy gyűrűbe hurkolva vannak. Minden csapat egy cellát foglal el. A Redcode programok a MARS ( Memory Array Redcode Simulator - Redcode Memory Array Simulator) vezérlése alatt futnak. A programok véletlenszerű címeken töltődnek be a memóriába.
Minden programnak (az ICWS'1988 szabvány óta) több aktív szála lehet, és egy szál más szálakat is létrehozhat a SPL. Az ugyanahhoz a programhoz tartozó szálak felváltva futnak le, így a végrehajtásuk sebessége fordítottan arányos a szálak számával. A szál akkor fejeződik be, ha érvénytelen utasítást próbál végrehajtani. Az a program, amelynek minden szála véget ért, vesztesnek minősül.
A játékkal kapcsolatos cikkek a Scientific American magazinban jelentek meg 1984-1987 között , a Computer Recreations rovatban (Szórakoztató számítógép). A játék jelentős érdeklődést váltott ki az olvasók körében, és ezt követően megalakult az International Core War Society (ICWS), amelynek székhelye az Egyesült Államokban található, és fiókjai a világ számos országában, köztük a Szovjetunióban találhatók .
Az ICWS 1986 óta ad otthont évente nemzetközi versenyeknek. A versenyek körrendszer szerint zajlottak. Az első két torna lényegében az észak-amerikai bajnokság volt. Az 1988-as torna, amely az új ICWS'88 játékszabvány szerint zajlott, számos résztvevőt vonzott különböző országokból, és de facto az első világbajnokság lett. A győztesek Jevgenyij Lilitko (Szovjetunió) - 1. hely, Luca Crosara (Olaszország) - 2. helyezett, a harmadik pedig Douglas McDaniels (USA) lett [1] . Egy másik szovjet résztvevő, Alekszandr Burcev az ötödik helyet szerezte meg. Jelenleg a versenyek elsősorban a "King of the Hill" rendszer szerint zajlanak.
A két egymással ellentétes program, a CREEPER és a REAPER története késztette Dewdney-t a „Fight in Memory” kifejlesztésére (lásd a számítógépes vírust ). A CREEPER / REAPER fejlesztésének körülményei némileg torz formában jutottak el Dewdney-hez, így R. Tomlinson szerint sem az ARPANet fertőzés , sem a két program közötti „párbaj” nem valósult meg.
Itt van az ICWS'94 szabvány (legújabb). Minden utasításnak két A és B argumentuma van, bár nem mindegyik használja mindkettőt. Az értékek argumentumokban tárolódnak, és címzési műveleteket hajtanak végre (növekedés/csökkentés). Feltételezzük, hogy A a forrás, B a cél.
Utasítások (<Utasítás> <Felhasznált érvek> - <Leírás>):
DAT – Leállítja a szál végrehajtását. MOV AB - A cím forrásának másolása a címre. ADD AB - Forrás hozzáadása a célhoz. SUB AB - Vonja ki a forrást a célból. MUL AB - A cél szorzása forrással. DIV AB – A cél felosztása forrás szerint. (Ha B=0 leállítja a szál végrehajtását). MOD AB - Az A B-vel való elosztásából származó maradékot kapja. (Ha B=0, leállítja a szál végrehajtását). JMP A – Áthelyezés címre. JMZ AB – Ha B=0, ugorjon az A címre. JMN AB – Ha B nem 0, ugorjon az A címre. DJN AB - Vonjon ki egyet B-ből, és ha B nem egyenlő 0-val, akkor lépjen az A címre. SPL A – Hozzon létre egy új szálat az A címen (a végrehajtást az összes többi szál után kezdi meg, beleértve a vesztes utasítást is) SEQ AB – Hasonlítsa össze a forrást a céllal, és ha megegyezik, akkor hagyja ki a következő utasítást. SNE AB – Hasonlítsa össze a forrást a célállomással, és ha nem egyezik, akkor hagyja ki a következő utasítást. SLT AB – Hasonlítsa össze a forrást a célállomással, és ha az első szám kisebb, mint a második, akkor hagyja ki a következő utasítást. LDP - betöltés p-space-ből (számot tölt be a szál személyes teréből) STP - mentés a p-space-be (szám mentése a szál személyes terébe) NOP – Nem történik semmi.Megszólítás (érv előtagok):
# - Szám. $ - Cím (elhagyható). * - Egy utasítás argumentum a címen. @ - B utasítás a címen. { - Egy utasítás argumentum a címen. Az argumentumot először csökkenti, majd veszi. < - B utasítás argumentum a címen. Az argumentumot először csökkenti, majd veszi. } - Egy utasítás argumentum a címen. A rendszer először az argumentumot veszi, majd növeli. > - B utasítás a címen. A rendszer először az argumentumot veszi, majd növeli. A címzési módok az utasítás részei, nem az argumentum. Ha az értékeket a *@{<}> karakterláncon keresztül veszi fel, a rendszer feltételezi, hogy ez egy cím.Módosítók (utasítás utáni javítások):
.A – Vegyünk egy argumentumot a forrásból a cél argumentumba. .B - B argumentum átvétele a forrásból a cél B argumentumába. .AB - Vegyünk egy argumentumot a forrásból a cél B argumentumába. .BA - B argumentum átvétele a forrásból A cél argumentumba. .F - AB argumentumok átvétele a forrásból a cél AB argumentumaiba. .X - AB argumentumok átvétele a forrásból a cél BA argumentumaiba. .I - Minden forrást vigyen a célba.