1. Einführung.- 1.1 Computer.- 1.2 Die Hardware-Software-Schnittstelle.- 1.3 Das klassische Computermodell.- 1.4 Warum MMIX?.- 2. Darstellung von Information — Codierung und Zahlensysteme.- 2.1 Information, Daten und Nachricht.- 2.2 Codierung.- 2.3 Zahlensysteme.- 2.3.1 Dezimalsystem.- 2.3.2 Allgemeine Stellenwertsysteme.- 2.3.3 Umwandlung der Zahlenformate.- 2.4 Negative Zahlen.- 2.4.1 Der Zahlenkreis.- 2.4.2 Rechnen mit dem Zwei-Komplement.- 2.5 Byte als Maß für die Speicherkapazität.- 3. Einführung in MMIX.- 3.1 Der MMIX-Prozessor.- 3.1.1 MMIX-Befehle.- 3.1.2 Ein erstes Programm für MMIX.- 3.1.3 Direktoperanden.- 3.2 Speicherzugriff.- 3.2.1 Speicherorganisation.- 3.2.2 Reservieren und Vorbelegen von Speicher.- 3.2.3 Lesen aus dem Speicher.- 3.2.4 Befehle zum Speichern.- 3.2.5 Vorzeichenbehandlung beim Laden und Speichern.- 3.3 Arithmetik mit MMIX.- 3.4 Einfache Ein- und Ausgabe.- 3.4.1 Zeichenketten.- 3.4.2 Ausgabe von Zeichenketten.- 3.4.3 Einlesen von Zeichenketten.- 3.5 Symbole zur Erhöhung der Lesbarkeit eines Programms.- 4. Sprungbefehle und Kontrollstrukturen.- 4.1 Unbedingte Sprünge.- 4.1.1 Der JMP-Befehl.- 4.1.2 Der GO-Befehl.- 4.2 Bedingte Verzweigungen.- 4.3 Kontrollstrukturen.- 4.3.1 Schleifen.- 4.3.2 Exkurs: Vergleichsbefehle.- 4.3.3 Alternativen.- 4.3.4 Exkurs: Lokale Labels.- 4.3.5 Mehrfachauswahl.- 4.4 Bedingte Zuweisungen.- 5. Unterprogramme.- 5.1 Einführung.- 5.2 Unterprogrammaufrufe mit GO.- 5.2.1 Übergabe von Parametern in Registern.- 5.3 Der Stack.- 5.3.1 Ablage der Rücksprungadresse auf dem Stack.- 5.3.2 Ablage von lokalen Variablen auf dem Stack.- 5.3.3 Parameterübergabe auf dem Stack.- 5.3.4 Sichern von Registern auf dem Stack.- 5.3.5 Stackframes.- 5.4 Exkurs: Präfix und lokale Symbole.- 5.5 Der Registerstack.- 5.5.1 Das Konzept.- 5.5.2 Globale und lokale Register.- 5.5.3 Die PUSHJ-Instruktion.- 5.5.4 Die POP-Instruktion.- 5.5.5 Der Registerring und das Stacksegment.- 6. Datenstrukturen.- 6.1 Bit.- 6.1.1 Elementare logische Verknüpfungen.- 6.1.2 Schiebebefehle.- 6.1.3 Logische Verknüpfungen mit 16-Bit-Direktoperanden.- 6.1.4 Erweiterte Bitoperationen.- 6.2 Adressen und Zeiger.- 6.3 Gleitkommazahlen.- 6.3.1 Gebrochene Zahlen.- 6.3.2 Codierung gebrochener Zahlen.- 6.3.3 Rechnen mit 64-Bit-Gleitkommazahlen.- 6.3.4 32-Bit-Gleitkommazahlen.- 6.4 Zusammengesetzte Datentypen.- 6.4.1 Verbunde oder Records.- 6.4.2 Felder oder Arrays.- 6.5 Abstrakte Datentypen.- 6.6 Anwendung: Bitmap-Grafiken erzeugen und bearbeiten.- 6.6.1 Erzeugung von zweifarbigen Bitmaps.- 6.6.2 Bearbeiten von Bitmaps mit 256 Graustufen.- 7. Ablaufsteuerung.- 7.1 Steuerwerk und Befehlszyklus.- 7.2 Adressierungsarten.- 7.3 RISC und CISC.- 7.4 Pipelining.- 7.5 Interrupts.- 7.5.1 Interruptursachen.- 7.5.2 Ausführung eines Trips.- 7.5.3 Ausführung eines Traps.- 7.5.4 Rückkehr aus dem Interrupt.- 7.5.5 Beispiele.- 8. Betriebssystem.- 8.1 Speicherverwaltung.- 8.1.1 Speicherhierarchie.- 8.1.2 Virtuelle Adressen.- 8.1.3 Reale Adressen.- 8.1.4 Paging.- 8.2 Betriebssystemaufrufe.- 8.3 Prozesse.- 8.3.1 Tasks.- 8.3.2 Synchronisation und Kommunikation.- A. Liste der Befehle.- B. Liste der Programme.- c. Programmieren mit MMIX.- C.1 Die Programmierumgebung zum Laufen bringen.- C.1.1 Die ausführbaren Dateien herunterladen.- C.1.2 Die Programmierumgebung selbst übersetzen.- C.2 Versuche.- D. Meldungen von mmixal und mmix.- D.1 Warnungen von mmixal.- D.2 Fehlermeldungen von mmixal.- D.3 Meldungen von mmix.- E. Zusammenfassung der Assemblersprache MMIXAL.- E.1 Einfache Elemente.- E.2 Ausdrücke.- E.3 Instruktionen.- F. Lösung ausgewählter Übungsaufgaben.