An Executable Intermediate Representation for Retargetable Compilation and High-Level Code Optimization

Due to fast time-to-market and IP reuse requirements, an increasing amount of the functionality of embedded HW/SW systems is implemented in software. As a consequence, software programming languages like C play an important role in system specification, design, and validation. Besides many other advantages, the C language offers executable specifications, with clear semantics and high simulation speed. However, virtually any tool operating on C specifications has to convert C sources into some intermediate representation (IR), during which the executability is normally lost. In order to overcome this problem, this paper describes a novel IR format, called IR-C, for the use in C based design tools, which combines the simplicity of three address code with the executability of C. Besides the IR-C format and its generation from ANSI C, we also describe its applications in the areas of validation, retargetable compilation, and sourcelevel code optimization.

[1]  Peter Marwedel,et al.  Reducing energy consumption by dynamic copying of instructions onto onchip memory , 2002, 15th International Symposium on System Synthesis, 2002..

[2]  Chris Clark ASTs for optimizing compilers , 2001, SIGP.

[3]  Daniel D. Gajski,et al.  SPECC: Specification Language and Methodology , 2000 .

[4]  Ahmed Amine Jerraya,et al.  Address calculation for retargetable compilation and exploration of instruction-set architectures , 1996, DAC '96.

[5]  Clifford Liem,et al.  Retargetable Compilers for Embedded Core Processors , 1997, Springer US.

[6]  Sharad Malik,et al.  Code optimization libraries for retargetable compilation for embedded digital signal processors , 1998 .

[7]  Kurt M. Bischoff Design, Implementation, Use, and Evaluation of Ox: An Attribute- Grammar Compiling System based on Yacc, Lex, and C , 1992 .

[8]  Andrew W. Appel,et al.  SSA is functional programming , 1998, SIGP.

[9]  Alfred V. Aho,et al.  Code generation using tree matching and dynamic programming , 1989, ACM Trans. Program. Lang. Syst..

[10]  Christopher W. Fraser,et al.  A Retargetable C Compiler: Design and Implementation , 1995 .

[11]  Francky Catthoor,et al.  Analysis of high-level address code transformations for programmable processors , 2000, DATE '00.

[12]  Heiko Falk,et al.  Control Flow Driven Splitting of Loop Nests at the Source Code Level , 2003, DATE.

[13]  Vasanth Bala,et al.  A limit study of local memory requirements using value reuse profiles , 1995, MICRO 28.

[14]  Rainer Leupers,et al.  Retargetable compiler technology for embedded systems - tools and applications , 2001 .

[15]  Guido Arnout SystemC standard , 2000, ASP-DAC '00.

[16]  Christopher W. Fraser,et al.  Engineering a simple, efficient code-generator generator , 1992, LOPL.

[17]  Vincent Lefèvre,et al.  Multiplication by an Integer Constant , 2001 .