内容简介:In 1983,David H. D. Warren designed anabstract machine for the execution ofProlog consisting of amemory architecture and aninstruction set.This design became known as theThe purpose of compiling Prolog code to the more low-level WAM code is to make subsequ
In 1983,David H. D. Warren designed anabstract machine for the execution ofProlog consisting of amemory architecture and aninstruction set.This design became known as the Warren Abstract Machine (WAM) and has become the de facto standard target for Prologcompilers.
Contents
Purpose [ edit ]
The purpose of compiling Prolog code to the more low-level WAM code is to make subsequent interpretation of the Prolog program more efficient. Prolog code is reasonably easy to translate to WAM instructions, which can be more efficiently interpreted. Also, subsequent code improvements and compilations to native code are often easier to perform on the more low-level representation.
In order to write efficient Prolog programs, a basic understanding of how the WAM works can be advantageous. Some of the most important WAM concepts are first argument indexing and its relation to choice-points, tail call optimization , and memory reclamation on failure.
Memory areas [ edit ]
The WAM has the following memory areas:
- The global stack or heap , used to store compound terms
- The local stack for environment frames and choice-points
- The trail to record which variables bindings ought to be undone on backtracking
Example [ edit ]
Here is a piece of Prolog code:
girl(sally). girl(jane). boy(B) :- \+ girl(B).
A WAM-based Prolog compiler will compile this into WAM instructions similar to the following:
predicate(girl/1):
switch_on_term(2,1,fail,fail,fail),
label(1): switch_on_atom([(sally,3),(jane,5)])
label(2): try_me_else(4)
label(3): get_atom(sally,0)
proceed
label(4): trust_me_else_fail
label(5): get_atom(jane,0)
proceed
predicate(boy/1):
get_variable(x(1),0)
put_structure(girl/1,0)
unify_local_value(x(1))
execute((\+)/1)])
An important characteristic of this code is its ability to cope with the various modes in which the predicates can be evoked: any argument might be a variable, aground term, or a partly instantiated term. The "switch" instructions handle the different cases.
References [ edit ]
- David H. D. Warren (October 1983). An abstract Prolog instruction set (PDF) . Menlo Park, CA, USA: Artificial Intelligence Center atSRI International.
- Hassan Aït-Kaci (February 18, 1999). Warren's Abstract Machine: A Tutorial Reconstruction (PDF) . Archived from the original (PDF) on 2003-02-13.
- Hassan Aït-Kaci. "Warren's Abstract Machine: A Tutorial Reconstruction; the book, errata and slides" . Retrieved 7 March 2011 .
以上所述就是小编给大家介绍的《Warren Abstract Machine (WAM)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Unix/Linux编程实践教程
Bruce Molay、杨宗源、黄海涛 / 杨宗源、黄海涛 / 清华大学出版社 / 2004-10-1 / 56.00元
操作系统是计算机最重要的系统软件。Unix操作系统历经了几十年,至今仍是主流的操作系统。本书通过解释Unix的工作原理,循序渐进地讲解实现Unix中系统命令的方法,让读者理解并逐步精通Unix系统编程,进而具有编制Unix应用程序的能力。书中采用启发式、举一反三、图示讲解等多种方法讲授,语言生动、结构合理、易于理解。每一章后均附有大量的习题和编程练习,以供参考。 本书适合作为高等院校计算机及......一起来看看 《Unix/Linux编程实践教程》 这本书的介绍吧!