.file "stack.c" .section .rodata .LC0: .string "%x eip=%x\n" .text .globl f .type f, @function f: .LFB2: pushq %rbp .LCFI0: movq %rsp, %rbp .LCFI1: subq $32, %rsp .LCFI2: movl %edi, -20(%rbp) movl -20(%rbp), %eax testl %eax, %eax jle .L2 movl -20(%rbp), %eax leal -1(%rax), %edi call f jmp .L7 .L2: leaq -20(%rbp), %rax movq %rax, -16(%rbp) movq -16(%rbp), %rax subq $8, %rax movq %rax, -8(%rbp) jmp .L5 .L6: movq -8(%rbp), %rax addq $4, %rax movl (%rax), %edx movq -8(%rbp), %rsi movl $.LC0, %edi movl $0, %eax call printf movq -8(%rbp), %rax movl (%rax), %eax cltq movq %rax, -8(%rbp) .L5: cmpq $0, -8(%rbp) jne .L6 .L7: leave ret .LFE2: .size f, .-f .globl main .type main, @function main: .LFB3: pushq %rbp .LCFI3: movq %rsp, %rbp .LCFI4: movl $5, %edi call f leave ret .LFE3: .size main, .-main .section .eh_frame,"a",@progbits .Lframe1: .long .LECIE1-.LSCIE1 .LSCIE1: .long 0x0 .byte 0x1 .string "zR" .uleb128 0x1 .sleb128 -8 .byte 0x10 .uleb128 0x1 .byte 0x3 .byte 0xc .uleb128 0x7 .uleb128 0x8 .byte 0x90 .uleb128 0x1 .align 8 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 .LASFDE1: .long .LASFDE1-.Lframe1 .long .LFB2 .long .LFE2-.LFB2 .uleb128 0x0 .byte 0x4 .long .LCFI0-.LFB2 .byte 0xe .uleb128 0x10 .byte 0x86 .uleb128 0x2 .byte 0x4 .long .LCFI1-.LCFI0 .byte 0xd .uleb128 0x6 .align 8 .LEFDE1: .LSFDE3: .long .LEFDE3-.LASFDE3 .LASFDE3: .long .LASFDE3-.Lframe1 .long .LFB3 .long .LFE3-.LFB3 .uleb128 0x0 .byte 0x4 .long .LCFI3-.LFB3 .byte 0xe .uleb128 0x10 .byte 0x86 .uleb128 0x2 .byte 0x4 .long .LCFI4-.LCFI3 .byte 0xd .uleb128 0x6 .align 8 .LEFDE3: .ident "GCC: (GNU) 4.1.2 20080704 (Red Hat 4.1.2-50)" .section .note.GNU-stack,"",@progbits