«Бой в памяти»

В первоначальной версии«Бой в памяти» главной целью было защитить программу А от случайных попаданий «бомб», разбрасываемых боевой программой противника В. Если бы такая зашита была более или менее гарантирована, то на следующем этапе эволюции игры можно было бы приступить к созданию программ, способных отыскивать друг друга и проводить уже «прицельные» атаки, если можно так выразиться.

Пытаясь обеспечить гарантию защиты от случайных попаданий, я предложил в прошлой статье ввести еще одну команду где А — относительный адрес (прямой или косвенный) команды, которая должна быть защищена. Однократная попытка изменить содержимое ячейки с этим адресом будет заблокирована системой Марс, осуществляющей управление игрой. Однако следующая попытка сделать то же самое уже будет успешной. Мне кажется, что при помощи простого цикла каждая боевая программа может защитить свои команды от случайных бомб в течение достаточно длительного промежутка времени, чтобы успеть провести какое-то активное действие по отношению к программе- противнику. Такой защищающий программу цикл изображен на рисунке на с. 72. Он состоит из шести команд, четыре из которых выполняются при каждом прохождении через цикл. Таким образом, программа, состоящая из команд (включая команды, составляющие цикл), потребует выполнения 4 х команд, чтобы полностью обезопасить себя от однократного попадания. Однако такая защита едва ли будет эффективной против программы Карлик, которая производит два выстрела подряд по каждой ячейке памяти.

Эту команду можно применять и с другой целью, не предвиденной в первой статье, посвященной игре «Бой в памяти». С. Петерс изТимару, Новая Зеландия, и М. Дэрем из Уинстон- Салема, шт. Северная Дакота, независимо друг от друга придумали, как можно воспользоваться командой РСТ для проведения атакующих действий. Программа пол названием Карлик-ловушка разбрасывает по памяти нули, как обычно, но затем защищает каждый нуль, так что в соответствующую ячейку нельзя записать ничего другого. Это означает, что ничего не подозревающая программа противника может попасться в одну из ловушек в ходе перемещения на новое место. Команда, которая должна быть записана в ячейку, содержащую защищенный нуль, не окажет на эту ячейку никакого влияния. Позднее, когда процесс выполнения программы достигнет этой ячейки, программа погибнет, потому что нуль — это невыполняемая команда. Возможно, команду РСТ стоит включить в систему команд какой-нибудь из будущих версий игры «Бой в памяти», но пока я склонен воздержаться от этого в интересах простоты, которая является, пожалуй, пробным камнем любой игры.

 

0 Коментариев

Вы можете быть первым =)

Оставить коментарий