Abstraction means a
processor design[?] which is not intended to be implemented as
hardware, but which is the notional executor of a particular intermediate language (abstract machine language) used in a
compiler or
interpreter[?]. An abstract machine has an
instruction set, a
register set[?] and a model of
memory[?]. It may provide instructions which are closer to the language being compiled than any physical
computer or it may be used to make the language implementation easier to port to other
platforms[?].
A virtual machine is an abstract machine for which an interpreter exists.
Examples: ABC programming language, Abstract Machine Notation, ALF, CAML[?], F-code[?], FP/M[?], Hermes, LOWL[?], Christmas[?], SDL, S-K reduction machine[?], SECD[?], Tbl[?], Tcode[?], TDF, TL0[?], WAM[?].
A procedure for executing a set of instructions in some formal language, possibly also taking in input data and producing output. Such abstract machines are not intended to be constructed as hardware but are used in
thought experiments about computability.
See also:
This article (or an earlier version of it) contains material from FOLDOC, used with permission. Modify if needed.
All Wikipedia text
is available under the
terms of the GNU Free Documentation License