WikiDer > Warren Abstrakte Maschine

Warren Abstract Machine

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:

RegistrierenZielPunkte bei
pProgramm zählerCoderaum
CPFortsetzung (Fortsetzung)Coderaum
ELetzte Umgebung (Umgebung)lokaler Stack
BLetzter Auswahlpunkt (zurückverfolgen)lokaler Stack
einSpitze des lokalen Stapels
TRSpitze des Weg-Stapel
huhSpitze des Haufen
HBSpitze des Haufen für den letzten Wahlpunkt
soStrukturzeiger
A1, A2 .. AnArgumenteHaufen
X1, X2 .. XnLokale Variablen

Befehlssatz

Der Befehlssatz des WAM lässt sich in fünf Kategorien einteilen:

  1. erhaltenAnweisungen, entsprechen der Überschrift der Klausel extrahieren und mit Argumenten vereinigen.
  2. GutAnweisungen, entsprechen den an a übergebenen Argumenten Tor und lade es in die ein registriert
  3. vereinheitlichenAussagen, entsprechen Argumenten von a Struktur und vereinen sie mit bestehenden Strukturen oder schaffen neue Strukturen.
  4. prozedural Anweisungen, kümmern Sie sich um die Übertragung der Kontrolle und weisen Sie Speicherplatz zu und geben Sie ihn frei.
  5. 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