How do I compile to assembly instead of an executable with gcc. I know there is an -S flag, but where do I use it in the makefile. For example, if I use fla
I suggest also using -fverbose-asm
because then the generated assembler has some generated comments which "explains" the code. For example:
gcc -S -fverbose-asm -O2 foo.c
would generate in foo.s
(with some comments) the assembler code produced by compiling foo.c
And to understand what the GCC optimizations are doing one could even try -fdump-tree-all
(but this produces hundreds of files!).
You can ask GCC to produce the assembly file, instead of an object file (or an executable).
For instance:
gcc -Wall -c test.c
Will produce an object file from test.c (test.o).
gcc -Wall -o test test.c
Will produce an executable file named 'test' from test.c
gcc -Wall -S test.c
Will produce an assembly file from test.c (test.s)
Put it pretty much anywhere.
gcc -O3 -S -o output.asm ...
will store the generated assemby in output.asm
.