trasformo il codice più semplice CCapire il più semplice IR LLVM
#include <stdio.h>
int main()
{
return 0;
}
alla sua LLVM IR, utilizzando
clang -emit-llvm -S hello.c
Il generato IR è:
define i32 @main() #0 {
%1 = alloca i32, align 4
store i32 0, i32* %1
ret i32 0
}
Tuttavia, lo faccio non capisco questo IR. (LLVM doc aiuta ma non tanto per i principianti)
- Perché abbiamo
%1 = alloca i32, align 4
? A cosa corrisponde nel codice originale? - Stessa domanda per
store i32 0, i32* %1
- Alloca significa allocazione nello stack (anziché allocazione dinamica)?
- Cosa significa "allinea 4"?
L'allineamento indica che l'operazione di memoria deve essere allineata a 4 byte. Non sono sicuro del resto. – MariusSiuram