Node:Структура инструкции, Next:Команды загрузки, Previous:Набор инструкций MIX, Up:Набор инструкций MIX
Инструкции MIX кодируются словами со следующей структурой полей:
| Поле | fspec | Описание
|
| ADDRESS | (0:2) | Первые два байта и знак являются полем адреса. Вместе
с полем INDEX они обозначают используемый инструкцией адрес памяти.
|
| INDEX | (3:3) | Третий байт - индекс, обычно используемый для модификации
адреса1.
|
| MOD | (4:4) | Четвёртый байт используется либо как модификатор кода операции,
либо как спецификация поля.
|
| OPCODE | (5:5) | Последний (младший) байт слова определяет код операции.
|
или, графически,
------------------------------------------------ | 0 | 1 | 2 | 3 | 4 | 5 | ------------------------------------------------ | ADDRESS | INDEX | MOD | OPCODE | ------------------------------------------------
Для каждой инструкции M обозначает адрес памяти, получаемый
после модификации поля ADDRESS байтом INDEX, а V - содержимое
описываемого байтом MOD поля ячейки памяти с адресом M.
Например, предположим, что содержимое регистров и ячеек памяти MIX
таково:
[rI2] = + 00 63 [31] = - 10 11 00 11 22
где [n] обозначает содержимое n-й ячейки памяти, а [rI2]
- содержимое регистра rI22. Рассмотрим двоичную инструкцию
I = - 00 32 02 11 10. Для этой инструкции:
ADDRESS = - 00 32 = -32 INDEX = 02 = 2 MOD = 11 = (1:3) OPCODE = 10 M = ADDRESS + [rI2] = -32 + 63 = 31 V = [M](MOD) = (- 10 11 00 11 22)(1:3) = + 00 00 10 11 00
Обратите внимание, при вычислении V, используя слово и спецификацию
поля, мы применяем к выбранным MOD байтам левое заполнение, чтобы
получить в качестве результата целое слово.
В следующих подразделах мы присвои каждой инструкции MIX мнемонику
или символическое имя. Например, мнемоникой инструкции с OPCODE
10 будет LD2. Таким образом, вышеприведённую инструкцию можно
переписать:
LD2 -32,2(1:3)
а в общем случае:
MNEMONIC ADDRESS,INDEX(MOD)
Некоторые инструкции идентифицируются и полем OPCODE, и полем MOD. В этих случаях в символическом представлении MOD будет отсутствовать. Если ADDRESS или INDEX равны нулю, они также могут быть опущены. Наконец, значение MOD по умолчанию составляет (0:5) (означающее всё слово).
Реальный адрес памяти, на который ссылается инструкция,
получается добавлением к ADDRESS значения регистра rI, на
который ссылается INDEX.
В общем случае, [X]
будет обозначать содержимое сущности X. Так, по определению,
V = [M](MOD).
Node:Команды ввода/вывода, Next:Команды преобразования, Previous:Команды перехода, Up:Набор инструкций MIX
Как объясняется в предыдущих разделах (see Архитектура MIX), компьютер MIX может взаимодействовать с большим количеством блочных устройств. Для этого в вашем распоряжении имеются следующие инструкции:
IN
OUT
IOC
JRED
JBUS
Во всех вышеперечисленных инструкциях значение MOD должно быть
в диапазоне 0-20, поскольку оно обозначает целевое устройство операции.
Инструкция IOC имеет смысл только для ленточных устройств
(MOD = 0-7 или 20): она сдвигает маркер чтения/записи на число
слов, заданное M (если оно равно нулю, лента перематывается на
начало)1.
В оригинальном определении Кнута доступны и другие управляющие операции, но при реализации блочных устройств дисковыми файлами, как это сделано в эмуляторе MDK, они не имеют смысла. По тем же причинам устройства MDK всегда готовы к работе, поскольку все операции ввода/вывода производятся посредством синхронных системных вызовов.
Node:Инструкции и команды, Previous:Указатель понятий, Up:Top
About...: Меню и строка статуса
ADD: Арифметические команды
ALF: Директивы MIXAL
cabp: Команды отладки
cbp: Команды отладки
cbpa: Команды отладки
cbpc: Команды отладки
cbpm: Команды отладки
cbpo: Команды отладки
cbpr: Команды отладки
Change font: Меню и строка статуса
CHAR: Команды преобразования
Clear breakpoints: Меню и строка статуса
CMPA: Команды сравнения
CMPi: Команды сравнения
CMPX: Команды сравнения
Colors...: Меню и строка статуса
compile: Файловые команды
Compile...: Меню и строка статуса
CON: Директивы MIXAL
DECA: Команды пересылки адреса
DECi: Команды пересылки адреса
DECX: Команды пересылки адреса
Devices: Меню и строка статуса
Devices dir...: Меню и строка статуса
Device output...: Меню и строка статуса
DIV: Арифметические команды
edit: Файловые команды
Edit...: Меню и строка статуса
END: Директивы MIXAL
ENNA: Команды пересылки адреса
ENNi: Команды пересылки адреса
ENNX: Команды пересылки адреса
ENTA: Команды пересылки адреса
ENTi: Команды пересылки адреса
ENTX: Команды пересылки адреса
EQU: Директивы MIXAL
Exit: Меню и строка статуса
External programs...: Меню и строка статуса
help: Команды
HLT: Прочие команды
IN: Команды ввода/вывода
INCA: Команды пересылки адреса
INCi: Команды пересылки адреса
INCX: Команды пересылки адреса
IOC: Команды ввода/вывода
JAN: Команды перехода
JANN: Команды перехода
JANP: Команды перехода
JANZ: Команды перехода
JAP: Команды перехода
JAZ: Команды перехода
JBUS: Команды ввода/вывода
JE: Команды перехода
JG: Команды перехода
JGE: Команды перехода
JiN: Команды перехода
JiNN: Команды перехода
JiNP: Команды перехода
JiNZ: Команды перехода
JiP: Команды перехода
JiZ: Команды перехода
JL: Команды перехода
JLE: Команды перехода
JMP: Команды перехода
JNE: Команды перехода
JNOV: Команды перехода
JOV: Команды перехода
JRED: Команды ввода/вывода
JSJ: Команды перехода
JXN: Команды перехода
JXNN: Команды перехода
JXNP: Команды перехода
JXNZ: Команды перехода
JXP: Команды перехода
JXZ: Команды перехода
LDA: Команды загрузки
LDAN: Команды загрузки
LDi: Команды загрузки
LDiN: Команды загрузки
LDX: Команды загрузки
LDXN: Команды загрузки
load: Файловые команды
Load...: Меню и строка статуса
MIX: Меню и строка статуса
mix-add-break-hook: Ловушки
mix-add-cond-break: Ловушки
mix-add-global-post-hook: Ловушки
mix-add-global-pre-hook: Ловушки
mix-add-post-hook: Ловушки
mix-add-pre-hook: Ловушки
mix-cell: Дополнительные функции ВМ
mix-cmp: Дополнительные функции ВМ
mix-ddir: Дополнительные функции ВМ
mix-lap-time: Дополнительные функции ВМ
mix-last-result: Оболочка mixvm
mix-loc: Дополнительные функции ВМ
mix-over: Дополнительные функции ВМ
mix-pmem: Оболочка mixvm
mix-preg: Оболочка mixvm
mix-prog-name: Дополнительные функции ВМ
mix-prog-path: Дополнительные функции ВМ
mix-prog-time: Дополнительные функции ВМ
mix-reg: Дополнительные функции ВМ
mix-set-cell!: Дополнительные функции ВМ
mix-set-cmp!: Дополнительные функции ВМ
mix-set-over!: Дополнительные функции ВМ
mix-set-reg!: Дополнительные функции ВМ
mix-sover: Оболочка mixvm
mix-src-line: Дополнительные функции ВМ
mix-src-line-no: Дополнительные функции ВМ
mix-src-path: Дополнительные функции ВМ
mix-sreg: Оболочка mixvm
mix-up-time: Дополнительные функции ВМ
mix-vm-break?: Дополнительные функции ВМ
mix-vm-cond-break?: Дополнительные функции ВМ
mix-vm-empty?: Дополнительные функции ВМ
mix-vm-error?: Дополнительные функции ВМ
mix-vm-halted?: Дополнительные функции ВМ
mix-vm-loaded?: Дополнительные функции ВМ
mix-vm-running?: Дополнительные функции ВМ
mix-vm-status: Дополнительные функции ВМ
MIXAL: Меню и строка статуса
mixvm-cmd: Оболочка mixvm
mixvm-status: Дополнительные функции ВМ
MOVE: Прочие команды
MUL: Арифметические команды
next: Команды отладки
Next: Меню и строка статуса
NOP: Прочие команды
NUM: Команды преобразования
One window: Меню и строка статуса
ORIG: Директивы MIXAL
OUT: Команды ввода/вывода
pall: Команды состояния
pasm: Команды конфигурирования
pbt: Команды отладки
pc: Команды состояния
pddir: Команды конфигурирования
pedit: Команды конфигурирования
pflags: Команды состояния
pline: Команды отладки
pmem: Команды состояния
pprog: Файловые команды
preg: Команды состояния
prompt: Команды конфигурирования
psrc: Файловые команды
pstat: Команды состояния
psym: Команды отладки
ptime: Команды конфигурирования
quit: Файловые команды
Run: Меню и строка статуса
run: Файловые команды
sasm: Команды конфигурирования
Save: Меню и строка статуса
Save on exit: Меню и строка статуса
sbp: Команды отладки
sbpc: Команды отладки
sbpm: Команды отладки
sbpo: Команды отладки
sbpr: Команды отладки
scmf: Команды Scheme
scmp: Команды состояния
sddir: Команды конфигурирования
sedit: Команды конфигурирования
SLA: Команды сдвига
SLAX: Команды сдвига
SLC: Команды сдвига
slog: Команды конфигурирования
smem: Команды состояния
sover: Команды состояния
spba: Команды отладки
Split windows: Меню и строка статуса
SRA: Команды сдвига
SRAX: Команды сдвига
SRC: Команды сдвига
sreg: Команды состояния
ssym: Команды отладки
STA: Команды запоминания
STi: Команды запоминания
stime: Команды конфигурирования
STJ: Команды запоминания
strace: Команды отладки
STX: Команды запоминания
STZ: Команды запоминания
SUB: Арифметические команды
Symbols...: Меню и строка статуса
Toolbar(s): Меню и строка статуса
w2d: Команды отладки
weval: Команды отладки
mixasm, ассемблер MIXAL
mixvm, эмулятор компьютера MIX
gmixvm, виртуальная машина на основе GTK
mixguile, виртуальная машина на основе Scheme
mixasm, ассемблер MIXAL
mixvm, эмулятор компьютера MIX
gmixvm, виртуальная машина на основе GTK
mixguile, виртуальная машина на основе Scheme