A candidate for such an all-purpose low-level language could be the intermediate representation used by the VCODE system (which is the machine code of an idealized RISC-Architecture) [18].
VCODE : A retargetable, extensible, very fast dynamic code generation system.
The first of these run-time systems is VCODE [Engler 1996].
When using VCODE, both instruction selection based on operand types and cspec-local register allocation are done statically.
Not all register allocation and instruction selection can occur statically when using VCODE.
The code-generating function checks this field, and if necessary, invokes a VCODE or ICODE macro to generate a label, which is eventually resolved when the run-time system links the code.
The VCODE run-time system, by contrast, optimizes for code generation speed: it generates code in just one pass, but can make poor spill decisions when there is register pressure.
VCODE emits code locally, with no global analysis or optimization.
When code generation speed is more important, the user can have tcc generate CGFs that use VCODE macros, which emit code in one pass.