MOSA Compiler Framework¶
To go along with the MOSA Framework theme the compiler is not a compiler in a classical sense. It rather provides building blocks, which if combined properly enable the AOT and JIT compilation of CIL images for a managed operating system. These building blocks consist of:
- A method compiler framework
- An intermediate representation of IL instructions
- A lower level intermediate representation for code generation
- Code generation basics
- A set of independent compiler optimization stages
Available optimization stages¶
The MOSA compiler framework is built around individual replaceable compiler stages (see MOSA Compiler Design), which can be combined to build compilers with varying levels of optimizations. This allows fine control over the optimization level vs. time and memory costs.
The following optimization stages are available in the MOSA compiler:
- Constant Propagation
- Fast, simple dominance calculation
- SSA Transformation
The set of available optimizations is growing as these can be developed and tested independently. The MOSA compiler is developed to be open for research purposes and we hope to receive some research results as additional optimization stages.
Features¶
Testing¶
The MOSA source tree includes extensive tests of the MOSA compiler framework. To run the tests you should consult the Running MOSA Compiler Tests page. Note that these tests are rather dependent on the compilation stages setup, so if you use a different set of optimization stages you need to match up the test framework.