Einstieg - Spaghetticode

Steuerung einer Registermaschine

Registermaschinen können als einfaches Maschinenmodell angesehen werden, mit dem wesentliche Bestandteile von Computern erfasst werden (vgl. auch Murmelrechner - Akteure und Durchführung).

Registermaschine

Registermaschinen enthalten einen Speicher, der aus einzelnen, durchnummerierten Registern besteht, in denen natürliche Zahlen gespeichert werden können.

Zur Steuerung der Registermaschinen gibt es eine einfache maschinennahe Programmiersprache, die nur die folgenden 5 Befehle kennt:

Befehl Bedeutung
x INC i Erhöhe Register i um 1. Gehe zu Zeile x+1.
x DEC i Erniedrige (sofern möglich) Register i um 1. Gehe zu Zeile x+1.
x JMP i Gehe zu Zeile i.
x TST i Wenn Register i keine 0 enthält, dann gehe zu Zeile x+1, sonst zu Zeile x+2.
x HLT Beende die Bearbeitung.

Aufgabe 1

Was leistet das Programm in der Abbildung oben?

Ein komplizierteres Programm zur Steuerung einer Registermaschine

Programme zur Steuerung einer Registermaschine werden leicht unübersichtlich.

0  TST 1
1  JMP 3
2  JMP 6
3  TST 2
4  JMP 12
5  JMP 9
6  TST 2
7  JMP 18
8  HLT
9  TST 1
10 JMP 16
11 HLT  
12 DEC 1
13 DEC 2
14 INC 0
15 JMP 0
16 DEC 1
17 JMP 9
18 DEC 2
19 JMP 6

Aufgabe 2

(a) Kannst du auf den ersten Blick erkennen, was das gezeigte Programm leistet?

(b) Führe das Programm aus. Gehe von der folgenden Anfangsbelegung der Register aus: {R0: 0; R1: 4; R2:6; R3:0; ...}. Weißt du jetzt, was das Programm leistet? Wenn nicht, dann führe weitere Tests durch.

(c) Warum ist es so schwer zu erkennen, was das Programm leistet?

X

Fehler melden

X

Suche