Abstract: Existing works on the construction of correct compilers have at least one of the following drawbacks: (i) correct compilers do not compile into machine code of existing processors. Instead they compile into programs of an abstract machine which ignores limitations and properties of real-life processors. (ii) the code generated by correct compilers is orders of magnitudes slower than the code generated by unverified compilers. (iii) the considered source language is much less complex than real-life programming languages. This paper focuses on the construction of correct compiler backends which generate machine-code for real-life processors from realistic intermediate languages. Our main results are the following: (i) We present a proof approach based on abstract state machines for bottom-up rewriting system specifications (BURS) for back-end generators. A significant part of this proof can be parametrized with the intermediate and machine language. (ii) The performance of the code constructed by our approach is in the same order of magnitude as the code generated by non-optimizing unverified C-compilers.
|
259
|
Designing programs that check their work
– Blum, Khanna
- 1995
|
|
81
|
Compiler Construction
– Waite, Goos
- 1984
|
|
80
|
The semantics of the C programming language
– Gurevich, Huggins
- 1993
|
|
66
|
The WAM -- Definition and Compiler Correctness
– Borger, Rosenzweig
- 1995
|
|
66
|
Correctness of a compiler for arithmetic expressions
– McCarthy, Painter
- 1967
|
|
41
|
Normal form approach to compiler design
– Hoare, Jifeng, et al.
- 1993
|
|
34
|
Semantic Lego
– Espinosa
- 1995
|
|
31
|
Montages: Specifications of Realistic Programming Languages
– Kutter, Pierantonio
- 1997
|
|
30
|
Actress: an action semantics directed compiler generator
– Brown, Moura, et al.
- 1992
|
|
29
|
A Semantic Prototyping System
– Wand
- 1984
|
|
27
|
Burs automata generation
– Proebsting
- 1995
|
|
25
|
Abstract Semantic Algebras
– Mosses
- 1982
|
|
22
|
Evolving Algebras: Lipari Guide
– GUREVICH
- 1995
|
|
21
|
Provably correct compiler development and implementation
– Buth, Buth, et al.
- 1992
|
|
18
|
Code selection by regularly controlled term rewriting
– Emmelmann
- 1992
|
|
17
|
Program verification
– Boyer, Moore
- 1985
|
|
13
|
Code generation based on formal BURS theory and heuristic search
– Nymeyer, Katoen
- 1996
|
|
12
|
Modular Compiler Verification
– Muller-Olm
- 1996
|
|
10
|
Semantics-Directed Generation of Compilers and Abstract Machines
– Diehl
- 1996
|
|
10
|
An automatically generated and provably correct compiler for a subset of ada
– Palsberg
- 1992
|
|
8
|
Occam: Specification and Compiler Correctness.Part I: The Primary Model
– Boerger, Durdanovic, et al.
- 1994
|
|
8
|
A compiler generator for semantic grammars
– Paulson
- 1981
|
|
7
|
Compiler Generators
– Tofte
- 1990
|
|
5
|
Correctness of compiling occam to transputer
– Borger, Durdanovic
- 1996
|
|
5
|
Provably Correct Compiler Implementation
– Buth, Muller-Olm
- 1993
|
|
4
|
An Evolving Algebra for the Alpha Processor Family. Verifix Working Paper [Verifix/UKA/4
– Gaul, Zimmermann
- 1995
|
|
3
|
Local correctness of term rewrite based code generators. Working paper, University of Karlsruhe/Ulm, September `96
– Dold, Gaul
- 1996
|
|
3
|
Action Semantics. Cambridge
– Mosses
- 1992
|
|
3
|
Montages speci cations of realistic programming languages
– Kutter, Pierantonio
- 1997
|
|
2
|
The Semantics of the C++--Programming Language
– Wallace
- 1995
|
|
2
|
The WAM|de nition and compiler correctness
– Borger, Rosenzweig
- 1995
|
|
1
|
T.: On the Construction of Correct Compiler Back-Ends
– Zimmermann, Gaul
|
|
1
|
Occam: Speci cation and Compiler Correctness.Part I: The Primary Model
– Borger, Durdanovic, et al.
- 1994
|
|
1
|
System veri cation
– Moore
- 1989
|
|
1
|
An Exercise in Compiler Veri cation
– Muller-Olm
- 1995
|