MIX: различия между версиями
[непроверенная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Голем (обсуждение | вклад) + {{сирота}} при помощи AWB |
A5b (обсуждение | вклад) мНет описания правки |
||
Строка 1:
{{сирота}}
'''MIX'''
MIX 1960-х был заменен новой (также гипотетической) компьютерной архитектурой, [[MMIX]], которая будет включена в ожидаемой редакции ''TAOCP''. Программные реализации MIX и MMIX архитектур были разработаны различными авторами и свободно доступны (например, разработынные самим Кнутом MIXware и MMIXware).
== Архитектура ==
MIX представляет собой гибридный [[Двоичная система счисления|двоично]]
Слово изменяется в пределах от
=== Регистры ===
Строка 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 :=
|-
! LDXN ????,? (0:5)
| x :=
|-
! LD?N ????,? (0:5)
| i[?] :=
|-
! STA ????,? (0:5)
Строка 139:
|-
! SUB ????,? (0:5)
| a := a
|-
! MUL ????,? (0:5)
Строка 145:
|-
! DIV ????,? (0:5)
| a := int(
|-
! ENTA ????,?
Строка 157:
|-
! ENNA ????,?
| a :=
|-
! ENNX ????,?
| x :=
|-
! ENN? ????,?
| i[?] :=
|-
! INCA ????,?
Строка 175:
|-
! DECA ????,?
| a := a
|-
! DECX ????,?
| x := x -????
|-
! DEC? ????,?
| i[?] := i[?]
|-
! CMPA ????,? (0:5)
Строка 196:
|-
! JSJ ????,?
| j := address of next instruction;<br />goto ???? + i[?];
|-
! JOV ????,?
| if (overflow) then<br /> overflow := false; goto ???? + i[?];
|-
! JNOV ????,?
| if (no overflow) then<br /> 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 /> 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]
* [http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html MMIX News]
* [http://www-cs-faculty.stanford.edu/~knuth/mmixware.html MMIXware: A RISC Computer for the Third Millennium]
* [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)]]
|