MIX

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

.

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

).

Содержание

Архитектура

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

.

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

.

Регистры

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

:
  • rA: Аккумуляторный регистр (accumulator)(полное слово (full word), пять байт со знаком);
  • rX: Расширение (extension) (полное слово, пять байт со знаком);
  • 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 слов хранения (каждый по 5 байт со знаком), адресуемых с 0 до 3999. Кроме того, есть множество устройств ввода и вывода

:

Инструкции

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

.

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

.

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

.

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

Содержимое поля по адресу [ ADDR + rIi(содержимое регистра I с индексом i) ] загружается в регистр

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

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

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

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

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

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

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

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(0 : 5) compare rA with memory[ ADDR + rIi ];
CMPX ADDR, i(0 : 5) compare rX with memory[ ADDR + rIi ];
CMP? ADDR, i(0 : 5) compare rI? with memory[ ADDR + rIi ];

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

JMP ADDR, i goto ADDR + rIi;
JSJ ADDR, i goto ADDR + rIi;
rJ не меняется!
JOV ADDR, i if (overflow) then
   overflow := false; goto ADDR + rIi;
JNOV ADDR, i if (no overflow) then
   goto ADDR + rIi;
else overflow := false;
JL, JE, JG ADDR, i
JGE, JNE, JLE ADDR, i
if (less, equal, greater) then goto ADDR + rIi;
if (no less, unequal, no greater) then goto ADDR + rIi;
JAN/JAZ/JAP ADDR, i
JANN/JANZ/JANP ADDR, i
if (rA < 0 or rA == 0 or rA > 0) then goto ADDR + rIi;
if (rA >= 0 or rA != 0 or rA <= 0) then goto ADDR + rIi;
JXN/JXZ/JXP ADDR, i
JXNN/JXNZ/JXNP ADDR, i
if (rX < 0 or rX == 0 or rX > 0) then goto ADDR + rIi;
if (rX >= 0 or rX != 0 or rX <= 0) then goto ADDR + rIi;
J?N/J?Z/J?P ADDR, i
J?NN/J?NZ/J?NP ADDR, i
if (rI? < 0 or rI? == 0 or rI? > 0) then goto ADDR + rIi;
if (rI? >= 0 or rI? != 0 or rI? <= 0) then goto ADDR + rIi;

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

MOVE ADDR, i(F) for(n = 0; n < F; n++, rI1++)
    memory[ ADDR + rIi + n ] := memory[ rI1 ];
SLA/SRA ADDR, i
SLAX/SRAX ADDR, i
SLC/SRC ADDR, i
shift rA to the left/right by ADDR+rIi bytes
shift (rA, rX) to the left/right by ADDR+rIi bytes
rotate (rA, rX) to the left/right by ADDR+rIi bytes
NOP do nothing;
HLT halt execution;

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

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

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

NUM rA := numerical value of characters in ( rA, rX );
CHAR ( rA, rX ) := character codes representing value of rA;

Примечания

Ссылки

Wikimedia Foundation. 2010.

Synonyms:

Look at other dictionaries:

  • -mix — mix·is; …   English syllables

  • Mix FM — is a radio name and format. It is given to certain radio stations around the world with that name, while having the mix format. Although some stations don t have the name Mix FM , they can still have the format of Mixed Hits a variety of… …   Wikipedia

  • mix — [mɪks] noun [countable usually singular] a group of different things combined together for a particular purpose: • If the investment manager picks the right mix of bonds, his total return should rise quickly. ˈasset ˌmix FINANCE a mix of… …   Financial and business terms

  • MIX — ist ein fiktiver, idealer Computer, welchen Donald E. Knuth in seinem Buch The Art of Computer Programming zur Illustration von Algorithmen nutzt. Der MIX Modellcomputer wird später durch den MMIX, eine moderne und erweiterte Version, ersetzt.… …   Deutsch Wikipedia

  • Mix — Mix, mixes, mixture or mixing may refer to: Contents 1 Science and mathematics 2 Music and radio 3 People …   Wikipedia

  • MIX (XM) — MIX Broadcast area Off Air branding = Today s Mix Slogan The Best Variety of the 80s, 90s, and Now! Frequency XM 12 First air date …   Wikipedia

  • MIX — is a hypothetical computer used in Donald Knuth rsquo;s monograph, The Art of Computer Programming ( TAOCP ). MIX rsquo;s model number is 1009, which was derived by combining the model numbers and names of several contemporaneous, commercial… …   Wikipedia

  • mix — mix·ite; mix·ol·o·gist; mix·ol·o·gy; mix·tec; mix·te·can; mix·ture; neph·ro·mix·i·um; pan·mix·ia; poly·mix·ia; pseu·do·mix·is; un·mix; ver·mix; ad·mix; mix·tie max·tie; pre·mix; re·mix; cac·o·mix·le; mix·able·ness; mix·te·ca; mix·te·co; mix·ter… …   English syllables

  • Mix 94.5 — FM Broadcast area Perth Frequency 1210 kHz AM (1941–1978) 1206 kHz AM (1978–1991) 94.5 MHz FM (1991–) First air date …   Wikipedia

  • mix — [miks] vt. [prob. back form. < mixt, mixed, taken as pp. < Fr mixte < L mixtus, pp. of miscere, to mix (> OE miscian) < IE base * meik > Gr meignynai, Welsh mysgu, to mix] 1. to put or blend together in a single mass, collection …   English World dictionary

  • Mix 99,7 — CHJM FM Langue Français Pays Canada Siège social 11760, 3e Avenue, Ville de St Georges, Québec Site Web http://www.mix997.com/ …   Wikipédia en Français

  • Mix It Up — Remix album by Jump5 Released April 6, 2004 (2004 04 06) …   Wikipedia

  • mix — mix, mingle, commingle, blend, merge, coalesce, amalgamate, fuse denote to combine or become combined with resulting diffusion or interpenetration of particles, parts, or elements. Mix, the most comprehensive of these terms, need not imply loss… …   New Dictionary of Synonyms

  • Mix 96.7 — is a station identifier that includes the following radio stations Contents 1 Radio stations 1.1 Canada 1.2 United States 2 See also …   Wikipedia

  • mix-up — n informal a mistake that causes confusion about details or arrangements mix up in ▪ Geoffrey rushed in late pleading a mix up in his diary. mix up between ▪ A council official blamed a mix up between departments. mix up over ▪ There was a mix up …   Dictionary of contemporary English