Skip to main content

Making abstract machines less abstract

  • Conference paper
  • First Online:
Functional Programming Languages and Computer Architecture (FPCA 1991)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 523))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173–202, 1987.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. P.J. Landin. The mechanical evaluation of expressions. Computer Journal, 6(5):308–320, 1964.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. A. Suárez. Compiling ML into CAM. In G. Huet, editor, Logical Foundations of Functional Programming, chapter 4, pages 47–73, Addison-Wesley, 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

John Hughes

Rights and permissions

Reprints 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

Publish with us

Policies and ethics