• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

A Provably Correct Compiler Generator (1992)

by Jens Palsberg
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 21
Next 10 →

Modular Denotational Semantics for Compiler Construction

by Sheng Liang, Paul Hudak - In European Symposium on Programming , 1996
"... . We show the benefits of applying modular monadic semantics to compiler construction. Modular monadic semantics allows us to define a language with a rich set of features from reusable building blocks, and use program transformation and equational reasoning to improve code. Compared to denotational ..."
Abstract - Cited by 52 (4 self) - Add to MetaCart
. We show the benefits of applying modular monadic semantics to compiler construction. Modular monadic semantics allows us to define a language with a rich set of features from reusable building blocks, and use program transformation and equational reasoning to improve code. Compared to denotational semantics, reasoning in monadic style offers the added benefits of highly modularized proofs and more widely applicable results. To demonstrate, we present an axiomatization of environments, and use it to prove the correctness of a well-known compilation technique. The monadic approach also facilitates generating code in various target languages with different sets of built-in features. 1 Introduction We propose a modular semantics which allows language designers to add (or remove) programming language features without causing global changes to the existing specification, derive a compilation scheme from semantic descriptions, prove the correctness of program transformation and compilation...

Verification of Compilers

by Gerhard Goos, Wolf Zimmermann, Fakultat Fur Informatik - In Correct System Design , 1999
"... We report about a joint project of the universities at Karlsruhe, Kiel and Ulm on how to get correct compilers for realistic programming languages. Arguing about compiler correctness must start from a compiling specification describing the correspondence of source and target language in formal t ..."
Abstract - Cited by 25 (1 self) - Add to MetaCart
We report about a joint project of the universities at Karlsruhe, Kiel and Ulm on how to get correct compilers for realistic programming languages. Arguing about compiler correctness must start from a compiling specification describing the correspondence of source and target language in formal terms. We have chosen to use abstract state machines to formalize this correspondence. This allows us to stay with traditional compiler architectures for subdividing the compiler task. A main achievement is the use of program checking for replacing large parts of compiler verification by the much simpler task of verifying program checkers.

Generating Action Compilers by Partial Evaluation

by Anders Bondorf, Jens Palsberg - Journal of Functional Programming , 1996
"... Compiler generation based on Mosses' action semantics has been studied by Brown, Moura, and Watt, and also by the second author. The core of each of their systems is a handwritten action compiler, producing either C or machine code. We have obtained an action compiler in a much simpler way: by parti ..."
Abstract - Cited by 12 (1 self) - Add to MetaCart
Compiler generation based on Mosses' action semantics has been studied by Brown, Moura, and Watt, and also by the second author. The core of each of their systems is a handwritten action compiler, producing either C or machine code. We have obtained an action compiler in a much simpler way: by partial evaluation of an action interpreter. Even though our compiler produces Scheme code, the code runs as fast as that produced by the previous action compilers. 1 Introduction Action semantics is a framework for formal semantics of programming languages, developed by Mosses [16, 17, 18] and Watt [19, 26]. It differs from denotational semantics in using semantic entities called actions, rather than higher-order functions. Compiler generation based on action semantics has been studied by Brown, Moura, and Watt [6], and also by the second author [22, 20, 21]. Journal of Functional Programming, 6(2):269--298, 1996. Also in Proc. FPCA'93, pages 308--317. The core of each of their two action se...

An Automatically Generated and Provably Correct Compiler for a Subset of Ada

by Jens Palsberg - In IEEE International Conference on Computer Languages , 1992
"... We describe the automatic generation of a provably correct compiler for a non-trivial subset of Ada. The compiler is generated from an action semantic description; it emits absolute code for an abstract RISC machine language that currently is assembled into code for the SPARC and the HP Precision Ar ..."
Abstract - Cited by 11 (2 self) - Add to MetaCart
We describe the automatic generation of a provably correct compiler for a non-trivial subset of Ada. The compiler is generated from an action semantic description; it emits absolute code for an abstract RISC 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 Mosses, Paulson, and Wand. The use of action semantics makes the processable language specification easy to read and pleasant to work with. In Proc. ICCL'92, Fourth IEEE International Conference on Computer Languages, pages 117--126. 1 Introduction The purpose of a language designer's workbench, envisioned by Pleban, is to drastically improve the language design process. The major components in such a workbench are: ffl A specification language whose specifications are easily maintainable, and accessible without knowledge of the underlying theory; and f...

Action Transformations in the ACTRESS Compiler Generator

by Hermano Moura, David A. Watt - In CC’94, Proc. 5th Intl. Conf. on Compiler Construction, Edinburgh, volume 786 of LNCS , 1994
"... . Given the action-semantic description of a source language, Actress generates a compiler. The generated compiler translates its source program first to an action, and then to object code. Transformations of the intermediate action greatly improve the efficiency of the object code. This paper stud ..."
Abstract - Cited by 8 (1 self) - Add to MetaCart
. Given the action-semantic description of a source language, Actress generates a compiler. The generated compiler translates its source program first to an action, and then to object code. Transformations of the intermediate action greatly improve the efficiency of the object code. This paper studies these transformations. 1 Introduction Actress [2] is an action-semantics directed compiler generator. That is to say, it accepts a formal description of the syntax and action semantics of a particular programming language, the source language, and from this it automatically generates a compiler that translates the source language to C object code. The generated compiler translates each source program to an action, which we call the program action, and thereafter translates the program action to object code. We have used Actress to generate compilers for a small functional language, Mini-ML, and a small imperative language, Mini-4. The preliminary version of Actress[2] generated compile...

OASIS: An Optimizing Action-based Compiler Generator

by Peter Ørbæk , 1994
"... . Action Semantics is a new and interesting foundation for semantics based compiler generation. In this paper we present several analyses of actions, and apply them in a compiler generator capable of generating efficient, optimizing compilers for procedural and functional languages with higher order ..."
Abstract - Cited by 8 (0 self) - Add to MetaCart
. Action Semantics is a new and interesting foundation for semantics based compiler generation. In this paper we present several analyses of actions, and apply them in a compiler generator capable of generating efficient, optimizing compilers for procedural and functional languages with higher order recursive functions. The automatically generated compilers producecode that is comparable with code produced by handwritten compilers. 1 Introduction Semantics based compiler generation has long been a goal in computer science. Automatic generation of compilers from semantic descriptions of programming languages relieves programmers and language theorists from much of the burden of writing compilers. We describe the OASIS (OptimizingAction-based Semantic Implementation System) compiler generator, and especially the analyses that provide the information enabling the code generator to produce good quality code. The generated compilers expand a given abstract syntax tree to the equivalent ac...

Using Program Checking to Ensure the Correctness of Compiler Implementations

