MIX (fiktiver Computer)
# MIX (fiktiver Computer)

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 modernere und erweiterte Version, ersetzt.

Bei MIX handelt es sich um einen abstrakten Von-Neumann-Rechner. Er verwendet die Assembler-Sprache MIXAL (MIX-Assembler-Language).

## MIX-Aufbau

Ein MIX-Rechner besteht im Kern aus folgenden Komponenten:

* Rechenregister (rA)
* Erweiterungsregister (rX)
* Indexregister (rI)
* Sprungregister (rJ)
* Speicher (4000 Zellen a 1 MIX-Wort)

### MIX-Byte

Anders als im heutigen Verständnis, besteht ein MIX-Byte aus 6 Bits. Es kann daher 64 verschiedene Zustände (0..63) darstellen. Dazu Knuth in seinem Buch: „Since 1975 or so, the word ‚byte‘ has come to mean a sequence of precisely eight binary digits, capable of representing numbers of 0 to 255. […] When we speak of bytes in connection with MIX, we shall confine ourselves to the former sense of the word, harking back to the days when bytes were not yet standardized.“

### MIX-Wort

Der Inhalt einer MIX-Speicherzelle wird als MIX-Wort bezeichnet. Es besteht aus fünf MIX-Bytes sowie einem Vorzeichen-Byte. Der mögliche Zahlenbereich ist daher auf $±(64^5$ −1) = ±1.073.741.823 beschränkt.

### Speicher des MIX-Rechners

Ein MIX-Computer hat 4000 Speicherzellen zu je einem MIX-Wort. Zur Adressierung einer Speicherzelle genügen daher zwei MIX-Bytes $(64^2$ = 4096). Alle Adressen > 3999 sind undefiniert. Zur Adressierung einzelner Teile eines MIX-Wortes werden sogenannte „Feldspezifikatoren“ (L:R) verwendet. Diese lassen sich mit einem MIX-Byte repräsentieren, indem man die linke Grenze L mit 8 multipliziert und anschließend die rechte Grenze R addiert. So würde ein Feldspezifikator von (0:0) das Vorzeichen adressieren, ein Feldspezifikator von (1:5) adressiert die erste gesamte Speicherzelle ohne das Vorzeichen.

### Flags

MIX verwendet vier Flags zur Ausführung bedingter Sprünge.

* O-Flag: Overflow, wird gesetzt, sobald eine Berechnung den maximalen Wert eines MIX-Worts überschreitet.
* L-Flag: Less, wird gesetzt wenn die entspreche Zahl kleiner ist als ihre Vergleichszahl.
* E-Flag: Equal, wird gesetzt, wenn die entsprechende Zahl gleich der Vergleichszahl ist.
* G-Flag: Greater, wird gesetzt wenn die entsprechende Zahl größer ist als ihre Vergleichszahl.
