• Corpus ID: 61016973

Automatically generating the back end of a compiler using declarative machine descriptions

  title={Automatically generating the back end of a compiler using declarative machine descriptions},
  author={Norman Ramsey and Jo{\~a}o Dias},
Although I have proven that the general problem is undecidable, I show how, for machines of practical interest, to generate the back end of a compiler. Unlike previous work on generating back ends, I generate the machine-dependent components of the back end using only information that is independent of the compiler's internal data structures and intermediate form. My techniques substantially reduce the burden of retargeting the compiler: although it is still necessary to master the target… 
Automatically generating instruction selectors using declarative machine descriptions
By generating the instruction selector from declarative machine descriptions, this work has made it unnecessary for one person to be both a compiler expert and a machine expert, and made creating an optimizing back end easier than ever before.
Generalized instruction selector generation: the automatic construction of instruction selectors from descriptions of compiler internal forms and target machines
This dissertation proposes a generalized approach toward generating instruction selectors automatically using CISL, a common machine description language for specifying the semantics of compiler IR and target instructions, and GIST, a machine independent heuristic search procedure that can find equivalent instruction sequences between compiler IRand target instructions.
A Transformation-Based Foundation for Semantics-Directed Code Generation
This dissertation proposes a transformation-based foundation for deriving compilers from semantic specifications in the form of four rules that give apriori advice for staging, and allow explicit compiler derivation that would be less succinct with partial evaluation.
Automatically Generating Back Ends Using Declarative Machine Descriptions
A lever-action slam latch includes a pair of opposing, nested slides so that a single latch can be mounted in either left-handed or right-handed door. The locking mechanism is difficult to


Converting Intermediate Code to Assembly Code Using Declarative Machine Descriptions
This work generates a recognizer; this component, which identifies register transfers that correspond to target-machine instructions, plays a key role in instruction selection in such compilers as vpo, gcc and Quick C–.
Generating machine specific optimizing compilers
It is shown how costs of optimizing the machine architecture can be amortized across a number of architectures with a framework for abstracting the machine information from a vendor compiler.
The Advantages of Machine-Dependent Global Optimization
An algorithm for induction variable elimination is presented and it is demonstrated that this algorithm yields better code than traditional implementations that are applied machine-independently to a high-level representation.
Discovering machine-specific code improvements
A compiler construction tool that automates much of the case analysis necessary to exploit special purpose instructions on a target machine is designed and built, and a working prototype of the instruction set analyzer needed in the framework outlined by [Giegerich 83].
Reverse interpretation + mutation analysis = automatic retargeting
This paper describes a novel method which promises to significantly reduce the effort required to retarget a compiler to a new architecture, while at the same time producing fast and effective compilers.
C Compiler Retargeting Based on Instruction Semantics Models
This work presents a new approach to retargetable compilation, based on the LISA 2.0 ADL with instruction semantics, that minimizes redundancies while simultaneously achieving a high degree of automation.
BEG: a generator for efficient back ends
This paper describes a system that generates compiler back ends from a strictly declarative specification of the code generation process. The generated back ends use tree pattern matching for code
Engineering a Compiler
This work focuses on the back end of the compiler - reflecting the focus of research and development over the last decade; uses the well-developed theory from scanning and parsing to introduce concepts that play a critical role in optimization and code generation.
Modern Compiler Implementation in ML
From the Publisher: This textbook describes all phases of a modern compiler: lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection via
C--: A Portable Assembly Language that Supports Garbage Collection
This paper addresses the problems in the support of such high-level run-time services as garbage collection, exception handling, concurrency, profiling, and debugging in the use of a portable assembly language by combining the C-— language with a C--— run- time interface.