by Sabine Glesner - Journal of Universal Computer Science (J.UCS , 2003
"... Abstract: We evaluate the use of program checking to ensure the correctness of compiler implementations. Our contributions in this paper are threefold: Firstly, we extend the classical notion of black-box program checking to program checking with certificates. Our checking approach with certificates ..."
Abstract - Cited by 7 (2 self) - Add to MetaCart
Abstract: We evaluate the use of program checking to ensure the correctness of compiler implementations. Our contributions in this paper are threefold: Firstly, we extend the classical notion of black-box program checking to program checking with certificates. Our checking approach with certificates relies on the observation that the correctness of solutions of NP-complete problems can be checked in polynomial time whereas their computation itself is believed to be much harder. Our second contribution is the application of program checking with certificates to optimizing compiler backends, in particular code generators, thus answering the open question of how program checking for such compiler backends can be achieved. In particular, we state a checking algorithm for code generation based on bottom-up rewrite systems from static single assignment representations. We have implemented this algorithm in a checker for a code generator used in an industrial project. Our last contribution in this paper is an integrated view on all compiler passes, in particular a comparison between frontend and backend phases, with respect to the applicable methods of program checking.

A Study in Higher-Order Programming Languages

by Morten Rhiger, Morten Rhiger , 1997
"... : This thesis describes some interplays between the specification and the implementation of higher-order programming languages. We first investigate a traditional implementation of Scheme (compiler, run-time machine). We then turn to Action Semantics. And finally we cross-fertilize these two approac ..."
Abstract - Cited by 6 (2 self) - Add to MetaCart
: This thesis describes some interplays between the specification and the implementation of higher-order programming languages. We first investigate a traditional implementation of Scheme (compiler, run-time machine). We then turn to Action Semantics. And finally we cross-fertilize these two approaches using both syntax-directed and type-directed partial evaluation and introducing an alternative representation of data structures. December 1997 To my late father Acknowledgments First of all I thank my supervisor, Olivier Danvy, from whom I learn every day. I appreciate his technical expertise and his knowledge of how to work scientifically. His insight in computer science and his will to share this insight with his students exceeds what I have otherwise been exposed to. Peter D. Mosses's course at DAIMI in the spring of 1997 was an inspiring tour of Action Semantics. Rene Vestergaard gave useful comments on a draft of this thesis of both syntactic and semantic nature. He pointed ou...

Compiling Actions by Partial Evaluation, Revisited

by Olivier Danvy, Olivier Danvy, Morten Rhiger, Morten Rhiger - Department of Computer Science, University of Aarhus , 1998
"... We revisit Bondorf and Palsberg's compilation of actions using the oine syntax-directed partial evaluator Similix (FPCA'93, JFP'96), and we compare it in detail with using an online typedirected partial evaluator. In contrast to Similix, our typedirected partial evaluator is idempotent and requires ..."
Abstract - Cited by 4 (2 self) - Add to MetaCart
We revisit Bondorf and Palsberg's compilation of actions using the oine syntax-directed partial evaluator Similix (FPCA'93, JFP'96), and we compare it in detail with using an online typedirected partial evaluator. In contrast to Similix, our typedirected partial evaluator is idempotent and requires no \bindingtime improvements." It also appears to consume about 7 times less space and to be about 28 times faster than Similix, and to yield residual programs that are perceptibly more eÆcient than those generated by Similix. Basic Research in Computer Science, Centre of the Danish National Research Foundation. Home page: http://www.brics.dk y Building 540, Ny Munkegade, DK-8000 Aarhus C, Denmark. E-mail: fdanvy,mrhigerg@brics.dk Contents 1 Introduction 4 2 Syntax-Directed vs. Type-Directed Partial Evaluation 6 2.1 Syntax-directed partial evaluation (sdpe) . . . . . . . . . . . 6 2.2 Type-directed partial evaluation (tdpe) . . . . . . . . . . . . 7 2.3 Comparing the input to synta...

Towards Machine-checked Compiler Correctness for Higher-order Pure Functional Languages

by David Lester, Sava Mintchev - CSL '94, European Association for Computer Science Logic, Springer LNCS , 1994
"... . In this paper we show that the critical part of a correctness proof for implementations of higher--order functional languages is amenable to machine--assisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. ..."
Abstract - Cited by 4 (1 self) - Add to MetaCart
. In this paper we show that the critical part of a correctness proof for implementations of higher--order functional languages is amenable to machine--assisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. The proof has been constructed with the help of a generic theorem prover --- Isabelle. The major part of the problem lies in establishing the existence of predicates which describe the congruence. This has been solved using Milne's inclusive predicate strategy [5]. The most important intermediate results and the main theorem as derived by Isabelle are quoted in the paper. Keywords: Compiler Correctness, Theorem Prover, Congruence Proof, Denotational Semantics, Lambda Calculus 1 Introduction Much of the work done previously in compiler correctness concerns restricted subsets of imperative languages. Some studies involve machine--checked correctness---e.g. Cohn [1], [2]. A lot of research h...
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University