EM intermediate language

The EM intermediate language is a family of intermediate languages created to facilitate the production of portable compilers. The language's specifications were created by Andrew Tanenbaum, Hans van Staveren, Ed G. Keizer, Johan W. Stevenson and they were implemented in the Amsterdam Compiler Kit (ACK).

Unlike the GNU Compiler Collection's (GCC) intermediate language, EM is a real programming language and could be implemented in hardware; a number of the language front-ends have libraries implemented in EM assembly language. EM is a relatively high-level stack-based machine, and one of the tools supplied with ACK is an interpreter able to execute EM binaries directly, with a high degree of safety checking.