 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
ä |
Pass
1: Preprocessor
|
|
|
|
ä |
Macro
and constant substitution
|
|
|
|
ä |
Strip
comments from source code
|
|
|
ä |
Pass
2: Lexical analyzer, Parser, Code
|
|
|
|
generator
|
|
|
|
ä |
Heart
of the compiler
|
|
|
|
ä |
Translates
source into a platform independent
|
|
|
language
much like assembler (Intermediate code 1)
|
|
ä |
Pass
3: Optimizer
|
|
|
|
ä |
Improves
the quality of the intermediate code
|
|
|
ä |
Pass
4: Back end
|
|
|
|
ä |
Translates
the optimized code to real assembler
|
|
|
language
or directly to to some form of binary
|
|
|
executable
code
|
|
|
|
ä |
Provides
target independence for earlier phases
|
|
|
|
ä |
Java,
UCSD Pascal (Apple II): produces byte-code,
|
|
|
which
still needs to be interpreted (or compiled
|
|
|
again)
when executing
|
|