Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #35, ОКТЯБРЬ 2003 г.

Игры настоящих кодеров

Shen (_shen_@mail.ru)

Спецвыпуск Xakep, номер #035, стр. 035-054-7


imp+2667:

MOV 0, 2667 ; <--- 5

Ты помнишь, что концы поля боя замкнуты? Процесс №5 копирует команду MOV на 2667 инструкций дальше себя, а фактически, по адресу imp-2666, т.е. как раз по адресу процесса 6, который должен выполняться следующим! Теперь понятно, почему выбраны именно такие цифры (2666+2777+2777=8000)?

imp-2666:

MOV 0, 2667 ; <--- 6

JMP imp-2666

start SPL -1

SPL imp+2667

imp MOV 0, 2667

… ; <--- 7

imp+2667:

MOV 0, 2667

… ; <--- 8

Процесс №6 копирует MOV по адресу процесса №7, тот, в свою очередь, копирует MOV по адресу процесса №8 и т.д. Все, кольцо запущено! Теперь по полю боя медленно, но неумолимо движутся три Импа! К тому же, «Кольцо» лишено главного недостатка обычного Импа – неспособности убить врага! Почему? Помнишь, я говорил об «очереди процессов»? Если враг имеет один процесс против наших трех, происходит следующее: ImpRing переписывает врага инструкцией MOV, враг своим ходом выполняет ее и попадает на DAT #0, #0, «Кольцо» выполняет MOV – следующим ходом оно запишет на место DAT #0, #0 команду «MOV 0, 2667», ходит враг и выполняет инструкцию DAT. Т.е. медленное «Кольцо» просто не успевает подставить однопроцессному противнику команду! Если это плохо воспринимается на словах, возьми карандаш и бумажку и разыграй бой ImpRing’а и Wait’а – все сразу становится на свои места.

Что дальше?

Ты познакомился с несколькими распространенными техниками и освоил начала Redcode. С этими знаниями уже можно пытаться писать собственных бойцов, либо придумывая совершенно новые стратегии, либо комбинируя старые приемы. Ты видел, каких длинных объяснений потребовала программа из четырех строк (ImpRing), а представь, что есть бойцы, глядя на код которых, теряются даже бывалые ассемблерщики. А какие красивые и изощренные приемы были изобретены за двадцать лет! Чего только стоят Вампиры, которые раскидывают на поле боя ловушки-JMP’ы, приводящие своих жертв прямо в руки губителя! Так что разбирайся в премудростях Redcode – как знать, может, еще дождемся ICWS’2004 и сойдемся в бою на куске памяти величиной восемь тысяч инструкций.

P.S. Я даю всего одну ссылку, но там ты найдешь все, что тебе нужно:
http://directory.google.com/Top/Games/Video_Games/Simulation/Programming_Games/Core_War/

Назад на стр. 035-054-6  Содержание