.section .text .global _start _start: pushq $0 pushq %rdi pushq %rsi pushq %rdx # STACK LAYOUT # null # argc # argv # envp xorq %rbp, %rbp # init libc movq 0(%rsp), %rdi call _init_libc # call global constructors movq $_init, %rax testq %rax, %rax jz 1f call *%rax 1: movq $__init_array_start, %rbx jmp 2f 1: call *(%rbx) addq $8, %rbx 2: cmpq $__init_array_end, %rbx jne 1b # call main movq 16(%rsp), %rdi movq 8(%rsp), %rsi movq 0(%rsp), %rdx call main # call exit movq %rax, %rdi call exit .size _start, . - _start