k120-Beispielrechner_ReTI

Page 1

page-01.png

Kapitel 1 – Grundlagen

  1. Mathematische Grundlagen
  2. Beispielrechner ReTI
    Albert-Ludwigs-Universität Freiburg
    Prof. Dr. Armin Biere
    Institut für Informatik

Page 2

page-02.png

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

page-03.png

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

page-04.png

Aufbau von ReTI

Page 5

page-05.png

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

page-06.png

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

page-07.png

Load/Store
Transport von Daten zwischen ACC und Datenspeicher.

LOAD i:
Lädt Inhalt von Speicherzelle in Akkumulator ACC
und erhöht PC um 1.

STORE i:
Speichert den Inhalt von ACC in und erhöht PC um 1.

Page 8

page-08.png

Load/Store: Übersicht

Befehl Wirkung
LOAD i ,
STORE i ,

Page 9

page-09.png

Beispielprogramm
Ein Programm, das Inhalte von Speicherzelle (= ) und
(= ) vertauscht.

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

page-10.png

Compute-Befehle
Verknüpfe den Inhalt von ACC mit oder mit einer Konstante
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 direkt als
Speicheradresse.

Befehl Wirkung
ADD i ,
SUB i ,

Page 11

page-11.png

Immediate-Befehle
Interpretiere Parameter direkt als Konstante.

Befehl Wirkung
LOADI i ,
ADDI i ,
SUBI i ,

Anmerkung: ADDI und SUBI sind Compute Befehle.
LOADI ist den Load-/Store-Befehlen zuzuordnen.

Page 12

page-12.png

Indexregister-Befehle

Befehl Wirkung
LOADINj i , ()
STOREINj i , ()
MOVE S D , (, )
MOVE S PC ()

Page 13

page-13.png

Beispielprogramm für Indexregister-Befehle
,
Kopiere in Zelle :

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

page-14.png

Sprung-Befehle
Manipulation des Befehlszählers.
JUMP für unbedingte Sprünge,
JUMPc mit für bedingte Sprünge.
Mit bedingten Sprüngen kann man Programmschleifen und
bedingte Anweisungen realisieren!

Befehl Wirkung
JUMP i ()
JUMPc i (, )

Page 15

page-15.png

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

page-16.png

Zusammenfassung
Rechner ReTI wird uns im weiteren Verlauf der Vorlesung
als Illustrator und Anwendungsbeispiel für die vorgestellten
Konzepte dienen.