RISE-OPTIMIST: Integrated Code Generation

The ultimate goal of software development is to produce an application that runs on a platform. Code generation is the step that produce machine code. To generate code, it is necessary to solve the tasks of instruction selection (choosing semantically equivalent target instructions), register allocation (deciding which values should reside in registers) and instruction scheduling (ordering of target instructions to minimize an objective function). Code generation tasks are difficult to solve, and from a software engineering viewpoint it is easier to solve each of them separately. However, there exist strong interdependencies between them, and solving a single task efficiently might compromise the decisions taken in a subsequent task, leading to a final solution of lower quality than expected. This interdependencies are even more difficult to handle for irregular architectures that are often chosen for embedded system applications.

Within this project we investigate on a fully integrated code generation that considers all three subproblems as a single optimization pass. We use dynamic programming and other techniques to compress the solution space for producing an optimal code sequence. Our framework is also retargetable, that is, it allows to produce code for different processor platforms by providing a specification of the target architectue in a XML-based architecture specification language, ADML (Architecture Description Markup Language). In this way, the target-architecture specific aspects of code generation are separated from the remaining compiler system and woven together with it at compiler compilation time to obtain a platform-specific code generator. However, further separable aspects could be identified in the remaining compiler components.

Subproject members

Christoph Kessler, subproject leader
Andrzej Bednarski, PhD student

The general goals of our research

Plan

In the context of the RISE project, which we joined in July 2004, we focus on the following issues:

Status

Publications

See the OPTIMIST project publication list. OPTIMIST is within RISE since July 2004.

Acknowledgments

This project is partly financed by Ceniit (No. 01.06) and since July 2004 partially by the SSF RISE project at PELAB.