Описание тега warren-abstract-machine
The Warren Abstract Machine (WAM) is an abstract machine for the execution of Prolog consisting of a memory architecture and an instruction set designed in 1983 by David H. D. Warren.
3
ответа
Альтернативы WAM
Я помню, как однажды прочитал, что по крайней мере две другие альтернативы были изобретены примерно одновременно с WAM. Есть указатели?
18 дек '10 в 15:17
2
ответа
Когда выполняются инструкции программы Уоррена "Абстрактная машина"?
Я читаю книгу Хасана Айт-Качи "Абстрактная машина Уоррена: реконструкция учебника". В главе 2 компиляция программ L0 представлена после компиляции запросов L0. Раздел компиляции программы (2.3) начинается с: Составить программный термин p немного …
27 окт '16 в 21:25
0
ответов
Как генерация кода работает для Ait-Kaci's WAM L1?
В разделе 2.4 Хасана Айт-Качи "Абстрактная машина Уоррена: реконструкция учебника" расширяется L0 до L1 для поддержки набора фактов в абстрактной машине. Четыре новые инструкции put_variable, put_value, get_variable а также get_value есть аргументы…
30 окт '16 в 18:09
1
ответ
Пролог GNU: отображение WAM-кода для запроса?
Можно ли отобразить код WAM для запроса с использованием GNU Prolog? Я знаю, что могу использовать pl2wam для генерации WAM для программы, но как насчет запросов, которые я выполняю в программе? Есть ли способ показать код WAM для этого? Я использую…
26 окт '13 в 23:57
1
ответ
Каков правильный порядок генерации WAM-кода для программных терминов L0?
В Разделе 2.2 Хасана Айт-Качи "Абстрактная машина Уоррена: реконструкция учебника" порядок составления запросов L0 достаточно ясен: регистры должны быть распределены с помощью поиска слева направо, а код должен генерироваться с левой - справа налево…
28 окт '16 в 20:01
1
ответ
Пример алгоритма объединения в WAM (абстрактная машина Уоррена)
Упражнение 2.2 в абстрактной машине Уоррена: реконструкция учебника запрашивает представления для терминов f(X, g(X, a)) и f(b, Y), а затем выполняет объединение по адресу этих терминов (обозначается как a1 и a2 соответственно). Я построил кучные пр…
18 окт '13 в 21:45
1
ответ
Где в абстрактной машине Уоррена создаются переменные аргумента?
Я пытаюсь создать свою собственную реализацию WAM и использую инструкции на рис. 2.10 "Абстрактная машина Уоррена: реконструкция учебника" в качестве контрольного примера. Однако мне нужно пройти A1 а также A2 в get_structure, Но где создаются обе п…
15 авг '13 в 20:07
1
ответ
Как работает связывание в абстрактной машине Уоррена, если одним из аргументов является регистр?
Я пытаюсь создать свою собственную реализацию WAM, и я застрял в упражнении 2.4. Я не могу понять, как выполнить инструкцию unify_value X4 на рисунке 2.4. Насколько я понимаю, эта инструкция должна объединять Y из программы с f(W) из запроса. unify_…
23 фев '15 в 01:33
1
ответ
Показать WAM-код для данной программы Prolog
Имеется ли программа Prolog, есть ли какая-либо команда GNU Prolog для просмотра кода WAM относительно этой программы?
15 дек '15 в 13:53
1
ответ
Сравнение абстрактных машин для исполнения Пролога
Я ищу исследовательскую работу или любую другую публикацию, в которой сравниваются разные абстрактные машины (более одной) для выполнения Пролога с интерпретаторами пролога, не основанными на абстрактных машинах. До сих пор я видел, что большинство …
17 май '14 в 13:17
1
ответ
Как я могу проверить WAM-код в SICStus Prolog
В контексте взлома clpz на sicstus-prolog я хочу взглянуть на код warren -abstract-machine, сгенерированный SICStus Prolog. В качестве примера рассмотрим следующий предикат! is_list([]). is_list([_|Es]) :- is_list(Es). Вот что я делаю сейчас: Раздел…
31 авг '19 в 12:04
1
ответ
Книга WAM: Как генерируется код при работе с регистрами аргументов (L1)?
Я работаю над книгой Хасана Айт-Качи "Абстрактная машина Уоррена - Реконструкция учебного пособия". В настоящее время я застрял в разделе 2.4 "Регистры аргументов". Чтобы быть точным, я не понимаю, как получить из этих назначений регистров (стр.22) …
25 июн '20 в 05:39
0
ответов
реализовать отрицание (\+ или not / 1) в WAM Prolog
Как бы вы реализовали отрицание по отказу (+) в WAM? Или (->;)soft-cut. Мы предполагаем, что сокращение реализовано. Например, Once описывается swi-pl как, once(Goal) :- Goal, !. Чтобы добавить еще один источник, в самой Википедии просто есть расплы…
06 сен '20 в 04:13
3
ответа
Нужен ли в Prolog сборщик мусора, когда глобальная проверка происходит?
Насколько я могу судить, при звуковой унификации разрешение SLD не должно создавать циклические структуры данных (это правильно?) Если это так, теоретически можно реализовать Prolog таким образом, чтобы не требовалась сборка мусора (GC). Но опять же…
15 ноя '20 в 05:38
1
ответ
Есть ли в WAM Prolog таблица символов?
Я пытаюсь запрограммировать WAM-реализацию Prolog на C. Я заметил, что типы данных Prolog описаны только в четырех типах токенов: REF, STR, CON и LIS. Каждая ячейка в куче выполнения содержит тип токена и его позицию в куче. Обратите внимание, что н…
02 окт '20 в 23:06
1
ответ
Сглаженная форма в WAM
WAM: A Tutorial Reconstruction утверждает, что запрос p(Z, h(Z,W), f(W)) должен быть сглажен, используя следующие принципы: При этом уплощенная форма запроса: X3=h(X2, X5), X4=f(X5), X1=p(X2, X3, X4); Я заблудился с определением внешней переменной, …
13 ноя '20 в 04:51
0
ответов
Распределение регистров WAM для одинаковых структур
Абстрактная машина Уоррена Реконструкция учебника утверждает следующее для правил распределения регистров переменных: Регистры переменных распределяются по наименее доступному индексу. Регистр X1 всегда назначается самому внешнему терму. Один и тот …
16 ноя '20 в 01:59