Clone this wiki locally
The architecture of eddic is made to support several source programming languages and several target platforms as well.
For that, the compiler is separated in three parts:
- The front end that parse the source code, perform semantical analysis on it and generates an intermediate representation that is understandable by the back end
- The middle generates the basic blocks, performs optimizations on the MTAC representation, performs some early register allocations and then pass the MTAC program to the back end.
- The back end performs optimizations on the LTAC program and generates machine code for the target.
There are one front end for the EDDI programming language and one back-end for machine code generation. The back-end use different code generators depending if the user want 32 or 64 bits.
Ideally, the LTAC representation should be more target-independent. And thus, the LTAC Optimizations should be made by the middle end. The back-end would only be made of the code generators and possibly some processor-specific optimizations.