Node:Команды запоминания, Next:Арифметические команды, Previous:Команды загрузки, Up:Набор инструкций MIX
Следующие инструкции обратны операциям загрузки - они используются для запоминания поля регистра в памяти. Здесь MOD обозначает поле ячейки памяти, которое должно быть перезаписано байтами из регистра. Берутся самые правые байты регистра.
STA
V <- rA.
STX
V <- rX.
STi
V <- rIi.
STJ
V <- rJ.
STZ
V <- 0.
Для примера, рассмотрим инструкцию STA 1200(2:3). Она
заставит MIX взять байты 4 и 5 регистра A и скопировать и в байты
2 и 3 ячейки памяти 1200 (помните, что в этих инструкциях MOD задаёт
поле адреса памяти). Остальные байты ячейки памяти сохраняют своё
значение. Так, если до выполнения инструкции:
[1200] = - 20 21 22 23 24 [rA] = + 01 02 03 04 05
то в конце концов будет:
[1200] = - 20 04 05 23 24 [rA] = + 01 02 03 04 05
Ещё один пример: ST2 1000(0) установит знак [1000]
равным знаку [rI2].
Node:Интерактивный режим, Next:Отладка, Previous:Неинтерактивный режим, Up:Запуск программы
Чтобы войти в интерактивный режим виртуальной машины MIX, введите:
mixvm <RET>
в приглашении командной строки. Вы попадёте в командную оболочку
mixvm и увидите следующее приглашение:
MIX >
Виртуальная машина инициализирована и готова к вашим командам. Командная
оболочка mixvm использует GNU readline, и поэтому в вашем
распоряжении находятся дополнение команд (<TAB>) и возиожности
истории команд, равно как и другие способы редактирования командных
строк, общие для всех использующих эту библиотеку утилит (полное
описание средств редактирования строк readline см. в Command Line Editing.)
Обычно, первое, что вы захотите сделать, это загрузка в память
скомпилированной программы MIX. Это осуществляется командой load,
принимающей в качестве аргумента название загружаемого файла .mix.
Так, ввод
MIX > load hello <RET> Program loaded. Start address: 3000 MIX >
загрузит hello.mix в память виртуальной машины и установит
счётчик программы на адрес первой инструкции. Вы можете посмотреть
содержимое счётчика программы командой pc:
MIX > pc Current address: 3000 MIX >
После загрузки всё готово к запуску программы. Для этого, как вы, конечно,
догадались, служит команда run:
MIX > run Running ... MIXAL HELLO WORLD ... done Elapsed time: 11 /Total program time: 11 (Total uptime: 11) MIX >
Обратите внимание, что статистика времена более полна. Вы видите
прошедшее время выполнения (т.е. время выполнения инструкций после
последней точки останова), общее время выполнения программы до данного
момента (которое в нашем случае совпадает с прошедшим временем, поскольку
нет точек останова), и общее время работы виртуальной машины (вы можете
загружать и запускать несколько программ в одном сеансе)1. После выполнения программы счётчик
программы будет указывать на адрес слова, следующего за инструкцией
HLT. В нашем случае запрос значения счётчика программы после
завершения работы программы даст:
MIX > pc Current address: 3002 MIX >
Вы можете просмотреть содержимое ячейки памяти, передавая её адрес
в качестве аргумента команды pmem:
MIX > pmem 3001 3001: + 00 00 00 02 05 (0000000133) MIX >
и убедиться в том, что ячейка 3001 содержит двоичное представление
инструкции HLT. Также аргументом pmem может быть
диапазон адресов в виде ОТ-ДО:
MIX > pmem 3000-3006 3000: + 46 58 00 19 37 (0786957541) 3001: + 00 00 00 02 05 (0000000133) 3002: + 14 09 27 01 13 (0237350989) 3003: + 00 08 05 13 13 (0002118477) 3004: + 16 00 26 16 19 (0268542995) 3005: + 13 04 00 00 00 (0219152384) 3006: + 00 00 00 00 00 (0000000000) MIX >
Аналогичным образом вы можете просматривать содержимое регистров и
флагов MIX. Например, чтобы запросить содержимое регистра A вы
можете ввести:
MIX > preg A rA: + 00 00 00 00 00 (0000000000) MIX >
Используйте команду help, чтобы получить список всех доступных
команд и help КОМАНДА чтобы получить справку по конкретной
команде, например:
MIX > help run run Run loaded or given MIX code file. Usage: run [FILENAME] MIX >
Полный список доступных в приглашении MIX команд см. в mixvm. В следующем подразделе вы найдёте краткое описание команд, полезных для отладки программ.
Вывод
статистики времени может быть отключен командой timing
(see Команды конфигурирования).