DEV Community

Cover image for 🧰 How Compilers actually work?
Nikita Dmitriev
Nikita Dmitriev

Posted on

🧰 How Compilers actually work?

This overview explains the C++ compilation process using the GCC compiler and x86-64 architecture. GCC acts as an orchestrator, managing specialized tools for each stage of the pipeline:

1. Lexical Analysis

The compiler (cc1plus) reads the source code and breaks it into tokens. This step removes irrelevant elements like whitespace and comments, detects basic lexical errors, and prepares the code for further analysis

2. Syntax Analysis

The compiler (cc1plus) checks whether the tokens follow the grammar rules of the programming language and builds an Abstract Syntax Tree (AST). The AST represents the logical structure of the program

3. Compilation

The compiler translates the AST into assembly code specific to the target CPU architecture (x86-64). At this stage, the code is still human-readable instructions

4. Assembly

The GNU assembler (as) converts the assembly code into binary machine code, producing an object file (.o or .obj)

5. Linking

Since programs often consist of multiple files and external libraries, the GNU linker (ld) combines all generated object files and required libraries into a single executable file

GCC compiler C++

Program Execution

When the program is run, the operating system loads the executable file into memory and initializes a process. The CPU then begins executing the machine instructions contained in the binary

💡 The transition from source code to machine instructions can be implemented in various ways and is limited only by human imagination. The stages described here correspond to the standard model used by most compilers

Top comments (0)