Node:Поддерживаемые платформы, Previous:Специальные флаги конфигурации, Up:Установка MDK



Поддерживаемые платформы

GNU MDK тестировался на следующих платформах:

Вероятно, MDK будет работать на всех платформах GNU/Linux и BSD. Если вы пытаетесь использовать на одной из не упомянутых выше платформ, пожалуйста, пошлите письмо автору.


Footnotes

  1. Примечание: на этой платформе Кристоф тестировал только mixvm и mixasm, с использованием gcc 2.95.3-2, GLIB 1.2.10 и GNUreadline 4.1-2. Он сообщил о том, что при первой попытке история команд не работала. Если вы обнаружите проблемы с функционированием history/readline, попробуйте использовать более новую или установленную вручную версию readline.


Node:Команды пересылки адреса, Next:, Previous:Арифметические команды, Up:Набор инструкций MIX



Команды пересылки адреса

В этих инструкциях M (адрес после модификации) используется как число, а не как адрес ячейки памяти. Соответственно, M может иметь любое допустимое для слова значение (т.е. не ограничено диапазонов адресов памяти 0-3999).

ENTA
Загрузить M в [rA]. OPCODE = 48, MOD = 2. rA <- M.
ENTX
Загрузить M в [rX]. OPCODE = 55, MOD = 2. rX <- M.
ENTi
Загрузить M в [rIi]. OPCODE = 48 + i, MOD = 2. rIi <- M.
ENNA
Загрузить -M в [rA]. OPCODE = 48, MOD = 3. rA <- -M.
ENNX
Загрузить -M в [rX]. OPCODE = 55, MOD = 3. rX <- -M.
ENNi
Загрузить -M в [rIi]. OPCODE = 48 + i, MOD = 3. rIi <- -M.
INCA
Увеличить [rA] на M. OPCODE = 48, MOD = 0. rA <- rA + M.
INCX
Увеличить [rX] на M. OPCODE = 55, MOD = 0. rX <- rX + M.
INCi
Увеличить [rIi] на M. OPCODE = 48 + i, MOD = 0. rIi <- rIi + M.
DECA
Уменьшить [rA] на M. OPCODE = 48, MOD = 1. rA <- rA - M.
DECX
Уменьшить [rX] на M. OPCODE = 55, MOD = 0. rX <- rX - M.
DECi
Уменьшить [rIi] на M. OPCODE = 48 + i, MaOD = 0. rIi <- rIi - M.

В вышеперечисленных инструкциях поле ADDRESS (модифицированное) играет роль непосредственного операнда, и позволяет напрямую устанавливать содержимое регистров MIX без перенаправления к ячейкам памяти (в реальных процессорах это означает, что они выполняются быстрее, чем обсуждавшиеся ранее инструкции, операнды которых берутся из памяти). Так, если вы хотите поместить в rA значение -2000 (- 00 00 00 31 16), вы можете использовать двоичную инструкцию + 31 16 00 03 48, или, символически,

ENNA 2000

В сочетании с командами запоминания (STA, STX и т.д.) эти инструкции позволяют устанавливать конкретные значения содержимого ячеек памяти.

Имейте в виду, что в командах пересылки адреса поле MOD - не спецификатор поля, а служит для определения (вместе с OPCODE) конкретной выполняемой операции.

Node:Временные характеристики, Previous:Прочие команды, Up:Набор инструкций MIX



Временные характеристики

При написании программ на MIXAL (или любых других программ) нас часто интересует время их выполнения. Приблизительно, нас интересует ответ на вопрос: как долго будет выполняться программа? Конечно, это время выполнения является функцией от объёма входных данных, и ответ на наш вопрос обычно даётся в виде асимптотического поведения функции от объёма входных данных. В любом случае, для вычисления асимпотического приближения нам нужна мера времени выполнения одной инструкции на нашем (виртуальном) процессоре. Поэтому с каждой инструкцией MIX связано время выполнения, заданное в относительных единицах (в реальных компьютерах значение этой единицы зависит от аппаратной конфигурации). Когда наша виртуальная машина MIX выполняет программы, она может (по желанию) выводить значение времени выполнения на основе времени выполнения каждой отдельной инструкции.

В следующей таблице приведены значения времени выполнения (в вышеупомянутых относительных единицах) инструкций MIX.

NOP 1 ADD 2 SUB 2 MUL 10
DIV 12 NUM 10 CHAR 10 HLT 10
SLx 2 SRx 2 LDx 2 STx 2
JBUS 1 IOC 1 IN 1OUT 1
JRED 1 Jx 1 INCx 1 DECx 1
ENTx 1 ENNx 1 CMPx 1 MOVE 1+2F

В таблице 'F' обозначает число перемещаемых блоков (заданное полем FSPEC инструкции), SLx и SRx - сокращения для операций побайтового сдвига, LDx обозначает все операции загрузки, STx - все операции запоминания, Jx обозначает все операции перехода, и т.д. для остальный сокращений.

Node:Команды конфигурирования, Next:, Previous:Команды состояния, Up:Команды



Команды конфигурирования

Этот раздел описывает команды, позволяющие изменять поведение виртуальной машины. Эта конфигурация хранится в каталоге MDK ~/.mdk.

Как можно видеть из описания, некоторые команды в качестве побочного эффекта выводят на стандартный вывод информационные сообщения (например, load выводит сообщение, информирующее о начальном адресе загруженной программы). Эти сообщения могут быть включены и отключены командой slog:

slog on|off команда конфигурирования
Включает/выключает ведение лога информационных сообщений. Имейте в виду, что сообщения об ошибках, а также сообщения о состоянии, требующие использования команд, предварённых p (preg, pmem и т.п.) выводятся всегда.

stime on|off команда конфигурирования
ptime команда конфигурирования
Команда stime включает/выключает вывод статистики времени выполнения, а ptime выводит текущую статистику:
MIX > ptime
Elapsed time: 10 /Total program time: 11 (Total uptime: 11)
MIX >

sedit TEMPLATE команда конфигурирования
pedit команда конфигурирования
sedit указывает команду, используемую для редактирования исходных файлов на MIXAL командой edit. TEMPLATE должен содержать управляющие литеры %s, отмечающие место, куда вставляется имя исходного файла. Например, если вы введёте:
MIX > sedit emacsclient %s
MIX >

при выполнении в mixvm команды edit foo.mixal будет вызываться команда операционной системы emacsclient foo.mixal.

pedit выводит текущее значение шаблона команды редактирования.

sasm TEMPLATE команда конфигурирования
pasm команда конфигурирования
sasm указывает команду, используемую для компиляции исходных файлов на MIXAL командой compile. template должен содержать управляющие литеры %s, отмечающие место, куда вставляется имя исходного файла. Например, если вы введёте:
MIX > sasm mixasm -g -l %s
MIX >

при выполнении в mixvm команды compile foo.mixal будет вызываться команда операционной системы mixasm -g -l foo.mixal.

pasm выводит текущее значение шаблона команды компиляции.

sddir DIRNAME команда конфигурирования
pddir команда конфигурирования
Устройства MIX (see Устройства) реализованы в виде обычных файлов, находящися по умолчанию в каталоге ~/.mdk. Команда sddir позволяет указать иное расположение этих файлов, а pddir выводит текущий каталог устройств.

Наконец, вы можете изменить командное приглашение по умолчанию (MIX > ) командой prompt:

prompt PROMPT команда конфигурирования
Изменяет командное приглашение на prompt. Если вы хотите поместить в конце приглашения пробел(ы), заключите prompt в двойные кавычки (например, prompt ">> ").