Compiler für Eingebettete Systeme / Compilers for Embedded Systems

Competences

The relevance of embedded systems increases from year to year. Within such systems, the amount of software to be executed on embedded processors grows continuously due to its lower costs and higher flexibility. Because of the particular application areas of embedded systems, highly optimized and application-specific processors are deployed. Such highly specialized processors impose high demands on compilers which have to generate code of highest quality. After the successful attendance of this course, the students are able

  • to illustrate the structure and organization of such compilers,
  • to distinguish and explain intermediate representations of various abstraction levels, and
  • to assess optimizations and their underlying problems in all compiler phases.

The high demands on compilers for embedded systems make effective code optimizations mandatory. The students learn in particular,

  • which kinds of optimizations are applicable at the source code level,
  • how the translation from source code to assembly code is performed,
  • which kinds of optimizations are applicable at the assembly code level,
  • how register allocation is performed, and
  • how memory hierarchies can be exploited effectively.

Since compilers for embedded systems often have to optimize for multiple objectives (e.g., average- or worst-case execution time, energy dissipation, code size), the students learn to evaluate the influence of optimizations on these different criteria.

After successful completion of the course, students shall be able to translate high-level program code into machine code. They will be enabled to assess which kind of code optimization should be applied most effectively at which abstraction level (e.g., source or assembly code) within a compiler.

While attending the labs, the students will learn to implement a fully functional compiler including optimizations.

Contents

  • Chapter 1: Introduction & Motivation
  • Chapter 2: Compilers for Embedded Systems - Requirements & Dependencies
  • Chapter 3: Internal Structure of Compilers
  • Chapter 4: Pre-Pass Optimizations
  • Chapter 5: HIR Optimizations and Transformations
  • Chapter 6: Code Generation
  • Chapter 7: LIR Optimizations and Transformations
  • Chapter 8: Register Allocation
  • Chapter 9: WCET-Aware Compilation
  • Chapter 10: Outlook

Bibliography

  • Peter Marwedel. Embedded Systems Design - Embedded Systems Foundations of Cyber-Physical Systems. 2nd Edition, Springer, 2012.
  • Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997.
  • Andrew W. Appel. Modern compiler implementation in C. Oxford University Press, 1998.

Requirements