Бой в памяти
Материал из Википедии — свободной энциклопедии
Бой в памяти (англ. Core War) — разновидность компьютерной игры «Дарвин» разработанная Александром К. Дьюдни. Помогал разрабатывать игру Дэвид Джонс (David Jones), студент кафедры информатики университета Западного Онтарио, где преподавал Дьюдни. Статьи, посвящённые игре, публиковались в журнале 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 — стандартный симулятор