| Registermaschine |
AlgoDat WS99
|
java.lang.Object | +--ChS_Registermaschine2
Realisiert eine Registermaschine, wie sie in der Vorlesung
AlgoDat beschrieben wurde.
Keine öffentlichen Felder mehr, dafür auch weniger
Sicherheitsüberprüfungen während des Programmlaufs.
| Constructor Summary | |
ChS_Registermaschine2(java.lang.String[] programm,
int[] speicher)
Lädt ein Programm und die Speicherbelegung. |
|
| Method Summary | |
boolean |
beendet()
True, wenn das Programm beendet ist (der aktuelle Befehl ist END), false, wenn nicht. |
(package private) void |
parse(java.lang.String[] programm)
Übersetzt das als String-Feld übergebene Programm in die interne Darstellung. Setzt den Befehlszähler b und die Anzahl der
ausgeführten Befehle t zurück.Befehl und Operand (Zahl) müssen durch Leerzeichen getrennt sein. |
void |
run()
Führt das Programm bis zum Ende aus, ohne die Konfigurationen auszugeben. |
void |
schreibeKonfiguration()
Gibt die aktuelle Konfiguration auf die Konsole aus. |
void |
schreibeProgramm()
Gibt das komplette Programm (ohne den Registerinhalt) auf die Konsole aus. |
(package private) void |
setzeRegister(int[] speicher)
Übernimmt die Speicherregister vom int-Feld. |
boolean |
step()
Führt den aktuellen Befehl aus und kehrt dann zurück. |
| Methods inherited from class java.lang.Object |
|
| Constructor Detail |
public ChS_Registermaschine2(java.lang.String[] programm,
int[] speicher)
throws java.lang.NumberFormatException,
java.lang.IllegalArgumentException
programm - das Programm, wie unter parse(String[]) beschriebenspeicher - die Speicherbelegung, wie unter setzeRegister(int[]) beschriebenjava.lang.NumberFormatException - siehe parse und setzeRegisterjava.lang.IllegalArgumentException - siehe parse und setzeRegisterEND endetparse(java.lang.String[]),
setzeRegister(int[])| Method Detail |
public boolean beendet()
void parse(java.lang.String[] programm)
throws java.lang.IllegalArgumentException,
java.lang.NumberFormatException
b und die Anzahl der
ausgeführten Befehle t zurück.END und NOP brauchen keine Operanden.
Gross-/Kleinschreibung ist egal.programm - das Programmjava.lang.IllegalArgumentException - wenn ein Befehl nicht bekannt istjava.lang.NumberFormatException - wenn ein Operand keine nichtnegative ganze Zahl istpublic void run()
step()public void schreibeKonfiguration()
public void schreibeProgramm()
void setzeRegister(int[] speicher)
throws java.lang.IllegalArgumentException,
java.lang.NumberFormatException
speicher sind.
Mehr Register existieren dann nicht!speicher - die Speicherregister (ohne Befehlszähler)java.lang.IllegalArgumentException - wenn speicher ein leeres Feld istjava.lang.NumberFormatException - wenn ein Registerinhalt kleiner als 0 istpublic boolean step()