Абстрактная машина Уоррена
-
Разработка абстрактной машины Уоррена (WAM)
- В 1983 году Дэвид Х. Уоррен создал WAM для выполнения Prolog.
- WAM стала стандартом для компиляторов Prolog, улучшая эффективность интерпретации программ.
-
Цель и преимущества WAM-компиляции
- Преобразование кода Prolog в WAM-код повышает эффективность интерпретации.
- Улучшения и компиляция в машинный код упрощаются при низкоуровневом представлении.
- Базовое понимание WAM полезно для написания эффективных программ на Prolog.
-
Важнейшие концепции WAM
- Индексация первого аргумента и точки выбора.
- Оптимизация конечных вызовов.
- Восстановление памяти при сбое.
-
Структура памяти WAM
- Глобальный стек или куча для составных терминов.
- Локальный стек для фреймов и точек выбора.
- След для отмены привязок переменных при обратном отслеживании.
-
Пример кода на Prolog и его WAM-компиляция
- Код на Prolog может работать с различными режимами вызова предикатов.
- Инструкции по «переключению» адаптируют код к различным случаям.