Station - ALU

Eine Recheneinheit

Am Bus soll zusätzlich zu 3 Registern eine Recheneinheit (ALU) angebunden werden.

ALU

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

Aufgabe 1

(a) 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 Register
r1 = Register(5)
r2 = Register(3)
r3 = Register(0)

# Erzeugung des Busses
bus = Bus()

# Erzeugung der ALU
alu = ALU_addsub()

# Erzeugung der Tore
tor1 = Tor(r1, bus, "read")
tor2 = Tor(r1, bus, "write")

tor3 = Tor(r2, bus, "read")
tor4 = Tor(r2, bus, "write")

tor5 = Tor(r3, bus, "read")
tor6 = Tor(r3, bus, "write")

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

tor15 = Tor(alu.puffer, bus, "read")
tor16 = Tor(alu.puffer, bus, "write")

# Ausgabe der Registerinhalte
print("r1:", r1.wert)
print("r2:", r2.wert)
print("r3:", r3.wert)

# load_akku r1

tor2.oeffnen()
tor7.oeffnen()
tor7.schliessen()
tor2.schliessen()

# add_register r2

tor4.oeffnen()
tor15.oeffnen()
tor15.schliessen()
tor4.schliessen()
alu.add()

# store_akku r3

tor8.oeffnen()
tor5.oeffnen()
tor5.schliessen()
tor8.schliessen()

# Ausgabe der Registerinhalte
print("r1:", r1.wert)
print("r2:", r2.wert)
print("r3:", r3.wert)

(b) Analysiere das Testprogramm. Hast du eine Vermutung, was in den einzelnen Schritten hier abläuft.

(c) Ergänze weitere print-Anweisungen, um die Abläufe transparent zu machen.

Aufgabe 2

(a) Welche der folgenden Zuweisungen wird im Testprogramm ausgeführt: r1 = r2 + r3, r2 = r1 + r3, r3 = r1 + r2? Begründe.

(b) Was muss man am Testprogramm ändern, wenn man die Zuweisung r1 = r1 + r2 ausführen will?

(c) Was muss man am Testprogramm ändern, wenn man die Zuweisung r2 = r1 - r3 ausführen will?

Aufgabe 3

Benutze die Klasse ALU_incdec, um folgende Zuweisungen auszuführen: r2 = r2 + 1, r1 = r1 - 1.

ALU

Software-Bausteine zur Simulation einer ALU

Das Klassendiagramm beschreibt die Struktur der Software-Bausteine zur Simulation einer ALU. Beachte, dass hier zwei verschiedene Recheneinheiten zur Verfügung gestellt werden.

Tor-Bus-Komponente

Ein ALU_addsub-Objekt erzeugt und verwaltet zwei Register-Objekte. Mit den Methoden add und sub werden die aktuellen Werte dieser Registerobjekte zusammenadiert bzw. voneinander subtrahiert. das Berechnungsergebnis wird im akku-Registerobjekt gespeichert.

Tor-Bus-Komponente

Ein ALU_incdec-Objekt arbeitet analog. Zum Inkrementieren (inc) bzw. Dekrementieren (dec) wird hier kein puffer-Registerobjekt benötigt.

X

Fehler melden

X

Suche