DEV Community

Mujahida Joynab
Mujahida Joynab

Posted on

Introduction to Compiler Design

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)