Abstract machine

[1] It is similar to a mathematical function in that it receives inputs and produces outputs based on predefined rules.

[3] A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter.

[2] A deterministic abstract machine is a system in which a particular beginning state or condition always yields the same outputs.

[6] Non-deterministic algorithms are helpful for obtaining approximate answers when deriving a precise solution using a deterministic approach is difficult or costly.

[9][14] In digital computers, the stack is simply a memory unit with an address register that can count only positive integers (after an initial value is loaded into it).

The UNCOL concept is good, but it has not been widely used due to the poor performance of the generated code.

In many areas of computing, its performance will continue to be an issue despite the development of the Java Virtual Machine in the late 1990s.

Algol Object Code (1964), P4-machine (1976), UCSD P-machine (1977), and Forth (1970) are some successful abstract machines of this kind.

[3] Abstract machines for object-oriented programming languages are often stack-based and have special access instructions for object fields and methods.

One reason is because effective implementation of strict evaluation is now well-understood, therefore the necessity for an abstract machine has diminished.

The rules in Prolog are written in a uniform format known as universally quantified 'Horn clauses', which means to begin the calculation that attempts to discover a proof of the objective.

The Warren Abstract Machine WAM (1983),[3] which has become the de facto standard in Prolog program compilation, has been the focus of most study.

However, given the variety of languages, it is conceivable to identify categories of operations and an "execution mechanism" shared by all interpreters.

In the abstract machine, data and programmes can be held indefinitely, or in the case of programming languages, memory can be allocated or deallocated using a more complex mechanism.

A hardware computer, constructed with physical electronic devices, can be added at the most basic level.

Finally, a specialised application can be found at the highest level (for example, E-commerce) which has very specific and limited functionality.

A run of a Turing machine
Pictorial representation of a Krivine machine
The structure of an abstract machine
A hierarchy of abstract machines