fiboO2
unknown
assembly_x86
a year ago
6.6 kB
2
Indexable
Never
.file "fibo.c" .text .section .rdata,"dr" .LC0: .ascii "fibo of %ld is %ld\12\0" .text .p2align 4 .def printf.constprop.0; .scl 3; .type 32; .endef .seh_proc printf.constprop.0 printf.constprop.0: pushq %rbx .seh_pushreg %rbx subq $48, %rsp .seh_stackalloc 48 .seh_endprologue movl $1, %ecx leaq 72(%rsp), %rbx movq %rdx, 72(%rsp) movq %r8, 80(%rsp) movq %r9, 88(%rsp) movq %rbx, 40(%rsp) call *__imp___acrt_iob_func(%rip) movq %rbx, %r8 leaq .LC0(%rip), %rdx movq %rax, %rcx call __mingw_vfprintf addq $48, %rsp popq %rbx ret .seh_endproc .p2align 4 .globl fibo .def fibo; .scl 2; .type 32; .endef .seh_proc fibo fibo: pushq %r15 .seh_pushreg %r15 pushq %r14 .seh_pushreg %r14 pushq %r13 .seh_pushreg %r13 pushq %r12 .seh_pushreg %r12 pushq %rbp .seh_pushreg %rbp pushq %rdi .seh_pushreg %rdi pushq %rsi .seh_pushreg %rsi pushq %rbx .seh_pushreg %rbx subq $120, %rsp .seh_stackalloc 120 .seh_endprologue movl %ecx, %edi testl %ecx, %ecx jle .L39 cmpl $1, %ecx je .L4 leal -1(%rcx), %r12d xorl %ebx, %ebx movl %r12d, %r14d andl $1, %r14d .L6: movl %r12d, %eax cmpl $1, %r12d je .L61 leal -1(%r12), %esi movl %r14d, 68(%rsp) xorl %r13d, %r13d movl %r12d, %edx movl %esi, 64(%rsp) movl %esi, %r15d movl %ebx, 192(%rsp) .L8: movl %r15d, %r8d cmpl $1, %r15d je .L60 leal -2(%rax), %esi movl %r13d, 72(%rsp) xorl %edi, %edi movl %edx, %r11d movl %r15d, 76(%rsp) movl %esi, %r14d movl %esi, 80(%rsp) .L11: movl %r14d, %r10d cmpl $1, %r14d je .L59 movl %edi, 84(%rsp) leal -2(%r8), %esi xorl %ebp, %ebp movl %r14d, 88(%rsp) movl %esi, %r12d movl %esi, %r14d .L14: movl %r12d, %eax cmpl $1, %r12d je .L58 leal -2(%r10), %r13d xorl %esi, %esi movl %ebp, 92(%rsp) movl %r12d, %r15d movl %r11d, 96(%rsp) movl %r13d, %ebx movl %esi, 60(%rsp) movl %r13d, 100(%rsp) .L17: movl %ebx, %edx cmpl $1, %ebx je .L57 movl %ebx, 104(%rsp) leal -2(%rax), %r12d xorl %ebp, %ebp movl %r12d, %r13d .L20: movl %r13d, %r9d cmpl $1, %r13d je .L56 leal -2(%rdx), %r8d movl %r13d, 40(%rsp) xorl %ebx, %ebx movl %ebp, 44(%rsp) movl %ebx, %edi movl %r8d, %ebx movl %r14d, 48(%rsp) movl %r12d, 52(%rsp) movl %r8d, 56(%rsp) .L23: movl %ebx, %r14d cmpl $1, %ebx je .L55 leal -2(%r9), %ebp xorl %r12d, %r12d movl %ebp, %r13d movl %ebp, %edx movl %edi, %ebp movl %ebx, %edi movl %r13d, %ebx .L26: movl %ebx, %r13d cmpl $1, %ebx je .L54 xorl %esi, %esi .L28: leal -1(%r13), %ecx movl %edx, 108(%rsp) call fibo movl 108(%rsp), %edx addl %eax, %esi subl $2, %r13d je .L29 cmpl $1, %r13d jne .L28 addl $1, %esi .L29: addl %esi, %r12d subl $2, %r14d je .L62 subl $2, %ebx cmpl $1, %r14d jne .L26 .L54: movl %edi, %ebx addl $1, %r12d movl %ebp, %edi movl %edx, %ebp movl %ebp, %r9d addl %r12d, %edi testl %ebp, %ebp je .L63 .L32: subl $2, %ebx cmpl $1, %ebp jne .L23 .L55: movl 44(%rsp), %ebp movl 56(%rsp), %r8d movl %edi, %ebx addl $1, %ebx movl 40(%rsp), %r13d movl 48(%rsp), %r14d movl 52(%rsp), %r12d movl %r8d, %edx addl %ebx, %ebp testl %r8d, %r8d je .L64 .L33: subl $2, %r13d cmpl $1, %r8d jne .L20 .L56: addl $1, %ebp movl 104(%rsp), %ebx addl %ebp, 60(%rsp) movl %r12d, %eax testl %r12d, %r12d je .L65 .L34: subl $2, %ebx cmpl $1, %r12d jne .L17 .L57: movl 60(%rsp), %esi movl 92(%rsp), %ebp movl %r15d, %r12d movl 100(%rsp), %r13d movl 96(%rsp), %r11d addl $1, %esi movl %r13d, %r10d addl %esi, %ebp testl %r13d, %r13d je .L66 .L35: subl $2, %r12d cmpl $1, %r13d jne .L14 .L58: movl %r14d, %esi movl 84(%rsp), %edi movl 88(%rsp), %r14d addl $1, %ebp .L15: movl %esi, %r8d addl %ebp, %edi testl %esi, %esi je .L67 subl $2, %r14d cmpl $1, %esi jne .L11 .L59: movl 72(%rsp), %r13d movl 76(%rsp), %r15d movl %r11d, %edx addl $1, %edi movl 80(%rsp), %esi .L12: movl %esi, %eax addl %edi, %r13d testl %esi, %esi je .L68 subl $2, %r15d cmpl $1, %esi jne .L8 .L60: movl 64(%rsp), %esi movl 68(%rsp), %r14d movl %edx, %r12d addl $1, %r13d movl 192(%rsp), %ebx .L9: addl %r13d, %ebx cmpl %r14d, %r12d je .L69 subl $2, %r12d cmpl $1, %esi jne .L6 .L61: movl %ebx, %edi addl $1, %edi .L4: movl %edi, %eax addq $120, %rsp popq %rbx popq %rsi popq %rdi popq %rbp popq %r12 popq %r13 popq %r14 popq %r15 ret .p2align 4,,10 .p2align 3 .L62: movl %edi, %ebx movl %ebp, %edi movl %edx, %ebp movl %ebp, %r9d addl %r12d, %edi testl %ebp, %ebp jne .L32 .L63: movl 44(%rsp), %ebp movl 56(%rsp), %r8d movl %edi, %ebx movl 40(%rsp), %r13d movl 48(%rsp), %r14d movl 52(%rsp), %r12d movl %r8d, %edx addl %ebx, %ebp testl %r8d, %r8d jne .L33 .L64: addl %ebp, 60(%rsp) movl 104(%rsp), %ebx movl %r12d, %eax testl %r12d, %r12d jne .L34 .L65: movl 92(%rsp), %ebp movl 60(%rsp), %esi movl %r15d, %r12d movl 100(%rsp), %r13d movl 96(%rsp), %r11d addl %esi, %ebp movl %r13d, %r10d testl %r13d, %r13d jne .L35 .L66: movl %r14d, %esi movl 84(%rsp), %edi movl 88(%rsp), %r14d jmp .L15 .L39: xorl %edi, %edi jmp .L4 .L67: movl 72(%rsp), %r13d movl 76(%rsp), %r15d movl %r11d, %edx movl 80(%rsp), %esi jmp .L12 .L68: movl 64(%rsp), %esi movl 68(%rsp), %r14d movl %edx, %r12d movl 192(%rsp), %ebx jmp .L9 .L69: movl %ebx, %edi jmp .L4 .seh_endproc .def __main; .scl 2; .type 32; .endef .section .text.startup,"x" .p2align 4 .globl main .def main; .scl 2; .type 32; .endef .seh_proc main main: pushq %rbp .seh_pushreg %rbp pushq %rdi .seh_pushreg %rdi pushq %rsi .seh_pushreg %rsi pushq %rbx .seh_pushreg %rbx subq $40, %rsp .seh_stackalloc 40 .seh_endprologue leaq .LC0(%rip), %rbp movl $2, %edi call __main movl $1, %r8d movl $1, %edx movq %rbp, %rcx call printf.constprop.0 .p2align 4,,10 .p2align 3 .L71: movl %edi, %ebx xorl %esi, %esi .L72: leal -1(%rbx), %ecx call fibo addl %eax, %esi subl $2, %ebx je .L73 cmpl $1, %ebx jne .L72 addl $1, %esi .L73: movl %edi, %edx movl %esi, %r8d movq %rbp, %rcx addl $1, %edi call printf.constprop.0 cmpl $45, %edi jne .L71 xorl %eax, %eax addq $40, %rsp popq %rbx popq %rsi popq %rdi popq %rbp ret .seh_endproc .ident "GCC: (Rev2, Built by MSYS2 project) 12.1.0" .def __mingw_vfprintf; .scl 2; .type 32; .endef