$gcc -Wall -save-temps filename.c -o filename When we compile code with "-save-temps" option of gcc it generates 3 output files : 1) preprocessed code (having .i extension) 2) assembly code (having .s extension) 3) object code (having .o extension) ******** filename.c ***************** #include int main(){ printf("Hello World\n"); } ******** filename.s ***************** .file "monprog.c" .section .rodata .LC0: .string "Hello World" .text .global main .type main, @function main: .LFB0 .cfi_startproc push %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl $.LC0, %edi call puts movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC:" .section .note.GNU-stack, " ", @progbits ************************************* How with GNO can we have assembly source code of our program ? >compile filename.c keep=filename >link filename keep=filename >ls filename* filename.a filename.c filename.root filename.sym