Compiler is a software , converts high level language to low level language .
πΉ Language Levels
- High-Level Language (HLL): Python, Java, C, etc. (easy for humans, independent of machine).
- Low-Level Language: Machine code (binary 0s and 1s, understood by CPU).
πΉ Language Processing System
When we write a program, it goes through several steps before becoming executable machine code:
High Level Language β Preprocessor β Compiler β Assembler β Linker/Loader β Machine Code
1. Preprocessor
- Handles macros, file inclusion (
#include
), and conditional compilation. - Input: High-Level Language (like C source code).
- Output: Modified source code.
2. Compiler
- Converts preprocessed code into Assembly/Intermediate Code.
- Performs analysis + synthesis (phases explained below).
3. Assembler
- Converts assembly code into object code (machine-readable but not yet linked).
4. Linker
- Combines multiple object files and libraries into a single executable file.
5. Loader
- Loads the executable into main memory for execution by CPU.
πΉ Compiler Phases
A compiler works in two major phases: Analysis (Front-End) and Synthesis (Back-End).
1. Analysis Phase (Front-End)
-
Lexical Analyzer (Scanner):
- Breaks source code into tokens (keywords, identifiers, symbols).
- Example:
int x = 5;
βint
,x
,=
,5
,;
-
Syntax Analyzer (Parser):
- Checks grammar (CFG rules).
- Example: detects if parentheses/braces are matched.
-
Semantic Analyzer:
- Ensures meaning is correct (type checking, scope rules).
- Example:
int x = "hello";
β error.
-
Intermediate Code Generator:
- Produces intermediate representation (IR), closer to machine code.
2. Synthesis Phase (Back-End)
-
Code Optimizer:
- Improves performance (removes redundancies, optimizes loops).
-
Target Code Generator:
- Converts IR into target machine code.
πΉ Summary Table
Step | Tool/Phase | Input | Output |
---|---|---|---|
1 | Preprocessor | HLL Source Code | Modified Source |
2 | Compiler Front-End | Modified Source | Intermediate Code |
3 | Compiler Back-End | Intermediate Code | Optimized Code |
4 | Assembler | Assembly/Intermediate | Object Code |
5 | Linker | Object Code + Libraries | Executable |
6 | Loader | Executable | Machine Code in Memory |
Final Flow:
High-Level Language β Preprocessor β Compiler β Assembler β Linker β Loader β Machine Code
Top comments (0)