Abstract
We consider a class of abstract machines used for specifying the evaluation of intermediate-level programming languages, and demonstrate how various abstract aspects of these machines can be made concrete, providing for their direct implementation in a low-level microcoded architecture. We introduce the concept of stored programs and data to abstract machines. We demonstrate how machines that dynamically manipulate programs with abstract operations can be translated into machines that only need to read instructions from a fixed program. We show how familiar architectural features, such as a program counter, instruction register and a display can all be introduced very naturally into an abstract machine architecture once programs are represented as objects stored in memory. This translation lowers the level of the abstract machine, making it less abstract or, equivalently, more concrete. The resulting machines bear a close resemblance to a microcoded architecture in which the abstract machine instructions are defined in terms of a small set of micro-instructions that manipulate registers and memory. This work provides a further basis for the formal construction and implementation of abstract machines used for implementing programming languages. We demonstrate our results on an abstract machine that is a slight variant of the Categorical Abstract Machine.
Preview
Unable to display preview. Download preview PDF.
References
A. Appel and D. MacQueen. A standard ML compiler. In G. Kahn, editor, Proceedings of the Conference on Functional Programming and Computer Architecture, Springer-Verlag LNCS, Vol. 274, 1987.
G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173–202, 1987.
J. Hannan. Staging transformations for abstract machines. In J. Hughes, editor, Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics Based Program Manipulation, ACM Press, 1991.
J. Hannan and D. Miller. From operational semantics to abstract machines: preliminary results. In M. Wand, editor, Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, pages 323–332, ACM, ACM Press, 1990.
P.J. Landin. The mechanical evaluation of expressions. Computer Journal, 6(5):308–320, 1964.
M. Mauny and A. Suárez. Implementing functional languages in the categorical abstract machine. In Proceedings of the 1986 Symposium on Lisp and Functional Programming, 1986.
L. Puel and A. Suárez. Compiling pattern matching by term decomposition. In M. Wand, editor, Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, pages 273–281, ACM, ACM Press, 1990.
A. Suárez. Compiling ML into CAM. In G. Huet, editor, Logical Foundations of Functional Programming, chapter 4, pages 47–73, Addison-Wesley, 1990.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1991 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hannan, J. (1991). Making abstract machines less abstract. In: Hughes, J. (eds) Functional Programming Languages and Computer Architecture. FPCA 1991. Lecture Notes in Computer Science, vol 523. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3540543961_29
Download citation
DOI: https://doi.org/10.1007/3540543961_29
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-54396-1
Online ISBN: 978-3-540-47599-6
eBook Packages: Springer Book Archive