title: x86 gcc assembly output help please
body: <p>Pasted below is unoptimized GCC assembly output for "int main(){}".  I'm relatively good with x86 assembly, but some of this is unfamiliar.  Could someone please do a line-by-line walk-through of what's going on here?</p>
  
  <p>Thanks!</p>
  
  <pre><code>    .text
  .globl _main
  _main:
  LFB2:
      pushq   %rbp
  LCFI0:
      movq    %rsp, %rbp
  LCFI1:
      leave
      ret
  LFE2:
      .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
  EH_frame1:
      .set L$set$0,LECIE1-LSCIE1
      .long L$set$0
  LSCIE1:
      .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 3
  LECIE1:
  .globl _main.eh
  _main.eh:
  LSFDE1:
      .set L$set$1,LEFDE1-LASFDE1
      .long L$set$1
  LASFDE1:
      .long   LASFDE1-EH_frame1
      .quad   LFB2-.
      .set L$set$2,LFE2-LFB2
      .quad L$set$2
      .byte   0x0
      .byte   0x4
      .set L$set$3,LCFI0-LFB2
      .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 3
  LEFDE1:
      .subsections_via_symbols
  </code></pre>