96 lines
1.7 KiB
ArmAsm
96 lines
1.7 KiB
ArmAsm
.file "recursion.c"
|
|
.text
|
|
.def printf; .scl 3; .type 32; .endef
|
|
.seh_proc printf
|
|
printf:
|
|
pushq %rbp
|
|
.seh_pushreg %rbp
|
|
pushq %rbx
|
|
.seh_pushreg %rbx
|
|
subq $56, %rsp
|
|
.seh_stackalloc 56
|
|
leaq 48(%rsp), %rbp
|
|
.seh_setframe %rbp, 48
|
|
.seh_endprologue
|
|
movq %rcx, 32(%rbp)
|
|
movq %rdx, 40(%rbp)
|
|
movq %r8, 48(%rbp)
|
|
movq %r9, 56(%rbp)
|
|
leaq 40(%rbp), %rax
|
|
movq %rax, -16(%rbp)
|
|
movq -16(%rbp), %rbx
|
|
movl $1, %ecx
|
|
movq __imp___acrt_iob_func(%rip), %rax
|
|
call *%rax
|
|
movq %rax, %rcx
|
|
movq 32(%rbp), %rax
|
|
movq %rbx, %r8
|
|
movq %rax, %rdx
|
|
call __mingw_vfprintf
|
|
movl %eax, -4(%rbp)
|
|
movl -4(%rbp), %eax
|
|
addq $56, %rsp
|
|
popq %rbx
|
|
popq %rbp
|
|
ret
|
|
.seh_endproc
|
|
.globl fab
|
|
.def fab; .scl 2; .type 32; .endef
|
|
.seh_proc fab
|
|
fab:
|
|
pushq %rbp
|
|
.seh_pushreg %rbp
|
|
movq %rsp, %rbp
|
|
.seh_setframe %rbp, 0
|
|
subq $32, %rsp
|
|
.seh_stackalloc 32
|
|
.seh_endprologue
|
|
movl %ecx, 16(%rbp)
|
|
cmpl $1, 16(%rbp)
|
|
jne .L4
|
|
movl $1, %eax
|
|
jmp .L5
|
|
.L4:
|
|
movl 16(%rbp), %eax
|
|
subl $1, %eax
|
|
movl %eax, %ecx
|
|
call fab
|
|
imull 16(%rbp), %eax
|
|
.L5:
|
|
addq $32, %rsp
|
|
popq %rbp
|
|
ret
|
|
.seh_endproc
|
|
.section .rdata,"dr"
|
|
.LC0:
|
|
.ascii "Fab: %d\0"
|
|
.text
|
|
.globl main
|
|
.def main; .scl 2; .type 32; .endef
|
|
.seh_proc main
|
|
main:
|
|
pushq %rbp
|
|
.seh_pushreg %rbp
|
|
movq %rsp, %rbp
|
|
.seh_setframe %rbp, 0
|
|
subq $48, %rsp
|
|
.seh_stackalloc 48
|
|
.seh_endprologue
|
|
call __main
|
|
movl $8, -4(%rbp)
|
|
movl -4(%rbp), %eax
|
|
movl %eax, %ecx
|
|
call fab
|
|
movl %eax, %edx
|
|
leaq .LC0(%rip), %rax
|
|
movq %rax, %rcx
|
|
call printf
|
|
movl $0, %eax
|
|
addq $48, %rsp
|
|
popq %rbp
|
|
ret
|
|
.seh_endproc
|
|
.def __main; .scl 2; .type 32; .endef
|
|
.ident "GCC: (x86_64-posix-seh-rev1, Built by MinGW-Builds project) 14.2.0"
|
|
.def __mingw_vfprintf; .scl 2; .type 32; .endef
|