Бой в памяти
Бой в памяти (англ. Core War) — разновидность компьютерной игры «Дарвин» разработанная А. К. Дьюдни. Статьи, посвящённые игре, публиковались в журнале Scientific American в 1984—1987, в колонке Computer Recreations (Занимательный компьютер). Игра вызвала значительный интерес у читателей и, в последствии было основано международное общество International Core War Society со штаб-квартирой в США и отделениями во многих странах мира, включая СССР. Также было разаработано несколько стандартов, описывающих правила игры. Разработкой «Боя в памяти» Дьюдни побудила история о двух противоборствующих программах CREEPER и REAPER (см. компьютерный вирус). Обстоятельства разработки CREEPER/REAPER дошли до Дьюдни в несколько искажённом виде, так по словам Р. Томлинсона, ни заражения ARPANet, ни «поединка» между двумя программами в действительности не было.
В данной игре игроки разрабатывают компьютерные программы на специальном языке программирования, похожем на ассемблер — Redcode. Программы размещаются в циклически замкнутом участке памяти (core), состоящей из 8000 ячеек и зацикленной в кольцо. Каждая команда занимает одну ячейку. Redcode-программы работают под управлением MARS (англ. Memory Array Redcode Simulator — Симулятор Массива Памяти Redcode). Программы загружаются по случайным адресам в памяти.
Каждая программа может иметь несколько активных потоков, причём поток может порождать другие потоки с помощи инструкции SPL
. Потоки, принадлежащие одной программе, выполняются по очереди, поэтому скорость их выполнения обратно пропорциональна количеству потоков. Поток завершается, если пытается выполнить некорректную инструкцию. Программа, все потоки которой завершились, считается проигравшей.
Redcode
Ниже приведены команды языка Redcode в том виде, в котором они были опубликованы в статье А. Дьюдни:
Инструкция Аргументы Код Описание MOV A B 1 - переслать содержимое ячейки с адресом A в ячейку с адресом B ADD A B 2 - прибавить содержимое ячейки с адресом A к ячейке с адресом B SUB A B 3 - вычесть содержимое ячейки с адресом A из ячейке с адресом B JMP A 4 - передать управление на адрес A JMZ A B 5 - передать управление на адрес A, если содержимое ячейки с адресом B равно нулю JMG A B 6 - передать управление на адрес A, если содержимое ячейки с адресом B больше нуля DJZ A B 7 - вычесть единицу из содержимого ячейки с адресом B и передать управление на адрес A, если содержимое ячейки с адресом B равно нулю CMP A B 8 - сравнить содержимое ячеек с адресами A и B, если они не равны, пропустить следующую инструкцию SPL B 9 - породить новый поток по адресу B DAT B 0 - неисполняемое выражение, B — данные. При попытки выполнения программа останавливается
Ссылки
Статьи
- Alexander Dewdney "In the game called Core War hostile programs engage in a battle of bits", Scientific American, 1984, v.250, N 5, pp. 15-19
- Alexander Dewdney "A Core War bestiary of viruses, worms and other threats to computer memories", Scientific American, 1985, v.252, N 3, pp. 14-19
- Alexander Dewdney "A program called MICE nibbles its way to victory at the first Core War tournament", Scientific American, 1987, v.256, N 1, pp. 8-11
- Alexander Dewdney "Of worms, viruses and Core War", Scientific American, 1989, v.260, N 3, pp. 90-93
- "Annotated Draft of the Proposed 1994 Core War Standard" version 3.2
Сайты
- The Corewar Info Page
- Руководство для начинающих
- Corewars — King Of The Hill!
- pMars — стандартный симулятор