Passes
ä 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