sysy-data/functional_c/asm/56_sort_test2.s

157 lines
2.3 KiB
ArmAsm
Raw Normal View History

2024-06-14 13:10:27 +08:00
.file "56_sort_test2.sy"
.option pic
.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.align 1
.globl insertsort
.type insertsort, @function
insertsort:
lla t1,.LANCHOR0
lw a5,0(t1)
li a6,1
mv a7,a0
li a1,-1
ble a5,a6,.L11
.L6:
lw a2,4(a7)
addiw a4,a6,-1
mv a5,a7
j .L3
.L5:
sw a3,4(a5)
addiw a4,a4,-1
addi a5,a5,-4
beq a4,a1,.L8
.L3:
lw a3,0(a5)
bgt a3,a2,.L5
addiw a5,a4,1
slli a5,a5,2
add a5,a0,a5
.L4:
sw a2,0(a5)
lw a5,0(t1)
addiw a6,a6,1
addi a7,a7,4
bgt a5,a6,.L6
.L11:
li a0,0
ret
.L8:
mv a5,a0
j .L4
.size insertsort, .-insertsort
.section .text.startup,"ax",@progbits
.align 1
.globl main
.type main, @function
main:
addi sp,sp,-80
li a4,1
li a3,3
li a5,5
sd s1,56(sp)
slli a1,a4,33
slli a2,a4,35
addi s1,sp,8
slli a3,a3,32
slli a5,a5,32
sd s2,48(sp)
addi a5,a5,6
sd ra,72(sp)
sd s0,64(sp)
lla s2,.LANCHOR0
addi a1,a1,9
slli a4,a4,32
addi a2,a2,7
li a6,10
addi a3,a3,4
mv a0,s1
sd a5,32(sp)
sw a6,0(s2)
sd a3,8(sp)
sd a1,16(sp)
sd a4,24(sp)
sd a2,40(sp)
call insertsort
lw a5,0(s2)
ble a5,a0,.L14
slli a5,a0,2
mv s0,a0
add s1,s1,a5
.L15:
lw a0,0(s1)
addiw s0,s0,1
addi s1,s1,4
call putint@plt
li a0,10
call putch@plt
lw a5,0(s2)
bgt a5,s0,.L15
.L14:
ld ra,72(sp)
ld s0,64(sp)
ld s1,56(sp)
ld s2,48(sp)
li a0,0
addi sp,sp,80
jr ra
.size main, .-main
.globl n
.globl _sysy_idx
.globl _sysy_us
.globl _sysy_s
.globl _sysy_m
.globl _sysy_h
.globl _sysy_l2
.globl _sysy_l1
.globl _sysy_end
.globl _sysy_start
.bss
.align 3
.set .LANCHOR0,. + 0
.type n, @object
.size n, 4
n:
.zero 4
.type _sysy_idx, @object
.size _sysy_idx, 4
_sysy_idx:
.zero 4
.type _sysy_us, @object
.size _sysy_us, 4096
_sysy_us:
.zero 4096
.type _sysy_s, @object
.size _sysy_s, 4096
_sysy_s:
.zero 4096
.type _sysy_m, @object
.size _sysy_m, 4096
_sysy_m:
.zero 4096
.type _sysy_h, @object
.size _sysy_h, 4096
_sysy_h:
.zero 4096
.type _sysy_l2, @object
.size _sysy_l2, 4096
_sysy_l2:
.zero 4096
.type _sysy_l1, @object
.size _sysy_l1, 4096
_sysy_l1:
.zero 4096
.type _sysy_end, @object
.size _sysy_end, 16
_sysy_end:
.zero 16
.type _sysy_start, @object
.size _sysy_start, 16
_sysy_start:
.zero 16
.ident "GCC: (Debian 12.2.0-13) 12.2.0"
.section .note.GNU-stack,"",@progbits