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 flags -O3 -o exe_name, where should I put the -S flag?
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!).
Related: How to remove "noise" from GCC/clang assembly output? for more ways to make asm more readable, and an excellent intro video to reading x86 asm, from Matt Godbolt (of online compiler-explorer fame).