Files
2026-03-22 17:40:44 +08:00

123 lines
3.5 KiB
ArmAsm

.file "loop.c"
# GNU C17 (x86_64-posix-seh-rev1, Built by MinGW-Builds project) version 14.2.0 (x86_64-w64-mingw32)
# compiled by GNU C version 14.2.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.25-GMP
# GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
# options passed: -mtune=core2 -march=nocona -O1
.text
.def printf; .scl 3; .type 32; .endef
.seh_proc printf
printf:
pushq %rsi #
.seh_pushreg %rsi
pushq %rbx #
.seh_pushreg %rbx
subq $56, %rsp #,
.seh_stackalloc 56
.seh_endprologue
movq %rcx, %rbx # tmp105, __format
movq %rdx, 88(%rsp) #,
movq %r8, 96(%rsp) #,
movq %r9, 104(%rsp) #,
# C:/Program Files/mingw64/x86_64-w64-mingw32/include/stdio.h:382: __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
leaq 88(%rsp), %rsi #, tmp102
movq %rsi, 40(%rsp) # tmp102, MEM[(char * *)&__local_argv]
# C:/Program Files/mingw64/x86_64-w64-mingw32/include/stdio.h:383: __retval = __mingw_vfprintf( stdout, __format, __local_argv );
movl $1, %ecx #,
call *__imp___acrt_iob_func(%rip) #
movq %rax, %rcx # tmp106, _2
# C:/Program Files/mingw64/x86_64-w64-mingw32/include/stdio.h:383: __retval = __mingw_vfprintf( stdout, __format, __local_argv );
movq %rsi, %r8 # tmp102,
movq %rbx, %rdx # __format,
call __mingw_vfprintf #
# C:/Program Files/mingw64/x86_64-w64-mingw32/include/stdio.h:386: }
addq $56, %rsp #,
popq %rbx #
popq %rsi #
ret
.seh_endproc
.section .rdata,"dr"
.align 8
.LC0:
.ascii "What... You've Jumped here! Your value %d is not appropriate.\0"
.text
.globl multimes
.def multimes; .scl 2; .type 32; .endef
.seh_proc multimes
multimes:
subq $40, %rsp #,
.seh_stackalloc 40
.seh_endprologue
# loop.c:5: int result = 1;
movl $1, %eax #, <retval>
# loop.c:6: if (n < 0) goto wow;
testl %ecx, %ecx # n
js .L8 #,
.p2align 4
.L3:
# loop.c:8: result *= i;
imull %ecx, %eax # n, <retval>
# loop.c:9: i--;
subl $1, %ecx #, n
# loop.c:10: if( i > 0 ) goto loop;
testl %ecx, %ecx # n
jg .L3 #,
.L4:
.L2:
# loop.c:16: }
addq $40, %rsp #,
ret
.L8:
# loop.c:13: printf("What... You've Jumped here! Your value %d is not appropriate.", n);
movl %ecx, %edx # n,
leaq .LC0(%rip), %rcx #, tmp100
call printf #
# loop.c:5: int result = 1;
movl $1, %eax #, <retval>
jmp .L2 #
.seh_endproc
.section .rdata,"dr"
.LC1:
.ascii "%d, %d, %d\0"
.text
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
pushq %rsi #
.seh_pushreg %rsi
pushq %rbx #
.seh_pushreg %rbx
subq $40, %rsp #,
.seh_stackalloc 40
.seh_endprologue
# loop.c:18: int main(){
call __main #
# loop.c:20: printf("%d, %d, %d", multimes(a), multimes(b), multimes(c));
movl $-1, %ecx #,
call multimes #
movl %eax, %esi # tmp104, _1
# loop.c:20: printf("%d, %d, %d", multimes(a), multimes(b), multimes(c));
movl $5, %ecx #,
call multimes #
movl %eax, %ebx # tmp105, _2
# loop.c:20: printf("%d, %d, %d", multimes(a), multimes(b), multimes(c));
movl $10, %ecx #,
call multimes #
movl %eax, %edx # tmp106, _3
# loop.c:20: printf("%d, %d, %d", multimes(a), multimes(b), multimes(c));
movl %esi, %r9d # _1,
movl %ebx, %r8d # _2,
leaq .LC1(%rip), %rcx #, tmp102
call printf #
# loop.c:22: }
movl $0, %eax #,
addq $40, %rsp #,
popq %rbx #
popq %rsi #
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