Station - Daten- und Programme im Speicher

Programme als Daten

Die folgende Abbildung zeigt einen Speicher, in dem der Befehl INC 2 (d.h. inkrementiere Register 2) codiert im Register 0 abgelegt ist.

Befehlsregister

Zusätzlich ist hier ein spezielles Register - das sog. Befehlsregister - zu sehen, in dem ein codierter Befehl in seine Bestandteile zerlegt werden kann.

Aufgabe 1

Informiere dich im nächsten Abschnitt über das hier vorgenommene Codierungsverfahren bei Befehlen.

Aufgabe 2

Lade zur Simulation dieses Systems die Datei registermaschine.txt herunter und benenne sie in registermaschine.py um.

Führe das folgende Testprogramm aus. Beachte, dass das importierte Modul registermaschine.py im selben Verzeichnis wie das Testprogramm abgespeichert ist.

from registermaschine import *

# Erzeugung der Busse
dbus = Bus()
abus = Bus()

# Erzeugung der ALU
alu = ALU_incdec()

# Erzeugung des Speichers
speicher = Speicher([1002, 0, 3])
speicher.regAdresse.wert = 0

# Erzeugung des Befehlsregisters
ir = Befehlsregister()

# Erzeugung der Tore
tor3 = Tor(speicher, dbus, "write")
tor4 = Tor(speicher, dbus, "read")
tor16 = Tor(speicher.regAdresse, abus, "read")

tor7 = Tor(alu.akku, dbus, "read")
tor8 = Tor(alu.akku, dbus, "write")

tor11 = Tor(ir.regIR, dbus, "read")
tor12 = Tor(ir, abus, "write")

# Ausgabe der Registerinhalte
print("0:", speicher.register[0].wert)
print("1:", speicher.register[1].wert)
print("2:", speicher.register[2].wert)

# inc-Befehl in IR holen
tor3.oeffnen()
tor11.oeffnen()
tor11.schliessen()
tor3.schliessen()

# inc-Befehl ausführen
tor12.oeffnen()
tor16.oeffnen()
tor3.oeffnen()
tor7.oeffnen()
tor7.schliessen()
tor3.schliessen()
alu.inc()
tor8.oeffnen()
tor4.oeffnen()
tor4.schliessen()
tor8.schliessen()
tor16.schliessen()
tor12.schliessen()

# Ausgabe der Registerinhalte
print("0:", speicher.register[0].wert)
print("1:", speicher.register[1].wert)
print("2:", speicher.register[2].wert)

(a) Analysiere das Testprogramm. Erläutere die einzelnen Teile dieses Programms.

(b) Ändere es so ab, dass der Befehl DEC 2, der codiert in Register 1 stehen soll, ausgeführt wird.

Software-Bausteine zur Simulation eines Befehlsregisters

Das Klassendiagramm beschreibt die Struktur der Software-Bausteine zur Simulation eines Befehlsregisters.

Befehlsregister

Ein Befehlsregister-Objekt verwaltet mit dem Attribut regIR ein Register-Objekt, in dem ein codierter Befehl zwischengespeichert werden kann. Zur Zerlegung eines codierten Befehls in seine Bestandteile verfügt ein Befehlsregister-Objekt über die Operationen op und adr. Die Operation getAusgang liefert den Adressteil des codierten Befehls im Register regIR.

X

Fehler melden

X

Suche