The use of intermediate languages as a convenient means of developing portable high-level language compilers, appears to be growing. With this approach, the compiler for language A (which may be written in language A) compiles the source code into an intermediate language I, which is usually a pseudo-machine language. For each machine that the language is to be implemented on, there is then either a program that converts I into the assembler language for that machine or, alternatively, an interpreter may be written which executes the pseudo-machines code interpretively.
/lp/association-for-computing-machinery/the-direct-execution-of-intermediate-languages-on-an-eclipse-computer-a6Gb1GduVM