q/docs/ir.md
Eduard Urbach 8b5cca921b
All checks were successful
/ test (push) Successful in 15s
Added IR documentation
2025-07-08 15:43:46 +02:00

27 lines
No EOL
773 B
Markdown

# Intermediate Representation
## Static Single Assignment
The SSA IR follows a simple rule: every value is assigned exactly once.
### Basic Blocks
Every function has a list of basic blocks. Basic blocks store values in the order they appear in the original code.
### Instructions
Instructions are no different from values. The calculation `1 + 2` is represented as 3 values using 2 int constants and 1 binary operation:
```
t0 = 1
t1 = 2
t2 = t0 + t1
```
All of these are considered values even in cases where the type of the value is `void` such as in procedural function calls with side effects.
### Pointers
There are no IDs or indices, therefore values don't know their position in a basic block.
Values reference other values by including a pointer to them.