Overview
Overview of Xingo

The goal of this project is to develop a portable optimizing compiler for embedded systems. This compiler will be called Xingo. The Xingo Project is a very long term project of LSC that will be organized as a community project. As such, Xingo welcome any contributions that can help in the advancement of the research on compilation for embedded processors. In order to support that the LSC commits itself in providing a discussion forum and a long term support to this project.

In order to save development time, the Xingo group decided to reuse existing stable compiler parts instead of creating new ones. Xingo is based on two well-known modules: (a) the LCC compiler front-end, by Fraser and Hanson; (b) the Olive code-generator generator, by Steve Tjiang.


The Xingo Compiler Diagram

The program analyzed by LCC is converted into a intermediate form. This intermediate form is the input data of Xingo that builds the Xingo Intermediate Representation (XIR). The XIR is C like and can be converted into C code. The XIR is optimized by Xingo with several machine independent optimizations. Is possible to generate C code from the optimized IR, so Xingo can generate a optimized version of the input program and compile it like any other program. This skill of Xingo is a excellent tool to aid in the validation process of the compiler or a way of to get optimizations at source level.

The optimizations present in Xingo are being evaluated with the NullStone benchmark. Other benchmarks, like MediaBench, DSPstone and MiBench are being used to survey the correctness of the code generate by the compiler.

A back-end to a Mips processor is being writing in the current stage of development. Future releases will contain back-end's to other target processors.