Release 0.0.1 - Alpha
This page illustrates the release plan for the MOSA Compiler. Since the compiler is not just a single component a lot of the features described here involve additions, modifications and fixes to multiple components. The table does not indicate any priorities.General Features
Command line compiler
- A Test Case Libary providing tests for all features described.
- A command line compiler, capable of emitting Win32 executable PE files.
- Documentation for all compiler stages on the wiki and guidelines
- The compiler must be able to turn a single input assembly into a native Win32 PE file
- The compiler must obey an architecture selection switch on the command line
- The compiler must report errors in an understandable format
The MOSA compiler should understand the following subset of IL:
- Arithmetic instructions: add, sub, mul, div, div.un, rem, rem.un, neg.
- Bit operations: and, or, not, xor
- Shift instructions: shl, shr, shr.un
- Branch instructions: beq, bge, bge.un, bgt, bgt.un, ble, ble.un, blt, blt.un, bne.un, br, brtrue, brfalse, switch
- Miscellaneous instructions: break, nop
- Method call instructions: call, ret
- Comparison instructions: ceq, cgt, cgt.un, clt, clt.un
- Load instructions: ldarg, ldc, ldloc, ldnull, pop, ldsfld, ldsflda, ldind
- Store instructions: starg, stloc, stind, stsfld
- Conversion instructions: conv.
Together these instructions represent 51 instructions of 106 IL instructions, giving us a ratio of 48 per cent completeness.
Operand data types
- The processed CIL instructions must be validated according to the spec and non-compliant assemblies must be rejected
This release of the MOSA compiler must support operation on I1, I2, I4, I8, U1, U2, U4, U8, R4, R8 and boolean datatypes. Any additional types are not required. Especially there's no support for value types or reference types.Optimization stages
The initial release of the MOSA compiler shall provide the following optimizing compilation stages: