- Intermediate language
In
computer science , an intermediate language is the language of anabstract machine designed to aid in the analysis ofcomputer program s. The term comes from their use incompiler s, where a compiler first translates the source code of a program into a form more suitable for code-improving transformations, as an intermediate step before generating object or machine code for a target machine. The design of an intermediate language typically differs from that of a practicalmachine language in three fundamental ways:* Each instruction represents exactly one fundamental operation; "e.g." "shift-add" addressing modes common in
microprocessors are not present.
*Control flow information may not be included in the instruction set.
* The number of registers available may be large, even limitless.A popular format for intermediate languages is
three address code .A variation in the meaning of this term, is those languages used as an intermediate language by some high-level programming languages which do not output object or machine code, but output the intermediate language only, to submit to a compiler for such language, which then outputs finished object or machine code. This is usually done to gain optimization much as treated above, or portability by using an intermediate language that has compilers for many processors and
operating systems , such as C. Languages used for this fall in complexity between high-level languages and low-level languages, such asassembly language s.Languages
Some intermediate
programming language s:C is used as an intermediate language by many programming languages including Eiffel,
Sather ,Esterel ; some dialects of Lisp (Lush, Gambit), Haskell (Glasgow Haskell Compiler );Squeak 's C-subset Slang, and others. Variants of C have been designed to provide C's features as a portableassembly language , including one of the two languages calledC-- , the [http://manju.cs.berkeley.edu/cil/ C Intermediate Language] and the Low Level Virtual Machine.In effect, Sun Microsystem's
Java bytecode is the intermediate language used by all compilers targeting theJava Virtual Machine . The JVM can then dojust-in-time compilation to get executable machine code to improve performances. Similarly, Microsoft'sCommon Intermediate Language is an intermediate language designed to be shared by all compilers for the.NET Framework , before static or dynamic compilation to machine code.The GNU Compiler Collection (GCC) uses internally several intermediate languages to simplify portability and
cross-compilation . Among these languages are* the historical
Register Transfer Language (RTL)
* the tree languageGENERIC
* the SSA-basedGIMPLE .See also
*
Intermediate representation
* [http://suif.stanford.edu/ The Stanford SUIF Group]
Wikimedia Foundation. 2010.