Интернет магазин китайских планшетных компьютеров



Компьютеры - MIX

08 июня 2011





это гипотетический компьютер, использованный в монографии Дональда Кнута, «Искусство программирования». Номер модели компьютера MIX — 1009, происходит от комбинации номеров и названий коммерческих моделей машин, современных времени написания книги и показавшихся автору значимыми. Кроме того, «MIX» равняется 1009 в Римской системе счисления.

MIX 1960-х был заменён новой компьютерной архитектурой, MMIX, которая будет включена в ожидаемой редакции TAOCP. Программные реализации MIX и MMIX архитектур были разработаны различными авторами и свободно доступны.

Архитектура

MIX представляет собой гибридный двоично-десятичный компьютер. Когда компьютер программируется в бинарном режиме, каждый байт имеет 6 бит. В десятичном режиме каждый байт имеет 2 десятичных знака. Байты сгруппированы в слова по пять байт со знаком. Большинство программ, написанных для MIX, будут работать как в бинарном, так и в десятичном режимах, пока они не попытаются сохранить значение больше 63 в одном байте.

Слово изменяется в пределах от −1.073.741.823 до 1.073.741.823 в бинарном режиме и от −9.999.999.999 до 9.999.999.999 в десятичном режиме. В компьютере MIX различаются числа −0 и +0, чего нет на современных компьютерах, в которых есть только одно представление нуля, но количество отрицательных чисел, которые могут быть представлены определённым числом бит, на единицу больше количества положительных чисел.

Регистры

В компьютере MIX 9 регистров:

  • rA: Аккумуляторный регистр;
  • rX: Расширение;
  • rI1, rI2, rI3, rI4, rI5, rI6: Индексные регистры;
  • rJ: Адрес перехода.

Полагается, что байт имеет, как минимум, 6 бит. Большинство инструкций могут указывать, какие из полей регистра требуется изменить, используя суффикс в форме. Нулевое поле — однобитовый знак.

MIX также записывает, вызвала ли предыдущая операция переполнение и один из трёх индикаторов. На диаграмме ниже каждый регистр показан разделённым на свои поля.

± A1 A2 A3 A4 A5
± X1 X2 X3 X4 X5
+ J4 J5
OV?
<=>?
± I1.4 I1.5
± I2.4 I2.5
± I3.4 I3.5
± I4.4 I4.5
± I5.4 I5.5
± I6.4 I6.5

Память и ввод/вывод

Компьютер MIX имеет 4000 слов хранения, адресуемых с 0 до 3999. Кроме того, есть множество устройств ввода и вывода:

  • Магнитофонные устройства;
  • Диск или барабанные устройства;
  • Устройство чтения карт;
  • Карточный перфоратор;
  • Построчный принтер;
  • Пишущая машинка;
  • Перфолента.

Инструкции

Каждая машинная инструкция в памяти занимает одно слово и состоит из 4 частей: адрес в памяти для чтения или записи, указание индексного регистра для добавления к адресу, модификация, определяющая, какие части регистра или ячейки памяти будут прочитаны или изменены, и код операции. Все коды операции имеют словесные обозначения.

Программы MIX часто используют самомодифицирующийся код, в частности, чтобы вернуться из подпрограммы, так как в MIX отсутствует автоматический стек подпрограмм.

Программы для компьютера MIX обычно пишутся на языке MIXAL.

Команды загрузки

Содержимое поля по адресу загружается в регистр.

LDA ADDR, i rA := memory; загрузить в A
LDX ADDR, i rX := memory; загрузить в X
LDi ADDR, i rIi := memory; загрузить в I с индексом i
LDAN ADDR, i rA := -memory; загрузить в A с обратным знаком
LDXN ADDR, i rX := -memory; загрузить в X с обратным знаком
LDiN ADDR, i rIi := -memory; загрузить в Ii с обратным знаком

Команды записи в память

Записывает содержимое регистра в ячейку памяти с адресом

STA ADDR, i memory := rA; записать A
STX ADDR, i memory := rX; записать X
STi ADDR, i memory := rIi; записать Ii
STJ ADDR, i memory := rJ; записать J
STZ ADDR, i memory := 0; обнулить содержимое ячейки

Арифметические команды

ADD ADDR, i rA := rA + memory; сложение
SUB ADDR, i rA := rA - memory; вычитание
MUL ADDR, i  := rA * memory; умножение
DIV ADDR, i rA := int / memory);
rX := % memory;
деление

Команды операций с адресами

ENTA ADDR, i rA := ADDR + rIi;
ENTX ADDR, i rX := ADDR + rIi;
ENT? ADDR, i rI? := ADDR + rIi;
ENNA ADDR, i rA := - ADDR - rIi;
ENNX ADDR, i rX := - ADDR - rIi;
ENN? ADDR, i rI? := - ADDR - rIi;
INCA ADDR, i rA := rA + ADDR + rIi;
INCX ADDR, i rX := rX + ADDR + rIi;
INC? ADDR, i rI? := ADDR + rIi;
DECA ADDR, i rA := rA - ADDR - rIi;
DECX ADDR, i rX := rX - ADDR - rIi;
DEC? ADDR, i rI? := rI? - ADDR - rIi;

Команды сравнения

CMPA ADDR, i compare rA with memory;
CMPX ADDR, i compare rX with memory;
CMP? ADDR, i compare rI? with memory;

Команды перехода

JMP ADDR, i goto ADDR + rIi;
JSJ ADDR, i goto ADDR + rIi;
rJ не меняется!
JOV ADDR, i if then
   overflow := false; goto ADDR + rIi;
JNOV ADDR, i if then
   goto ADDR + rIi;
else overflow := false;
JL, JE, JG ADDR, i
JGE, JNE, JLE ADDR, i
if then goto ADDR + rIi;
if then goto ADDR + rIi;
JAN/JAZ/JAP ADDR, i
JANN/JANZ/JANP ADDR, i
if then goto ADDR + rIi;
if then goto ADDR + rIi;
JXN/JXZ/JXP ADDR, i
JXNN/JXNZ/JXNP ADDR, i
if then goto ADDR + rIi;
if then goto ADDR + rIi;
J?N/J?Z/J?P ADDR, i
J?NN/J?NZ/J?NP ADDR, i
if then goto ADDR + rIi;
if then goto ADDR + rIi;

Другие команды

MOVE ADDR, i for
    memory := memory;
SLA/SRA ADDR, i
SLAX/SRAX ADDR, i
SLC/SRC ADDR, i
shift rA to the left/right by ADDR+rIi bytes
shift to the left/right by ADDR+rIi bytes
rotate to the left/right by ADDR+rIi bytes
NOP do nothing;
HLT halt execution;

Команды ввода-вывода

IN ADDR, i read in one block from input unit F
into memory onwards;
OUT ADDR, i output one block to unit F
from memory onwards;
IOC ADDR, i send control instruction to i/o unit F;
JRED ADDR, i if then goto ADDR + rIi;
JBUS ADDR, i if then goto ADDR + rIi;

Команды преобразования

NUM rA := numerical value of characters in;
CHAR  := character codes representing value of rA;


Просмотров: 663


<<< MOS Technology 6502