Игры настоящих кодеров 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. Я даю всего одну ссылку, но там ты найдешь все, что тебе нужно: |