Automatically Generating the Back End of a Compiler Using Declarative Machine Descriptions

Automatically Generating the Back End of a Compiler Using Declarative Machine Descriptions[PDF]
By Joao 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.
...
The largest machine-dependent component in a back end is the instruction
selector. Previous work has shown that it is difficult to generate a highquality
instruction selector. But by adopting the compiler architecture developed
by Davidson and Fraser (1984), I can generate a na¨ıve instruction
selector and rely upon a machine-independent optimizer to improve the machine
instructions. Unlike previous work, my generated back ends produce
code that is as good as the code produced by hand-written back ends.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Good Stuff

I'll definitely be giving this a thorough read with an eye towards understanding how, if at all, it might be integrated with Adam Chlipala's Lambda Tamer. Right now, my strategy has been to target LLVM, but it would be nice not to have something as large and complex as LLVM remain unverified.