The job of the compiler is to turn the human-readable code to something machine can understand.
Machine code: directly executed by CPU, not human-readable
Assembly code: human-readable form of the machine code
// Stupid_add.c
int main(void) {
int x = 1;
x = x + 1;
x = x + 1;
return x;
}
The number followed is the optimization level.
You can discover that, with more optimization level, more compact the code is. The repeated steps are condensed into one single command instead.