Abstract machines for programming language implementation

Stephan Diehl, Pieter Hartel, Peter Sestoft
2000 Future generations computer systems  
We present an extensive, annotated bibliography of the abstract machines designed for each of the main programming paradigms (imperative, object oriented, functional, logic and concurrent). We conclude that whilst a large number of efficient abstract machines have been designed for particular language implementations, relatively little work has been done to design abstract machines in a systematic fashion. What is an abstract machine? Abstract machines are machines because they permit
more » ... ep execution of programs; they are abstract because they omit the many details of real (hardware) machines. Abstract machines provide an intermediate language stage for compilation. They bridge the gap between the high level of a programming language and the low level of a real machine. The instructions of an abstract machine are tailored to the particular operations required to implement operations of a specific source language or class of source languages. Common to most abstract machines are a program store and a state, usually including a stack and registers. The program is a sequence of instructions, with a special register (the program counter) pointing at the next instruction to be executed. The program counter is advanced when the instruction is finished. This basic control mechanism of an abstract machine is also known as its execution loop. Alternative characterizations The above characterization fits many abstract machines, but some abstract machines are more abstract than others. The extremes of this spectrum are characterized as follows: • An abstract machine is an intermediate language with a small-step operational semantics [107]. • An abstract machine is a design for a real machine yet to be built. Related terms The term abstract machine is sometimes also used for different concepts and other terms are used for the concept of abstract machines, e.g. some authors 0167-739X/00/$ -see front matter © 2000 Elsevier Science B.V. All rights reserved. PII: S 0 1 6 7 -7 3 9 X ( 9 9 ) 0 0 0 8 8 -6
doi:10.1016/s0167-739x(99)00088-6 fatcat:qx6mlakihzecvlaiorgzuwdzxi