25/08/09

Glossary of compilers

Back end: The final phase of compilation, where the program is translated from the compiler’s intermédiate representation into operations for the target: machine.

Compiler: A program that translates an executable program from one form to another.

Constant propagation: An optimization that discovers, at compile time, expressions that must have known constant values, evaluates them, and replaces their run-time evaluation with the appropriate value.

Data-flow analysis: A collection of techniques for reasoning, at compile time, about the flow of values at run-time.

Front end: The initial stage of compilation, where the program is translated from the original programming language into the compiler’s intermediate representation.

High-level transformations: Transformations performed on an intermediate representation that is close to the source language in its level of abstraction.

Instruction selection: The process of mapping the compiler’s intermediate representation of the program into the target language produced by the compiler.

Lexical analysis: That part of the compiler’s front end that has the task of converting the input program from a stream of individual characters into a stream ofwords, or tokens, that are recognizable components of the source language. Lexical analysis recognizes words and assigns them to syntactic categories, much like parts of speech. The pass that implements lexical analysis is called a scanner.

List scheduling: An algorithm for reordering the operations in a program to improve their execution speed.

A list scheduler constructs a new version of the program by filling in its schedule, one cycle at a time. The scheduler must respect the flow of values in the original program and the operation latencies of the target machine.

Memory hierarchy management: A collection of transformations that rewrite the program to change the order in which it accesses memory locations. On machines with cache memories, reordering the references can increase the extent to which values already in the cache are reused, and thus decrease the aggregate amount of tie spentwaiting on values to be fetched from memory.

Optimizer: The middle part of a compiler, it rewrites the program in an attempt to improve its runtime behavior.

Optimizers usually consist of several distinct passes of analysis and transformation. The usual goal of an optimizer is to decrease the program’s execution time; some optimizers try to create smaller programs as well.

Parallelization: The task of determining which parts of the program are actually independent, and can therefore execute concurrently. Compilers that use these techniques usually treat them as high-level transformations, performing both analysis and transformations on a near-source representation of the program.

Programming languages: Artificial (or formal) languages designed to let people specify algorithms and describe data structures, usually in a notation that is independent of the underlying target machine.

Regular expressions: A mathematical notation for describing strings of characters. Efficient techniques can convert a collection of regular expressions into a scanner.

Semantic elaboration: That part of a compiler’s front end that checks semantic rules and produces an intermédiate representation for the program. Often, semantic elaboration is coupled directly to the parser, where individual actions can be triggered as specific gramatical constructs are recognized.

Source-to-source translator: A compiler that produces, as its target language, a programming language (rather than the native language of some target computer).

Syntax analysis: That part of the compiler’s front end that has the task of determining whether or not the input is actually a program in the source language. The parser consumes a stream of categorized words produced by the scanner and validates it against an internal model of the source language’s grammatical structure (or syntax).

Vectorization: A specialized form of parallelization that tries to expose computations suitable for SIMD, or vector, execution.

See also: Computers

0 comentarios, comments: