next up previous contents
Nächste Seite: Compiler ACOMP Aufwärts: Implementierung von ARS++: Vorherige Seite: Aufbau der AVIM-SECD-Maschine   Inhalt

Maschinenbefehle:

LDCT: Lade eine Konstante in das S-Register.
LDVR: Lade eine Variable in das S-Register.
LDVRI: Lade eine Variable indirekt.
LDFN: Lade die Definition einer Funktion in das S-Register.
LOAD: Lade Programmbefehle aus einer Code-Datei in das C-Register.
NIL: Markiere den Anfang einer Liste von Argumenten oder einer Liste von Variablendeklarationen.
BIND: Verknüpfe die zwei obersten Objekte im S-Register als Name-Wert-Paar und füge dieses Paar in die sich auf dem Stack befindende geöffnete Symbol-Tabelle ein.
ARG: Definition eines Argumentes eines folgenden Funktionsaufrufs.
ADDF: Füge der laufenden Umgebung eine Symboltabelle hinzu.
DELF: Entferne die jüngste Symboltabelle aus der laufenden Umgebung.
DEF: Definition or modification of a variable in the current environment.
STVL: Speichere einen Wert aus dem S-Register in eine Variable der laufenden Umgebung.
POP: Entferne den obersten Wert aus dem S-Register.
IF: Eröffne eine Alternativ-Struktur.
ENDIF: Abschluß einer Alternativ-Struktur. Die `ENDIF'-Anweisung bewirkt, dass sich die virtuelle Maschine den entsprechenden Fortsetzungspunkt aus dem `IS'-Register holt.
EOX: Mit dieser Anweisung wird das Ende eines Ausdrucks markiert.
CCALL: Aufruf einer Funktion mit der Übergabe der `current continuation' als Argument.
TCALL: Aufruf einer Funktion ohne Abspeichern der Rücksprungadresse (`tail call').
ACALL: Aufruf einer Funktion analog zu der Primitivfunktion `apply' in ARS++.
RTN: Rücksprung aus einer Funktion zum aufrufenden Programm.
HLT: Beendigung des Programms.


next up previous contents
Nächste Seite: Compiler ACOMP Aufwärts: Implementierung von ARS++: Vorherige Seite: Aufbau der AVIM-SECD-Maschine   Inhalt

Georg P. Loczewski 2003-07-18
Buchbestellung hier!!!