k120-Beispielrechner_ReTI
Page 1
Kapitel 1 – Grundlagen
- Mathematische Grundlagen
- Beispielrechner ReTI
Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik
Page 2
ReTI (Rechner Technische Informatik)
Ursprünglich eingeführt in [Keller,Paul] unter dem Namen
ReSa („Rechner Saarbrücken").
Hier wird ReTI zunächst abstrakt eingeführt.
Alle Speicher bestehen aus unendlich vielen
Speicherzellen, die beliebig große ganze Zahlen
aufnehmen können.
Später wird die tatsächliche Implementierung von ReTI
unter realistischen Annahmen thematisiert.
Page 3
Abstrakte ReTI-Maschine
Zwei unendlich große Speicher
- Datenspeicher S für Daten (beliebig große Zahlen).
= Inhalt von Zelle des Datenspeichers, Adresse. - Programmspeicher P für Maschinenbefehle.
Lade-/Speicher-, Rechen-, Sprungbefehle – siehe später.
= Inhalt von Zelle des Programmspeichers.
Zentraleinheit CPU (Central Processing Unit)
Vier für Benutzer sichtbare Register. - PC = Befehlszähler (Program Counter).
- ACC = Akkumulator.
- IN1, IN2 = Indexregister 1 und 2.
Page 4
Aufbau von ReTI
Page 5
Programmablauf
Programme bzw. Daten stehen beim Start der maschine in
P bzw. S.
Programm beginnt bei Zelle 0 von P.
Inhalt von P wird nicht geändert.
Maschine arbeitet in Schritten
In jedem Schritt
- Ausführung eines Befehls:
wird als Befehl
interpretiert und in Schritt ausgeführt. - PC erhält neuen Wert (abhängig von Befehl).
Bei Programmstart ist .
Page 6
ReTI-Befehle und ihre Wirkung
- Load/Store: Laden von Werten aus dem Datenspeicher S
bzw. Schreiben von Werten in S. - Compute: Berechnungen (hier zunächst Addition und
Subtraktion).- Mit Werten im Datenspeicher S.
- Mit Absolutwerten (Immediate).
- Indexregister: Indirekte Speicheradressierung (siehe
unten). - Sprungbefehle: Bedingte und unbedingte Sprünge.
Page 7
Load/Store
Transport von Daten zwischen ACC und Datenspeicher.
LOAD i:
Lädt Inhalt
und erhöht PC um 1.
STORE i:
Speichert den Inhalt von ACC in
Page 8
Load/Store: Übersicht
| Befehl | Wirkung |
|---|---|
| LOAD i | |
| STORE i |
Page 9
Beispielprogramm
Ein Programm, das Inhalte von Speicherzelle
LOAD 0 ; ACC := S(0) = x
STORE 2 ; S(2) := ACC = x
LOAD 1 ; ACC := S(1) = y
STORE 0 ; S(0) := ACC = y
LOAD 2 ; ACC := S(2) = x
STORE 1 ; S(1) := ACC = x
Page 10
Compute-Befehle
Verknüpfe den Inhalt von ACC mit
und speichere das Ergebnis in ACC ab.
- ADD, SUB = Compute memory-Befehle
- ADDI, SUBI = Compute immediate-Befehle
- Beides zusammen ergibt die Compute-Befehle.
Bei Compute memory: Interpretiere Parameter
Speicheradresse.
| Befehl | Wirkung |
|---|---|
| ADD i | |
| SUB i |
Page 11
Immediate-Befehle
Interpretiere Parameter
| Befehl | Wirkung |
|---|---|
| LOADI i | |
| ADDI i | |
| SUBI i |
Anmerkung: ADDI und SUBI sind Compute Befehle.
LOADI ist den Load-/Store-Befehlen zuzuordnen.
Page 12
Indexregister-Befehle
| Befehl | Wirkung |
|---|---|
| LOADINj i | |
| STOREINj i | |
| MOVE S D | |
| MOVE S PC |
Page 13
Beispielprogramm für Indexregister-Befehle
Kopiere
LOAD 0 ; ACC := S(0) = x
MOVE ACC IN1 ; IN1 := ACC = x
LOAD 1 ; ACC := S(1) = y
STOREIN1 0 ; S(x) = S(IN1+0) := ACC = y
Page 14
Sprung-Befehle
Manipulation des Befehlszählers.
JUMP für unbedingte Sprünge,
JUMPc mit
Mit bedingten Sprüngen kann man Programmschleifen und
bedingte Anweisungen realisieren!
| Befehl | Wirkung |
|---|---|
| JUMP i | |
| JUMPc i |
Page 15
Beispielprogramm
LOADI 0 ; ACC := 0
STORE 2 ; S(2) := 0
LOAD 1 ; ACC := S(1)
SUBI 1 ; ACC := ACC − 1
STORE 1 ; S(1) := ACC
JUMP< 5 ; PC := PC + 5, falls ACC < 0
LOAD 2 ; ACC := S(2)
ADD 0 ; ACC := ACC + S(0)
STORE 2 ; S(2) := ACC
JUMP -7 ; PC := PC − 7
JUMP 0 ; PC := PC
Page 16
Zusammenfassung
Rechner ReTI wird uns im weiteren Verlauf der Vorlesung
als Illustrator und Anwendungsbeispiel für die vorgestellten
Konzepte dienen.















