Extended conference paper
Automatic generation of compiler backends
Article first published online: 16 JAN 2012
Copyright © 2012 John Wiley & Sons, Ltd.
Software: Practice and Experience
Volume 43, Issue 2, pages 207–240, February 2013
How to Cite
Brandner, F., Pavlu, V. and Krall, A. (2013), Automatic generation of compiler backends. Softw: Pract. Exper., 43: 207–240. doi: 10.1002/spe.2106
- Issue published online: 9 JAN 2013
- Article first published online: 16 JAN 2012
- Manuscript Accepted: 16 DEC 2011
- Manuscript Revised: 12 SEP 2011
- Manuscript Received: 17 JUN 2011
- processor description languages;
- instruction selection;
Application-specific instruction set processors have proven successful in meeting the various design constraints of modern embedded systems and often provide the only viable trade-off between computing power and opposing metrics such as power consumption. A promising approach to facilitate the exploration of processor design alternatives are processor description languages, which capture the instruction set and hardware organization of a processor. With the use of those processor models, various design tasks, for example, the adaption of software development tools, the generation of hardware models, and various verification tasks, can be automatized. These languages thus allow effective shortening of development turnaround times. In this work, the novel xADL language is presented, which, in contrast to most contemporary processor description languages, focuses on a structural modeling of the processor's hardware organization. However, a behavioral model of the instruction set is automatically derived using instruction set extraction. This provides a tight coupling between the structural hardware view and the instruction set view of the processor and reduces the complexity of processor models in comparison with existing languages. The feasibility of our approach is demonstrated by a compiler backend generator based on tree pattern matching. An important property of our generator is its ability to automatically verify whether the resulting compiler is complete, that is, it can process all possible input programs. The generated compilers are competitive to handcrafted production compilers, showing speedups of up to 20% for certain benchmarks. On average, moderate slowdowns between 3% and 15% have been observed for several processor models while considerable reductions in code size have been measured. Copyright © 2012 John Wiley & Sons, Ltd.