Section: New Software and Platforms
Tirex
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 creation of a machine description library for all parts of the TIREX project, secondly, the development of tools for parsing assembly code.
We developed archinfo , a LLVM based library that allows programatic access to descriptors for a target CPUs instructions and registers. The focus was to expose information that was not already available from LLVM, such as machine operand types (float or integer, bitwidth, ...) and flags describing the high level behaviour of the instructions.
The, also LLVM based, assembly parser is intended to be used for translating assembly files generated by common compilers to TIREX, but it can also handle a number of idioms usually found in hand written assembly code. It reconstructs some high level information required for the TIREX format, such as the control flow and call graph, from the assembly code. We also started investigating how our existing tools can be extended to directly parse binary code and reconstruct information from them.