Abstract
We have designed, implemented, and proved the correctness of a compiler generator that accepts action semantic descriptions of imperative programming languages. The generated compilers emit absolute code for an abstract RISC machine language that currently is assembled into code for the SPARC and the HP Precision Architecture. Our machine language needs no run-time type-checking and is thus more realistic than those considered in previous compiler proofs. We use solely algebraic specifications; proofs are given in the initial model.
Chapter PDF
Similar content being viewed by others
Keywords
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.
References
Harald Abelson, Gerald Jay Sussman, and Julie Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1985.
Roberto M. Amadio and Luca Cardelli. Subtyping recursive types. In Eightteenth Symposium on Principles of Programming Languages. ACM Press, January 1991.
Rudolf Berghammer, Herbert Ehler, and Hans Zierer. Towards an algebraic specification of code generation. Science of Computer Programming, 11:45–63, 1988.
William R. Bevier, Warren A. Hunt, J. Strother Moore, and William D. Young. An approach to systems verification. Journal of Automated Reasoning, 5:411–428, 1989.
Anders Bondorf. Automatic autoprojection of higher order recursive equations. In Proc. ESOP'90, European Symposium on Programming. Springer-Verlag (LNCS 432), 1990.
Anders Bondorf and Olivier Danvy. Automatic autoprojection of recursive equations with global variables and abstract data types. Science of Computer Programming, 16:151–195, 1991.
Rod M. Burstall and Peter J. Landin. Programs and their proofs: an algebraic approach. In B. Meltzer and D. Mitchie, editors, Machine Intelligence, Vol. 4, pages 17–43. Edinburgh University Press, 1969.
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8:173–202, 1987.
Mads Dam and Frank Jensen. Compiler generation from relational semantics. In Proc. ESOP'86, European Symposium on Programming. Springer-Verlag (LNCS 213), 1986.
Joëlle Despeyroux. Proof of translation in natural semantics. In LICS'86, First Symposium on Logic in Computer Science, June 1986.
Anders Gammelgaard and Flemming Nielson. Verification of the level 0 compiling specification. Technical report, Department of Computer Science, Aarhus University, July 1990.
Joseph A. Goguen, James W. Thatcher, and Eric G. Wagner. An initial algebra approach to the specification, correctness, and implementation of abstract data types. In Raymond T. Yeh, editor, Current Trends in Programming Methodology, Volume IV. Prentice-Hall, 1978.
Carsten K. Gomard and Neil D. Jones. A partial evaluator for the untyped lambda-calculus. Journal of Functional Programming, 1(1):21–69, 1991.
John Hannan. Making abstract machines less abstract. In Proc. Conference on Functional Programming Languages and Computer Architecture. Springer-Verlag LNCS, 1991.
John Hannan. Staging transformations for abstract machines. In Proc. ACM SIGPLAN Symposium on Partial Evaluation and Semantics Based Program Manipulation. Sigplan Notices, 1991.
John Hannan and Dale Miller. From operational semantics to abtract machines. Journal of Mathmatical Structures in Computer Science, To appear, 1991.
Warren A. Hunt. Microprocessor design verification. Journal of Automated Reasoning, 5:429–460, 1989.
Jeffrey J. Joyce. Totally verified systems: Linking verified software to verified hardware. In Proc. Hardware Specification, Verification and Synthesis: Mathmatical Aspects, July 1989.
Jeffrey J. Joyce. A verified compiler for a verified microprocessor. Technical report, University of Cambridge, Computer Laboratory, England, March 1989.
Gilles Kahn. Natural semantics. In Proc. STACS'87. Springer-Verlag (LNCS 247), 1987. [21] Richard Kelsey and Paul Hudak. Realistic compilation by program transformation. In Sixteenth Symposium on Principles of Programming Languages. ACM Press, January 1989.
Peter Lee. Realistic Compiler Generation. MIT Press, 1989.
Peter Lee and Uwe F. Pleban. A realistic compiler generator based on high-level semantics. In Fourteenth Symposium on Principles of Programming Languages, pages 284–295. ACM Press, January 1987.
John McCarthy and James Painter. Correctness of a compiler for arithmetic expressions. In Proc. Symposium in Applied Mathematics of the American Mathmatical Society, April 1966.
Sun Microsystems. A RISC tutorial. Technical Report 800-1795-10, revision A, May 1988.
Robert E. Milne and Christopher Strachey. A Theory of Programming Language Semantics. Chapman and Hall, 1976.
J. Strother Moore. A mechanically verified language implementation. Journal of Automated Reasoning, 5:461–492, 1989.
Francis Lockwood Morris. Advice on structuring compilers and proving them correct. In Symposium on Principles of Programming Languages, pages 144–152. ACM Press, October 1973.
Peter D. Mosses. SIS—semantics implementation system. Technical Report Daimi MD-30, Computer Science Department, Aarhus University, 1979.
Peter D. Mosses. A constructive approach to compiler correctness. In Proc. Seventh Colloquium of Automata, Languages, and Programming, July 1980.
Peter D. Mosses. Abstract semantic algebras! In Proc. IFIP TC2 Working Conference on Formal Description of Programming Concepts II (Garmisch-Partenkirchen, 1982). North-Holland, 1983.
Peter D. Mosses. A basic abstract semantic algebra. In Proc. Int. Symp. on Semantics of Data Types (Sophia-Antipolis). Springer-Verlag (LNCS 173), 1984.
Peter D. Mosses. Unified algebras and action semantics. In Proc. STACS'89. Springer-Verlag, 1989.
Peter D. Mosses. Unified algebras and institutions. In LICS'89, Fourth Annual Symposium on Logic in Computer Science, 1989.
Peter D. Mosses. Unified algebras and modules. In Sixteenth Symposium on Principles of Programming Languages. ACM Press, January 1989.
Peter D. Mosses. Action semantics. Lecture Notes, Version 9 (a revised version is to be published by Cambridge University Press in the Series Tracts in Theoretical Computer Science), 1991.
Peter D. Mosses. An introduction to action semantics. Technical Report DAIMI IR-102, Computer Science Department, Aarhus University, July 1991. Lecture Notes for the Marktoberdorf'91 Summer School.
Peter D. Mosses and David A. Watt. The use of action semantics. In Proc. IFIP TC2 Working Conference on Formal Description of Programming Concepts III (Gl. Avernæs, 1986). North-Holland, 1987.
Flemming Nielson and Hanne Riis Nielson. Two-level semantics and code generation. Theoretical Computer Science, 56, 1988.
Flemming Nielson and Hanne Riis Nielson. Two-level functional languages. Draft book. To be published by Cambridge University Press, 1991.
Hanne R. Nielson and Flemming Nielson. Automatic binding time analysis for a typed λ-calculus. Science of Computer Programming, 10:139–176, 1988.
Hewlett Packard. Precision architecture and instruction. Technical Report 09740-90014, June 1987.
Jens Palsberg. An automatically generated and provably correct compiler for a subset of Ada. In Proc. ICCL'92, Fourth IEEE International Conference on Computer Languages, 1992.
Jens Palsberg. Provably Correct Compiler Generation. PhD thesis, Computer Science Department, Aarhus University, 1992. Forthcoming.
Lawrence Paulson. A semantics-directed compiler generator. In Ninth Symposium on Principles of Programming Languages, pages 224–233. ACM Press, January 1982.
Uwe F. Pleban. Compiler prototyping using formal semantics. In Proc. ACM SIGPLAN'84 Symposium on Compiler Construction, pages 94–105. Sigplan Notices, 1984.
Uwe F. Pleban and Peter Lee. On the use of LISP in implementing denotational semantics. In Proc. ACM Conference on LISP and Functional Programming, August 1986.
Uwe F. Pleban and Peter Lee. High-level semantics, an integrated approach to programming language semantics and the specification of implementations. In Proc. Mathmatical Foundations of Programming Language Semantics, April 1987.
Uwe F. Pleban and Peter Lee. An automatically generated, realistic compiler for an imperative programming language. In Proc. SIGPLAN'88 Conference on Programming Language Design and Implementation, June 1988.
Gordon D. Plotkin. A structural approach to operational semantics. Technical Report DAIMI FN-19, Computer Science Department, Aarhus University, September 1981.
Wolfgang Polak. Compiler Specification and Verification. Springer-Verlag (LNCS 213), 1981.
David A. Schmidt. Detecting global variables in denotational specifications. ACM Transactions on Programming Languages and Systems, 7(2):299–310, 1985.
David A. Schmidt. Denotational Semantics. Allyn and Bacon, 1986.
David A. Schmidt. Detecting stack-based environments in denotational semantics. Science of Computer Programming, 11:107–131, 1988.
Uwe Schmidt and Reinhard Völler. A multilanguage compiler system with automatically generated codegenerators. In Proc. ACM SIGPLAN'84 Symposium on Compiler Construction. Sigplan Notices, 1984.
Uwe Schmidt and Reinhard Völler. Experience with VDM in Norsk Data. In VDM'87. VDM—A Formal Method at Work. Springer-Verlag (LNCS 252), March 1987.
William Stallings. Reduced Instruction Set Computers. IEEE Computer Society Press, 1986.
Joseph E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, 1977.
James W. Thatcher, Eric G. Wagner, and Jesse B. Wright. More on advice on structuring compilers and proving them correct. Theoretical Computer Science, 15:223–249, 1981.
Mads Tofte. Compiler Generators. Springer-Verlag, 1990.
Larry Wall and Randal L. Schwartz. Programming Perl. O'Reilly, 1991.
Mitchell Wand. A semantic prototyping system. In Proc. ACM SIGPLAN'84 Symposium on Compiler Construction, pages 213–221. Sigplan Notices, 1984.
David Watt. Programming Language Syntax and Semantics. Prentice-Hall, 1991.
Niklaus Wirth. Algorithms + Data Structures = Programs. Prentice-Hall, 1976.
William D. Young. A mechanically verified code generator. Journal of Automated Reasoning, 5:493–518, 1989.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Palsberg, J. (1992). A provably correct compiler generator. In: Krieg-Brückner, B. (eds) ESOP '92. ESOP 1992. Lecture Notes in Computer Science, vol 582. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-55253-7_25
Download citation
DOI: https://doi.org/10.1007/3-540-55253-7_25
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-55253-6
Online ISBN: 978-3-540-46803-5
eBook Packages: Springer Book Archive