How compiler works is not easy to explain in one sentence. The best way is to use an example.
A compiler is a computer program that transforms source code written in a high-level programming language into a lower level language.
Basically, a compiler consists the following phases: Lexical Analysis, Syntax Analysis, Semantic Analysis, IR Generation, IR Optimization, Code Generation, Optimization.
Given a sample program:
The following shows the output of each phase.
1. Lexical Analysis
Convert a program into sequence of of tokens.
2. Syntax Analysis
Recover the structure described by using series of tokens from previous scanner.
3. Semantic Analysis
Ensures program has a well-defined meaning.
4. IR Generation
5. IR Optimization
6. Code Generation
7. Optimization
I was thinking to draw a diagram which can clearly show how a compiler works. However, I found the diagram in the dragon book is very good, no more diagram work is necessary anymore.
I still want to make a small compiler which compiles a simple one function from start to end. Will do some research and possibly figure out a good solution for clear demonstration.
References:
1. Standford Compiler Lecture
2. Dragon Book
Am still analyzing the illustration
Thank you!
Found 2 typos:
at #6. Code Generation, slt $6, $1, $5 should be slt $6, $4, $5
at #7. Optimization, blt $1, $5, loop should be blt $4, $5, loop
Thanks…..very simple ..
really cool thanks for share
nice work! It’s really easy to understand.
very good