Difference between revisions of "Compiler"
From Conservapedia
(add link to diagram of compiler phases) |
m (→Outline of the compilation process: clarify 'other phases') |
||
| Line 5: | Line 5: | ||
| url = http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/ | | url = http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/ | ||
| title = Basics of Compiler Design | | title = Basics of Compiler Design | ||
| − | | accessdate = 2012-03-19}}</ref>, 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) phases is shown on the last page of Professor Frank Pfenning's "Lecture Notes on Compiler Design: Overview"<ref>{{cite web | + | | accessdate = 2012-03-19}}</ref>, 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"<ref>{{cite web |
| url = http://www.cs.cmu.edu/~fp/courses/15411-f09/lectures/ | | url = http://www.cs.cmu.edu/~fp/courses/15411-f09/lectures/ | ||
| format = pdf | | format = pdf | ||
Revision as of 23:33, March 19, 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 source code into sequence of tokens, such as variable names, keywords, numbers, and special symbols such as '+'.
- Syntax analysis or parsing: structure tokens into parse tree or syntax tree which represents the structure of the program.
- Semantic analysis: annotate 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 code.
- 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
- ↑ Basics of Compiler Design. Retrieved on 2012-03-19.
- ↑ Lecture Notes on Compiler Design: Overview (pdf). Retrieved on 2012-03-19.