Come tradurre da C ad Assembly con GCC
Per tradurre un programma scritto in C in linguaggio Assembly con il compilatore GCC utilizzo la sintassi con l'opzione -S (maiuscola).
gcc -S programma.c
Dove programma.c è il file sorgente del programma scritto in linguaggio C.
Per tradurre in IA32 aggiungo l'opzione -m32
gcc -S programma.c -m32
Il compilatore legge il file sorgente .c e crea un file tradotto in Assembly con l'estensione .s dello stesso nome.
Esempio
Scrivo un semplice programma in C
#include <stdio.h>
int main() {
int a=1;
printf("hello world");
}
Lo salvo con nome prova.c
Per tradurre il sorgente C in assembly digito
gcc -S prova.c
Il compilatore crea un file sorgente con lo stesso nome con estensione.s
Il contenuto del file prova.s è la traduzione in assembly
Ovviamente, si tratta di una traduzione automatica e non ottimizzata.
Tuttavia, è ciò che il compilatore crea come passaggio intermedio durante la compilazione da sorgente C a oggetto eseguibile.
E così via.