Registermaschine | AlgoDat WS99 Home |
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()