Memóriaháború a Mátrixban
A memóriaháború gyökerei egészen 1984-ig nyúlnak vissza, amikor a Scientific American magazin (itthon Tudomány néven volt kapható) egy érdekes, elgondolkodtató cikket közölt A. K. Dewdney tollából.
A "Számítógépes észjáték" cikksorozatban Dewdney egy olyan harci játékot mutatott be, amelyben számítógépes programok küzdenek egymással életre-halálra. Szó szerint, ugyanis a szoftverek egyetlen célja a másik elpusztítása. A játék az azóta eltelt évek során számos változáson ment keresztül, de az alapkoncepciója ugyanaz maradt. Ezt szeretnénk most bemutatni.
A memóriaháború (Core War) programjait egy speciális assembly nyelven írják, amely a Redcode nevet viseli. Ezeket a programokat a MARS (Memory Array Redcode Simulator) futtatja. A harcosok küzdőtere a MARS által biztosított virtuális aréna, amely gyakorlatilag egy véges memóriaterületet szimbolizál. A programoknak ezen a memóriaterületen kell kivívniuk a győzelmet az ellenséges program teljes megsemmisítésével.
A harci programok mindegyike egy véletlenszerűen kiválasztott memóriacímen kezdi meg a csatát, és akkor pusztul el, ha nem végrehajtható utasításra "lép rá". A Redcode nyelv összesen 11 egyszerű utasítást tartalmaz és négyféle címzési módot ismer. Minden címzés a pillanatnyilag végrehajtott utasítés címéhez képest relatív. A MARS szimulátor felváltva hajtja végre a harcosok programsorait.
[oldal:Egy egyszerű harcos, az Imp]
Az egyik legegyszerűbb Redcode harcos az "Imp", amelyet Dewdney is leír 1984-es cikkében. Az Imp mindösszes egyetlen utasításból áll:-
MOV 0,1
-
MOV 0,1
MOV 0,1
Az Imp nagyon gyorsan terjed, azonban képességei korlátozottak. Amennyiben olyan memóriacímre írja be magát, amelyet az ellenséges program hajt végre, az ellenséges program is azon nyomban Imppé változik. Legfeljebb akkor érhető el siker ezzel a harcossal, ha sikerül felülírni az ellenség valamilyen adatát, vagy olyan kárt okozni, ami után az ellenséges program saját magát semmisíti meg.
Az eredeti cikkben szereplő másik program a "Bomber". A Bomber nem végrehajtható utasításokkal árasztja el a memóriát, és kis szerencsével sikerül felülírnia az ellenséges program valamely sorát is. Mint már említettük, a nem végrehajtható utasítás végrehajtása jelenti a programok halálát.
Korábban már volt róla szó, hogy a memóriaháború szabályai és a Redcode utasítások is átalakultak az idők során. Az egyik legfontosabb újítás a többszálúság engedélyezése volt, azaz a harci programok egyszerre több utasítást is végrehajthattak. Egy program elpusztításához az összes szál elpusztítása szükségeltetik. Lássunk egy példát:
-
SPL 0
MOV 0,1
-
SPL 0
MOV 0,1
-
SPL 0
MOV 0,1
MOV 0,1
[oldal:Háború az interneten]
Általánosságban elmondható, hogy a harci programok több különféle stratégiát alkalmaznak, legalábbis ezekből indulnak ki a tervezők. Ezek közül az első a már korábban említett Bomber. A hatásos bombázáshoz minél nagyobb memóriaterületet kell bombázni, vigyázva, hogy a program ne tegyen kárt saját magában. Hogy a bombák között igazából mekkora rés az ideális, az az ellenségtől függ, úgyhogy egy Bomber sikeres alkalmazásához szerencse is szükséges.A második taktika a letapogatás. A MARS a virtuális csatamező inicializálásakor a memóriacímeket egy adott értékkel tölti fel. Ha a programuk elkezdi keresni az ettől eltérő tartalmú memóriacímeket, akkor jó eséllyel ráakadhat az ellenséges programra, és egy jól irányzott bombázással megsemmisítheti azt.
Érdekes harci program még a replikátor, amely saját magát új memóriacímre tudja másolni. Ezek gyakorlatilag mozgó bombáknak tekinthetők.
Az egyik legérdekesebb harcos a Vámpír. Mivel a memóriát JMP (feltétel nélküli ugrás) utasításokkal is lehet bombázni, az ellenséges programot egy JMP-vel könnyen rábírhatjuk, hogy teljesen ártalmatlan kódot hajtson végre. A Vámpír egyik különösen kegyetlen alkalmazása, amikor az ellenséges programot egy JMP-vel elfogjuk és olyan címre irányítjuk, ahol SPL utasításokkal több szálra bontjuk ezzel rendkívül lelassítva a futását. Közben pedig elkezdjük bombázni a memóriát... Sajnos a vámpíroknak az a hátránya, hogy letapogatással könnyen a nyomára lehet akadni a JMP-bombáknak.
A memóriaháború harcosai jellemzően a fenti taktikákat kombinálják és ma már nem ritka a 80-100 utasításból álló harci program sem. A világ összes táján rendeznek memóriaháború-bajnokságot, és természetesen az Interneten is vannak helyek, ahol a versenyzők összemérhetik a tudásukat.
Ha valaki kedvet kapott a memóriaháborúhoz, javaslom, látogassa meg a KOTH.org oldalt, amely nem csak hadszíntér, hanem a memóriaháborúval kapcsolatos leírások és programok gyűjteménye is. Letölthető innen a pMARS (portable MARS) szimulátor Windows, Mac, Amiga és DOS-verziója, bővebben olvashatunk a játék történetéről és természetesen a harci programok nyelvének, a Redcode-nak is megtaláljuk a részletes leírását.