Warren abstrakte maskin

The Warren Abstract Machine ( abstract Warren Machine ) er en virtuell maskin for å gjennomføre språk Prolog . Denne maskinen består av et spesielt instruksjonssett samt et minne . Den ble definert av David HD Warren i 1983 . Det er en av de klassiske implementeringene for prolog .

Sett med instruksjoner

Den WAM instruksjonssett består av åtte typer instruksjoner.

Sett instruksjoner

Få instruksjoner

Instruksjoner Sett

forening instruksjoner

Kontrollinstruksjoner

Valginstruksjoner

Indeks uttalelser

Kuttinstruksjoner

Disse instruksjonene tillater styring av prologpausen (predikat! / 0).

Minnestruktur

Den hukommelse av den WAM maskinen er delt opp i fem deler (fra bunnen av minne):

Eksempler

Enten følgende prologprogram:

fille(anne). fille(claire). garcon(B) :- \+ fille(B).

Med en implementering basert på WAM, vil produktkoden være av skjemaet (i WAM mini-assembler):

predicate(fille/1): switch_on_term(2,1,fail, fail,fail), label(1): switch_on_atom([(anne,3),(claire,5)]) label(2): try_me_else(4) label(3): get_atom(anne,0) proceed label(4): trust_me_else_fail label(5): get_atom(claire,0) proceed predicate(garcon/1): get_variable(x(1),0) put_structure(fille/1,0) unify_local_value(x(1)) execute((\+)/1))

Eksterne linker