Warren抽象机

一个内存结构和一个指令集。这个设计被称为Warren抽象机(WAM),并且已经成为Prolog编译器事实上的标准目标

Warren抽象机的目的

将Prolog代码编译成更低级的WAM代码的目的是为了使随后对Prolog程序的解释更加有效。Prolog代码相当容易翻译成WAM指令,可以更有效地进行解释。而且,后续的代码改进和编译到本地代码往往更容易在更低级别的表示上执行。为了编写高效的Prolog程序,对WAM的工作原理有一个基本的了解是很有利的。一些最重要的WAM概念是xxx参数索引及其与选择点的关系,尾部调用优化,以及失败时的内存回收。

内存区域

WAM有以下内存区域。全局堆栈或堆,用于存储复合词本地堆栈,用于环境框架和选择点跟踪记录哪些变量的绑定在回溯时应该被撤销例子这里是一段Prolog代码。一个基于WAM的Prolog编译器将把它编译成类似于以下的WAM指令。

Warren抽象机

这段代码的一个重要特点是它能够处理各种可以调用谓词的模式:任何参数都可能是一个变量、一个基础术语或一个部分实例化的术语。开关指令处理不同的情况。

0

点评

点赞

相关文章