123 lines
3.5 KiB
ArmAsm
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
|