An automatically generated and provably correct compiler for a subset of Ada

The automatic generation of a provably correct compiler for a nontrivial subset of Ada is described. The compiler is generated from an action semantic description; it emits absolute code for an abstract RISC (reduced instruction set computer) machine language that currently is assembled into code for the SPARC and the HP Precision Architecture. The generated code is an order of magnitude better than what is produced by compilers generated by the classical systems of P.D. Mosses, L. Paulson, and M. Wand. The use of action semantics makes the processable language specification easy to read and pleasant to work with.<<ETX>>

[1]  M.N. Sastry,et al.  Structure and interpretation of computer programs , 1986, Proceedings of the IEEE.

[2]  Peter D. Mosses,et al.  Unified Algebras and Institutions , 1989 .

[3]  Joe Stoy,et al.  Denotational Semantics , 1977 .

[4]  Paul Hudak,et al.  Realistic compilation by program transformation (detailed summary) , 1989, POPL '89.

[5]  Peter Lee,et al.  High-Level Semantics: An Integrated Approach to Programming Language Semantics and the Specification of Implementations , 1987, MFPS.

[6]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[7]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[8]  Uwe Schmidt,et al.  Experience with VDM in Norsk Data , 1987, VDM Europe.

[9]  Richard Tuck,et al.  A RISC Tutorial , 1991 .

[10]  Paul Hudak,et al.  Realistic Compilation by Program Transformation. , 1989 .

[11]  William Stallings An annotated bibliography on reduced instruction set computers , 1986, CARN.

[12]  Uwe F. Pleban Compiler prototyping using formal semantics , 1984, SIGPLAN '84.

[13]  Rudolf Berghammer,et al.  Towards an algebraic specification of code generation , 1988, Sci. Comput. Program..

[14]  Peter D. Mosses Unified Algebras and Action Semantics , 1989, STACS.

[15]  Jens Palsberg An Automatically Generated and Provably Correct Compiler for a Subset of Ada , 1992 .

[16]  Joëlle Despeyroux,et al.  Proof of Translation in Natural Semantics , 1986, LICS.

[17]  Peter D. Mosses Unified Algebras and Modules , 1988 .

[18]  Peter D. Mosses A Constructive Approach to Compiler Correctness , 1980, ICALP.

[19]  John McCarthy,et al.  Correctness of a compiler for arithmetic expressions , 1966 .

[20]  Jens Palsberg,et al.  Provably Correct Compiler Generation , 1992 .

[21]  Peter D. Mosses,et al.  Unified algebras and institutions , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[22]  Peter Lee,et al.  A realistic compiler generator based on high-level semantics: another progress report , 1987, POPL '87.

[23]  Jean D. etc. Ichbiah Reference Manual for the ADA Programming Language , 1983 .

[24]  Peter Lee Realistic compiler generation , 1989, Foundations of Computing Series.

[25]  F. Lockwood Morris,et al.  Advice on structuring compilers and proving them correct , 1973, POPL.

[26]  Peter D. Mosses An Introduction to Action Semantics , 1991 .

[27]  Mitchell Wand A semantic prototyping system , 1984, SIGPLAN '84.

[28]  James W. Thatcher,et al.  More on Advice on Structuring Compilers and Proving them Correct , 1979, Theor. Comput. Sci..

[29]  William Stallings Reduced Instruction Set Computers , 1990 .

[30]  Peter D. Mosses,et al.  A Basic Abstract Semantic Algebra , 1984, Semantics of Data Types.

[31]  Peter J. Landin,et al.  PROGRAMS AND THEIR PROOFS: AN ALGEBRAIC APPROACH, , 1968 .

[32]  David A. Watt Programming language syntax and semantics , 1991, Prentice Hall International Series in Computer Science.

[33]  Peter D. Mosses,et al.  A constructive approach to compiler correctness , 1980, Semantics-Directed Compiler Generation.

[34]  Peter D. Mosses,et al.  Abstract Semantic Algebras , 1982, Formal Description of Programming Concepts.

[35]  Lawrence C. Paulson A semantics-directed compiler generator , 1982, POPL '82.

[36]  Peter Lee,et al.  An automatically generated, realistic compiler for imperative programming language , 1988, PLDI '88.

[37]  James W. Thatcher,et al.  More on advice on structuring compilers and proving them correct , 1980, Semantics-Directed Compiler Generation.

[38]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[39]  Jeffrey J. Joyce,et al.  Totally Verified Systems: Linking Verified Software to Verified Hardware , 1989, Hardware Specification, Verification and Synthesis.

[40]  Wolfgang Polak,et al.  Compiler Specification and Verification , 1981 .

[41]  Peter D. Mosses,et al.  Denotational semantics , 1995, LICS 1995.

[42]  Peter D. Mosses Action Semantics , 1986, ADT.

[43]  Peter D. Mosses,et al.  The use of action semantics , 1986, Formal Description of Programming Concepts.

[44]  Flemming Nielson,et al.  Two-Level Semantics and Code Generation , 1988, Theor. Comput. Sci..

[45]  Peter Lee,et al.  On the use of LISP in implementing denotational semantics , 1986, LFP '86.

[46]  Larry Wall,et al.  Programming Perl , 1991 .

[47]  Christopher Strachey,et al.  A theory of programming language semantics , 1976 .

[48]  Peter D. Mosses,et al.  Unified algebras and modules , 1988, POPL '89.

[49]  Jens Palsberg,et al.  A Provably Correct Compiler Generator , 1992, ESOP.

[50]  Uwe Schmidt,et al.  A multi-language compiler system with automatically generated codegenerators , 1984, SIGPLAN '84.