it depends on the definition on compilation.
The work of a typical C compiler can be divided into several phases:
1. Preprocessing: replacing macro, including all header files, usually done by cpp in Linux world. The output will be a single input file;
2. Scanning and Parsing: take care syntax and semantic
3. Intermediate Code Generation: create RTL (register transfer language)
4. Optimization: optimizing RTL
5. Code Generation: generating assembly code for the target processor. The output will be a human readable text file with assembly in it...