sysy-data/functional_c/asm/57_sort_test3.s

217 lines
3.1 KiB
ArmAsm
Raw Normal View History

2024-06-14 13:10:27 +08:00
.file "57_sort_test3.sy"
.option pic
.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.align 1
.type QuickSort.part.0, @function
QuickSort.part.0:
addi sp,sp,-32
sd s1,8(sp)
sd s2,0(sp)
sd ra,24(sp)
sd s0,16(sp)
mv s1,a0
mv s2,a2
.L12:
slli a5,a1,2
add a5,s1,a5
lw a7,0(a5)
mv a4,s2
mv a3,a1
mv s0,a1
bge a1,s2,.L3
.L2:
slli a5,a4,2
add a5,s1,a5
j .L10
.L5:
addiw a4,a4,-1
beq a4,a3,.L22
.L10:
lw a6,0(a5)
addi a5,a5,-4
bge a6,a7,.L5
slli a5,a3,2
add a0,s1,a5
addiw s0,a3,1
ble a4,a3,.L4
slli t1,a4,2
add t1,s1,t1
lw a3,0(t1)
sw a3,0(a0)
ble a4,s0,.L24
addi a5,a5,4
add a5,s1,a5
j .L7
.L9:
addi a5,a5,4
beq a4,s0,.L25
.L7:
lw a6,0(a5)
mv a3,s0
addiw s0,s0,1
blt a6,a7,.L9
ble a4,a3,.L15
sw a6,0(t1)
addiw a4,a4,-1
bgt a4,a3,.L2
.L15:
mv s0,a3
j .L3
.L25:
slli a5,s0,2
add a5,s1,a5
.L3:
sw a7,0(a5)
addiw a2,s0,-1
bge a1,a2,.L11
mv a0,s1
call QuickSort.part.0
.L11:
addiw a1,s0,1
blt a1,s2,.L12
ld ra,24(sp)
ld s0,16(sp)
ld s1,8(sp)
ld s2,0(sp)
addi sp,sp,32
jr ra
.L24:
mv a3,s0
.L22:
slli a5,a3,2
.L4:
add a5,s1,a5
mv s0,a3
j .L3
.size QuickSort.part.0, .-QuickSort.part.0
.align 1
.globl QuickSort
.type QuickSort, @function
QuickSort:
bge a1,a2,.L29
addi sp,sp,-16
sd ra,8(sp)
call QuickSort.part.0
ld ra,8(sp)
li a0,0
addi sp,sp,16
jr ra
.L29:
li a0,0
ret
.size QuickSort, .-QuickSort
.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 s0,64(sp)
slli a7,a4,33
slli a6,a4,35
addi s0,sp,8
slli a3,a3,32
slli a5,a5,32
sd s2,48(sp)
addi a5,a5,6
sd ra,72(sp)
sd s1,56(sp)
lla s2,.LANCHOR0
addi a7,a7,9
slli a4,a4,32
addi a6,a6,7
li t1,10
addi a3,a3,4
li a2,9
li a1,0
mv a0,s0
sd a5,32(sp)
sw t1,0(s2)
sd a3,8(sp)
sd a7,16(sp)
sd a4,24(sp)
sd a6,40(sp)
call QuickSort.part.0
lw a5,0(s2)
ble a5,zero,.L33
li s1,0
.L34:
lw a0,0(s0)
addiw s1,s1,1
addi s0,s0,4
call putint@plt
li a0,10
call putch@plt
lw a5,0(s2)
bgt a5,s1,.L34
.L33:
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