Node:Команды запоминания, Next:, Previous:Команды загрузки, Up:Набор инструкций MIX



Команды запоминания

Следующие инструкции обратны операциям загрузки - они используются для запоминания поля регистра в памяти. Здесь MOD обозначает поле ячейки памяти, которое должно быть перезаписано байтами из регистра. Берутся самые правые байты регистра.

STA
Запомнить rA. OPCODE = 24, MOD = fspec. V <- rA.
STX
Запомнить rX. OPCODE = 31, MOD = fspec. V <- rX.
STi
Запомнить rIi. OPCODE = 24 + i, MOD = fspec. V <- rIi.
STJ
Запомнить rJ. OPCODE = 32, MOD = fspec. V <- rJ.
STZ
Запомнить ноль. OPCODE = 33, MOD = fspec. 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. В следующем подразделе вы найдёте краткое описание команд, полезных для отладки программ.


Footnotes

  1. Вывод статистики времени может быть отключен командой timing (see Команды конфигурирования).