Бой в памяти

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 193.178.237.226 (обсуждение) в 19:45, 28 сентября 2005 (Redcode). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Бой в памяти - разновидность компьютерной игры "Дарвин" разработанная А. К. Дьюдни. Статьи посвященные игре публиковались в журнале Scientific American в 1984-87 годах, в колонке Computer Recreations (Занимательный компьютер). Игра вызвала значительный интерес у читателей и, в последствии было основано международное общество International Core War Society со штаб-квартирой в США и отделениями во многих странах мира, включаяя СССР. Также было разаработано несколько стандартов, описывающих правила игры. Разработкой "Боя в памяти" Дьюдни побудила история о двух противоборствующих программах CREEPER и REAPER (см. компьютерный вирус). Обстоятельства разработки CREEPER/REAPER дошли до Дьюдни в несколько искаженном виде, так по словам Р. Томлинсона в действительности ни заражения ARPANet, ни "поединка" между двумя не было.

В данной игре игроки разрабатывают компьютерные программы на специальном языке программирования, похожем на ассемблер - Redcode. Программы размещаются в циклически замкнутом участке памяти (core), состоящей из 8000 ячеек. Каждая команда занимает одну ячейку. Redcode-программы работают под управлением MARS (Memory Array Redcode Simulator - Симулятор Массива Памяти Redcode). Программы загружаются по случайным адресам в памяти.

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, если они не равны - пропустит следующую инструкцию
 DAT   B 0  - неисполняемое выражение, B - данные

Ссылки