wichtounet edited this page Nov 26, 2012 · 8 revisions

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.

Further reading


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.