I'm playing around with some asm code, and something is bothering me.
I compile this:
#include <stdio.h>int main(int argc, char** argv){ printf("Hello World\n"); return 0;}
with gcc file.c -S -o file.S
this generates a nice little piece of asm code:
.cstringLC0: .ascii "Hello World\0" .text.globl _main_main:LFB3: pushq %rbpLCFI0: movq %rsp, %rbpLCFI1: subq $16, %rspLCFI2: movl %edi, -4(%rbp) movq %rsi, -16(%rbp) leaq LC0(%rip), %rdi call _puts movl $0, %eax leave retLFE3: .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_supportEH_frame1: .set L$set$0,LECIE1-LSCIE1 .long L$set$0LSCIE1: .long 0x0 .byte 0x1 .ascii "zR\0" .byte 0x1 .byte 0x78 .byte 0x10 .byte 0x1 .byte 0x10 .byte 0xc .byte 0x7 .byte 0x8 .byte 0x90 .byte 0x1 .align 3LECIE1:.globl _main.eh_main.eh:LSFDE1: .set L$set$1,LEFDE1-LASFDE1 .long L$set$1LASFDE1: .long LASFDE1-EH_frame1 .quad LFB3-. .set L$set$2,LFE3-LFB3 .quad L$set$2 .byte 0x0 .byte 0x4 .set L$set$3,LCFI0-LFB3 .long L$set$3 .byte 0xe .byte 0x10 .byte 0x86 .byte 0x2 .byte 0x4 .set L$set$4,LCFI1-LCFI0 .long L$set$4 .byte 0xd .byte 0x6 .align 3LEFDE1: .subsections_via_symbols
My next problem is really, how do I compile this output, and can I make GCC do it for me?