The core components of MLRISC allow the client to quickly construct
an optimizing backend for various architectures. These components include:
The MLTREE language, which is a RTL-like intermediate language
that is used to communicate to the MLRISC system. A client is
responsible for writing the translator that generates MLTREE from
the source program.
Instruction selection modules, which generates target machine
instructions from the MLTREE intermediate language.
The Register Allocator, which performs register allocation.
Assemblers, which emits assembly code.
For systems that require direct machine code generation, the following
modules are included:
Span dependency resolution modules, which compute addresses
frmo symbolic addresses,
fill delay slots, and expand instructions that are
Machine code emitters, which emit machine code into a binary stream.
In addition, MLRISC has been enhanced to support various types of
machine level optimizations. These include: