SlideServe
Menu
Préférences
© SlideServe · v2026

WAM

illias avatar
15 diapositives · 390 Views · Aug 08, 2014

WAM. Warren Abstract Machine. Maria Kowalska, Leonard Żuchowski. WSTĘP. Term -zmienne, stałe, struktury f(t 1 ,..,t n ) M=<D,I>- abstrakcyjna maszyna dla języka prolog.

WAM - slide 1
01 / 15WAM
1 / 17

Télécharger la présentation

WAM
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. WAM Warren Abstract Machine Maria Kowalska, Leonard Żuchowski

  2. WSTĘP • Term-zmienne, stałe, struktury f(t1,..,tn) • M=<D,I>-abstrakcyjna maszyna dla języka prolog. • IDEA – dla zdefiniowanego termu p w programie oraz zapytania ?-q, wykonanie dla p nie unifikującego się z q zawodzi, wpp. Wykonanie kończy się powodzeniem.

  3. WSTĘP WMA zakłada trzy zasady zwane też sztandarowym modelem wykonania. Leżą one u podstaw każdej implementacji Prologa • Prolog daje się łatwo przetłumaczyć na polecenia WMA • Implementacja WMA jest efektywna na prawdziwej maszynie • Optymalizacja łatwa jest do integracji

  4. WMA-budowa

  5. WMA-budowa • STORE -pamięć z indeksowanym dostępem • CODE-załadowany program • HEAP-reprezentacja termów • STACK- przechowalnia Environments (środowisko)i Choice Point(punkt wyboru) • TRAIL zaznaczenie wiązania zmiennych • PDL- Push Down List do unifikacji • Register- rejestry X1...Xn do przekazania argumentów i tymczasowego przechowania dla części podtermów

  6. Kopiec • CEL-reprezentacja termów w WMA. • STRUKTURA –tablice komórek z danymi • BUDOWA KOMÓRKI-<etykieta,k> -etykieta np..:REF, STR -k –adres przechowania • Instrukcje WMA: put_structure, set_variable, set_value

  7. Kopiec-budowa

  8. Unifikacja • Unifikujemy regułę p(s1,..,sn) z zapytaniem g(t1,..,tm). Kiedy p=g a n=m , to wystarczy si z ti (1,..n) unifikować. • W WMA najpierw są podtermy zapytania umieszczane w kopcu • WMA instrukcje: get_structure, get_variable, get_value, unify_value, unify_variable • Nowe termy w czasie unifikacji kładziemy na szczyt kopca.

  9. Top-down leftmost Rezolution /* Z góry na dół, od lewej do prawej */

  10. Backtracking • Pewne ścieżki rezolucji zwracają FAIL • W takim przypadku zmiany w środowisku maszyny jakie zaszły podczas wykonania procedury muszą zostać odwrócone • Stan sprzed wykonania procedury wskazuje choice point • Choice Point: • Aktualne środowisko (rejestr E) • Ostatni choice point (rejestr B) • Rejestr H : szczyt kopca • Zawartość rejestrów • Rejestr TR: adres kopca TRAIL do którego mają być zresetowane zmienne przy powrocie do choice pointu • Rejestr CP: adres następnej instrukcji do wywołania po pomyślnym powrocie z wywołania instrukcji

  11. Backtracking • Dla każdego wywołania instrukcji tworzone jest środowisko jej wykonania (stan przed wywołaniem) : environment frame • Ramki environment wraz z choice point’ami umieszczane są na stosie STACK • allocate : alokacja środowiska dla reguły • deallocate : usunięcie ramki

  12. Backtracking • Wywołanie a i stworzenie dla niego środowiska • Wywołanie b + ramka dla b • Wywołanie e + ramka dla e + choice point dla e • Wywołanie f, przypisanie zmiennej X wartości 2 • Wywołanie c + FAIL • Cofnięcie z wywołania f • Wywołanie następnej reguły dla choice point e • Pomyślne wykonanie reguły c

  13. Przykładowa kompilacja

  14. Kompilacja do instrukcji WAM • get_variable: pobranie zmiennej z kopca • get_structure: pobranie struktury z kopca [podtermu postaci f(p1,…,pn)] • put_value: dodanie do kopca wcześniej napotkanej zmiennej • put_structure: dodanie struktury do kopca • proceed: wskaźnik końca sekwencji aktualnej instrukcji i rozp. nast.: • P := CP • try_me_else L: alokacja choice pointu na stosie i ustawienie rejestru „następna klauzula do wykonania” na adres L

  15. Kompilacja do instrukcji WAM • retry_me_else L: po powrocie do choice pointu zresetowanie odpowiednich informacji i ustawienie pola „nast. kl. do. wyk.” na L • trust_me L: po powrocie do choice pointu zresetownie odpowiednich informacji w nim zawartych i ustawienie pola B na choice point poprzedni. • call p/n: ustawienie P na @(p/n), CP na adres następnej instrukcji do wykonania