Difference between revisions of "Compiler"

From Conservapedia
Jump to: navigation, search
m (improve grammar/English)
m (add wikilinks)
Line 1: Line 1:
A '''compiler''' is a computer program which translates source code written in a high-level [[programming language]] into executable machine code.  The act of doing this is called [[compilation]].
+
A '''compiler''' is a [[computer program]] which translates [[source code]] written in a high-level [[programming language]] into executable [[machine code]].  The act of doing this is called [[compilation]].
  
 
==Outline of the compilation process==
 
==Outline of the compilation process==
Line 19: Line 19:
 
:'''Intermediate code generation''': use the annotated parse tree to generate code in some simple machine-independent intermediate language.
 
:'''Intermediate code generation''': use the annotated parse tree to generate code in some simple machine-independent intermediate language.
  
:'''Register allocation''': map the symbolic names used in the intermediate code on to the registers available in the target machine code.
+
:'''Register allocation''': map the symbolic names used in the intermediate code on to the registers available in the target machine.
  
:'''Assembly code generation''': translate the intermediate code into assembly language for the target machine.
+
:'''Assembly code generation''': translate the intermediate code into [[assembly language]] for the target machine.
  
 
:'''Assembly and linking''': translate the assembly language into executable machine code.
 
:'''Assembly and linking''': translate the assembly language into executable machine code.

Revision as of 19:56, March 20, 2012

A compiler is a computer program which translates source code written in a high-level programming language into executable machine code. The act of doing this is called compilation.

Outline of the compilation process

In the freely available online book "Basics of Compiler Design"[1], Professor Torben Mogensen identifies seven phases within a compiler, with the various phases being performed in one or more passes over the program. A diagram illustrating these (and other optional optimisation) phases is shown on the last page of Professor Frank Pfenning's "Lecture Notes on Compiler Design: Overview"[2]

Lexical analysis: convert the source code into a sequence of tokens, such as variable names, keywords, numbers, and special symbols such as '+'.
Syntax analysis or parsing: arrange the tokens into a parse tree or syntax tree which represents the structure of the program.
Semantic analysis: annotate the parse tree with semantic actions, and perform various consistency checks.
Intermediate code generation: use the annotated parse tree to generate code in some simple machine-independent intermediate language.
Register allocation: map the symbolic names used in the intermediate code on to the registers available in the target machine.
Assembly code generation: translate the intermediate code into assembly language for the target machine.
Assembly and linking: translate the assembly language into executable machine code.

References

  1. Basics of Compiler Design. Retrieved on 2012-03-19.
  2. Lecture Notes on Compiler Design: Overview (pdf). Retrieved on 2012-03-19.