MIX: различия между версиями

[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
+ {{сирота}} при помощи AWB
мНет описания правки
Строка 1:
{{сирота}}
 
'''MIX''' - — это гипотетический компьютер, использованный в монографии [[Дональд Кнут|Дональда Кнута]], ''Искусство программирования'' (The Art Of Computer Programming) (''TAOCP''). Номер модели компьютера MIX - — 1009, происходит от комбинации номеров и названий коммерческих моделей машин, современных времени написания книги и показавшихся автору значимыми. Кроме того, “MIX”«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 и +0, что не так на современных компьютерах, в которых есть только одно представление нуля, но число отрицательных чисел, которые могут быть представлены определенным числом бит, больше на единицу числа положительных чисел.
 
=== Регистры ===
Строка 17:
* '''rJ''': Адрес перехода (два байта, всегда положительный).
 
Полагается, что байт имеет, как минимум, 6 бит. Большинство инструкций могут указывать, какие из полей (байт) регистра требуется изменить, используя суффикс в форме (первый: последний). Нулевое поле - — однобитовый знак.
 
MIX также записывает, вызвала ли предыдущая операция переполение и один из трех индикаторов (меньше, равно или больше). На диаграмме ниже каждый регистр показан разделенным на свои поля.
Строка 85:
=== Память и ввод/вывод ===
Компьютер MIX имеет 4000 слов хранения (каждый по 5 байт со знаком), адресуемых с 0 до 3999. Кроме того, есть множество устройств ввода и вывода:
* Магнитофонные устройства(устройства 0 … 7);
* Диск или барабанные устройства (устройства 8 … 15);
* Устройство чтения карт (устройство 16);
* Карточный перфоратор (устройство 17);
* Построчный принтер (устройство 18);
* Пишущая машинка (устройство 19);
* Перфолента (устройство 20).
 
=== Инструкции ===
Каждая машинная инструкция в памяти занимает одно слово и состоит из 4 частей: адрес (2 байта со знаком) в памяти для чтения или записи, указание индексного регистра (1 байт, описывающий, который rI индексный регистр использовать) для добавления к адресу, модификация (1 байт), определяющая, какие части регистра или ячейки памяти будут прочитаны или изменены и код операции (1 байт). Все коды операции имеют словарные синонимы.
 
Программы MIX часто используют самомодифицирующийся код, в частности, чтобы вернуться из подпрограммы, так как в MIX отсутствует автоматических стек подпрограмм.
 
Программы для компьютера MIX обычно пишутся на языке [[MIXAL programming language|MIXAL]].
Строка 112:
|-
! LDAN ????,? (0:5)
| a := - — memory[???? + i[?]];
|-
! LDXN ????,? (0:5)
| x := - — memory[???? + i[?]];
|-
! LD?N ????,? (0:5)
| i[?] := - — memory[???? + i[?]];
|-
! STA ????,? (0:5)
Строка 139:
|-
! SUB ????,? (0:5)
| a := a - — memory[???? + i[?]];
|-
! MUL ????,? (0:5)
Строка 145:
|-
! DIV ????,? (0:5)
| a := int( ax / memory[???? + i[?]] );<br />x := ax mod memory[???? + i[?]];
|-
! ENTA ????,?
Строка 157:
|-
! ENNA ????,?
| a := - — ???? - — i[?];
|-
! ENNX ????,?
| x := - — ???? - — i[?];
|-
! ENN? ????,?
| i[?] := - — ???? - — i[?];
|-
! INCA ????,?
Строка 175:
|-
! DECA ????,?
| a := a - — ???? - — i[?];
|-
! DECX ????,?
| x := x -???? - — i[?];
|-
! DEC? ????,?
| i[?] := i[?] - — ???? - — i[?];
|-
! CMPA ????,? (0:5)
Строка 196:
|-
! JSJ ????,?
| j := address of next instruction;<br />goto ???? + i[?];
|-
! JOV ????,?
| if (overflow) then<br />&nbsp;&nbsp;&nbsp;overflow := false; goto ???? + i[?];
|-
! JNOV ????,?
| if (no overflow) then<br />&nbsp;&nbsp;&nbsp;goto ???? + i[?];<br />else overflow := false;
|-
! JL, JE, JG ????,?<br />JGE, JNE, JLE ????,?
| if (less, equal, greater) then goto ???? + i[?];<br />if (no less, unequal, no greater) then goto ???? + i[?];
|-
! JAN, JAZ, JAP ????,?<br />JANN, JANZ, JANP ????,?
| if (a<0 / a==0 / a>0) then goto ???? + i[?];<br />if (a>=0 / a!=0 / a<=0) then goto ???? + i[?];
|-
! JXN, JXZ, JXP ????,?<br />JXNN, JXNZ, JXNP ????,?
| if (x<0 / x==0 / x>0) then goto ???? + i[?];<br />if (x>=0 / x!=0 / x<=0) then goto ???? + i[?];
|-
! J?N, J?Z, J?P ????,?<br />J?NN, J?NZ, J?NP ????,?
| if (i[?]<0 / i[?]==0 / i[?]>0) then goto ???? + i[?];<br />if (i[?]>=0 / i[?]!=0 / i[?]<=0) then goto ???? + i[?];
|-
! MOVE ????(??),?
| for (n=1; n<=??; n++)<br />&nbsp;&nbsp;&nbsp;memory[???? + i[?] + n] := memory[i[1] + n];
|-
! SLA, SRA ?,?<br />SLAX, SRAX ?,?<br />SLC, SRC ?,?
| shift a to the left/right by ?+i[?] bits<br />shift ax to the left/right by ?+i[?] bits<br />rotate ax to the left/right by ?+i[?] bits
|-
! NOP
Строка 229:
|-
! IN ????(?),?
| read in one block from input unit ?<br />into memory[???? + i[?]] onwards;
|-
! OUT ????(?),?
| output one block to unit ?<br />from memory[???? + i[?]] onwards;
|-
! IOC ????(?),?
Строка 251:
 
== Внешние ссылки ==
* [http://www-cs-faculty.stanford.edu/~knuth/mmix.html MMIX 2009: A RISC Computer for the Third Millennium] Knuth'sKnuth’s official MIX page
* [http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html MMIX News] Knuth'sKnuth’s official MIX news
* [http://www-cs-faculty.stanford.edu/~knuth/mmixware.html MMIXware: A RISC Computer for the Third Millennium] Knuth'sKnuth’s official MIX book
* [http://dmoz.org/Computers/Programming/Languages/Assembly/MIX-MMIX Open Directory: Computers: Programming: Languages: Assembly: MIX-MMIX] many MIX-MMIX/MIXAL-MMIXAL links
 
[[cs:MIX (fiktivni pocitac)]]