WikiDer > Warren Abstrakte Maschine
EIN Warren Abstrakte Maschine entweder WAM ist ein virtuelle Maschine konzentriert sich auf die Sprache Prolog und besteht aus a Speichermodell und ein Befehlssatz. Derzeit ist es ein De-facto-Standard für Prolog-Compiler. Da diese Architektur Prolog-Programmen auf ein niedriges Niveau ermöglicht Byte-Code oder Maschinensprache zu kompilieren es hilft, Prolog-Code effizienter auszuführen und ermöglicht echte Prolog-Compiler. Warren stellt in seiner Publikation sogar einen spezialisierten Prolog-Prozessor zur Verfügung.
Vertretung von Prolog-Begriffe
Ein Prologterm wird in einem WAM repräsentiert durch a Etikett gefolgt von einem Wert. Das Tag wird verwendet, um den Typ des Begriffs zu identifizieren. Typen sind normalerweise:
- Referenz, ein Verweis auf eine gebundene oder ungebundene Variable
- Strukturen, für Prolog-Strukturen,
- Listen,
- KonstantenZahlen, aber auch Prolog-Atome.
Strukturen und Listen werden nicht geteilt, sondern komplett kopiert.
Speichermodell
Das Warren Abstrakte Maschine teilt den verfügbaren Speicherplatz in vier Teile auf:
- Das Coderaum, wo Anweisungen gespeichert sind,
- Das lokaler Stack, Enthält Umgebungen, in denen Daten über den aktuellen Tor wird verfolgt und punktet mit ihren Fortsetzungen.
- Das globaler Stack oder Haufen, enthält alle Strukturen und Listen, die durch die Vereinheitlichung entstehen und die beim Backtracking freigegeben werden müssen.
- Das Weg, die verfolgt, welche gebundenen Variablen freigegeben werden müssen, wenn die zurückverfolgen
Register
Der aktuelle Status des Prolog-Programms wird in mehreren Registern angezeigt:
| Registrieren | Ziel | Punkte bei |
|---|---|---|
| p | Programm zähler | Coderaum |
| CP | Fortsetzung (Fortsetzung) | Coderaum |
| E | Letzte Umgebung (Umgebung) | lokaler Stack |
| B | Letzter Auswahlpunkt (zurückverfolgen) | lokaler Stack |
| ein | Spitze des lokalen Stapels | |
| TR | Spitze des Weg-Stapel | |
| huh | Spitze des Haufen | |
| HB | Spitze des Haufen für den letzten Wahlpunkt | |
| so | Strukturzeiger | |
| A1, A2 .. An | Argumente | Haufen |
| X1, X2 .. Xn | Lokale Variablen |
Befehlssatz
Der Befehlssatz des WAM lässt sich in fünf Kategorien einteilen:
- erhaltenAnweisungen, entsprechen der Überschrift der Klausel extrahieren und mit Argumenten vereinigen.
- GutAnweisungen, entsprechen den an a übergebenen Argumenten Tor und lade es in die ein registriert
- vereinheitlichenAussagen, entsprechen Argumenten von a Struktur und vereinen sie mit bestehenden Strukturen oder schaffen neue Strukturen.
- prozedural Anweisungen, kümmern Sie sich um die Übertragung der Kontrolle und weisen Sie Speicherplatz zu und geben Sie ihn frei.
- Indizierung Anleitung, filtern Sie die Klauseln das entspricht a Tor und lassen Sie nur die Klauseln, die ausgewertet werden können.
Anleitung besteht aus a Opcode gefolgt von 0, 1 oder 2 Argumenten. Ein Argument kann 1, 2 oder 4 Byte lang sein.
Quellen
- David H. D. Warren. "Ein abstrakter Prolog-Befehlssatz". Technische Anmerkung 309, SRI International, Menlo Park, Kalifornien, Oktober 1983.
- Hassan Ait-Kaci. "Warrens abstrakte Maschine: Eine Tutorial-Rekonstruktion". Das Buch ist nicht mehr im Druck. Der Autor hat den Text zur nicht kommerziellen Nutzung freigegeben. Dieser ist online verfügbar.