Overall Objectives
Research Program
Application Domains
New Software and Platforms
New Results
Bilateral Contracts and Grants with Industry
Partnerships and Cooperations
XML PDF e-pub
PDF e-Pub

Section: New Software and Platforms


TIREX is an extensible, textual intermediate code representation that is intended to be used as an exchange format for compilers and other tools working on low level code. In the scope of the TIREX project we have developed tools for generating TIREX code from higher level languages such as C, as well as a number of static analyses and transformations.

Work on the TIREX project consisted of two main parts, firstly the cleanup and maintenance of the existing tools and web site and, secondly, implementing new backends for emitting TIREX.

The existing TIREX transormation and analysis tools as well the web site have been updated to make sure they work with the newest versions of their respective platforms (Java and PHP). They have also been refactored to make better use of newer or safer APIs. This work also included a redesign of the web site of the TIREX project and a rewrite of the build system.

The existing Open64 based backend has been updated to comply with the TIREX v2 specification so its output can be used with the rest of the tool chain.

We have also developed two new backends allowing us to generate TIREX code from any language the LLVM frontends support (including C, C++ and LLVM IR) as well as directly from assembly code. Preliminary work for generating TIREX directly from binaries has also been done, and the assembly backend is designed to allow most of its code to be reused for this purpose. These new developments required a partial rewrite of LLVMs internal machine description system to expose more machine information in an easily accessible manner. As a positive side effect we were able to reuse several parts used in earlier stages of the LLVM pipeline to write a simple type analysis on machine code used in the assembly backend. We also implemented a control flow reconstruction pass in the assembly backend to improve the quality of the generated code.

Lastly we have adopted continuous integration and started curating a regression test suite for our new developments.