内容简介: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)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
硅谷增长黑客实战笔记
曲卉 / 机械工业出版社 / 2018-4-10 / 65.00元
增长黑客这个词源于硅谷,简单说,这是一群以数据驱动营销、以迭代验证策略,通过技术手段实现爆发式增长的新型人才。近年来,互联网公司意识到这一角色可以发挥四两拨千斤的作用,因此对该职位的需求也如井喷式增长。 本书作者曾在增长黑客之父肖恩•埃利斯麾下担任增长负责人,用亲身经历为你总结出增长黑客必备的套路、内力和兵法。本书不仅有逻辑清晰的理论体系、干货满满的实践心得,还有Pinterest、SoFi......一起来看看 《硅谷增长黑客实战笔记》 这本书的介绍吧!