-S
(note: capital S) switch to GCC, and it will emit the assembly code to a file with a .s
extension. For example, the following command: gcc -O2 -S -c foo.c
will leave the generated assembly code on the file foo.s
.
If you want to see the C code together with the assembly it was converted to, use a command line like this:
gcc -c -g -Wa,-a,-ad [other GCC options] foo.c > foo.lst
which will output the combined C/assembly listing to the file foo.lst
.
If you need to both get the assembly code and to compile/link the program, you can either give the -save-temps
option to GCC (which will leave all the temporary files including the .s
file in the current directory), or use the -Wa,aln=foo.s
option which instructs the assembler to output the assembly translation of the C code (together with the hex machine code and some additional info) to the file named after the =
.