Correctness of procedure representations in higher-order assembly language

  • Mitchell Wand
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 598)


Higher-order assembly language (HOAL) generalizes combinator-based target languages by allowing free variables in terms to play the role of registers. We introduce a machine model for which HOAL is the assembly language, and prove the correctness of a compiler from a tiny language into HOAL. We introduce the notion of a λ-representation, which is an abstract binding operation, show how some common representations of procedures and continuations can be expressed as λ-representations. Last, we prove the correctness of a typical procedure-calling convention in this framework.


Free Variable Operational Semantic Abstract Syntax Procedure Call Source Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Appel, A.W., and Jim, T., “Continuation-Passing, Closure-Passing Style,” Conf. Rec. 16th ACM Symp. on Principles of Programming Languages (1989), 293–302.Google Scholar
  2. [2]
    Barendregt, H.P. The Lambda Calculus: Its Syntax and Semantics, North-Holland, Amsterdam, 1981.Google Scholar
  3. [3]
    Boyer, R.S., and Moore, J S. “The Sharing of Structure in Theorem-Proving Programs,” in Machine Intelligence 7 (B. Meltzer & D. Michie, eds), Edinburgh University Press (1972), 101–116.Google Scholar
  4. [4]
    Church, A. “A formulation of the simple theory of types,” J. of Symbolic Logic 5 (1940), 56–68.Google Scholar
  5. [5]
    Clinger, W. “The Scheme 311 Compiler: An Exercise in Denotational Semantics,” Conf. Rec. 1984 ACM Symposium on Lisp and Functional Programming (August, 1984), 356–364.Google Scholar
  6. [6]
    Hannan, J. “Making Abstract Machines Less Abstract,” Proc. 1991 ACM Conf. on Functional Programming, Languages, and Architectures, to appear.Google Scholar
  7. [7]
    Kelsey, R., and Hudak, P. “Realistic Compilation by Program Transformation,” Conf. Rec. 16th Ann. ACM Symp. on Principles of Programming Languages (1989), 281–292.Google Scholar
  8. [8]
    Meyer, A.R. “What Is a Model of the Lambda Calculus?” Information and Control 52 (1982), 87–122.CrossRefGoogle Scholar
  9. [9]
    Meyer, A.R., and Wand, M. “Continuation Semantics in Typed Lambda-Calculi,” Logics of Programs (Brooklyn, June, 1985) (R. Parikh, ed.) Springer Lecture Notes in Computer Science, vol. 193 (1985), pp. 219–224.Google Scholar
  10. [10]
    Mitchell, J.C. “Representation Independence and Data Abstraction,” Proc. 13th ACM Symp. on Princ. of Programming Languages (1986), 263–276.Google Scholar
  11. [11]
    Pfenning, F., and Elliott, C, “Higher-Order Abstract Syntax,” Proc. SIGPLAN '88 Conf. on Prog. Lang. Design and Implementation, (June, 1988), 199–208.Google Scholar
  12. [12]
    Plotkin, G.D. “Call-by-Name, Call-by-Value and the λ-Calculus,” Theoret. Comp. Sci. 1 (1975) 125–159.Google Scholar
  13. [13]
    Schmidt, D.A. “Detecting Global Variables in Denotational Semantics,” ACM TOPLAS 7 (1985) 299–310.Google Scholar
  14. [14]
    Sethi, R. “Control Flow Aspects of Semantics-Directed Compiling” ACM Trans. on Prog. Lang. and Sys. 5 (1983) 554–596.Google Scholar
  15. [15]
    Stoy, J.E. “The Congruence of Two Programming Language Definitions,” Theoret. Comp. Sci. 13 (1981), 151–174.Google Scholar
  16. [16]
    Turner, D.A. “A New Implementation Technique for Applicative Languages,” Software-Practice and Experience 9 (1979), 31–49.Google Scholar
  17. [17]
    Wand, M. “Semantics-Directed Machine Architecture” Conf. Rec. 9th ACM Symp. on Principles of Prog. Lang. (1982), 234–241.Google Scholar
  18. [18]
    Wand, M. “Deriving Target Code as a Representation of Continuation Semantics” ACM Trans. on Prog. Lang. and Systems 4, 3 (July, 1982) 496–517.CrossRefGoogle Scholar
  19. [19]
    Wand, M. “Loops in Combinator-Based Compilers,” Conf. Rec. 10th ACM Symposium on Principles of Programming Languages (1983), 190–196.Google Scholar
  20. [20]
    Wand, M. “Embedding Type Structure in Semantics” Conf. Rec. 12th ACM Symp. on Principles of Prog. Lang. (1985), 1–6.Google Scholar
  21. [21]
    Wand, M. “A Short Proof of the Lexical Addressing Algorithm,” Information Processing Letters 35 (1990), 1–5.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Mitchell Wand
    • 1
  1. 1.College of Computer ScienceNortheastern UniversityBostonUSA

Personalised recommendations