1273 lines
17 KiB
ArmAsm
1273 lines
17 KiB
ArmAsm
|
.file "11_BST.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 search
|
||
|
.type search, @function
|
||
|
search:
|
||
|
li a5,-1
|
||
|
beq a0,a5,.L8
|
||
|
lla a7,value
|
||
|
lla a6,left_child
|
||
|
lla a2,right_child
|
||
|
li t1,-1
|
||
|
.L3:
|
||
|
slli a5,a0,2
|
||
|
add a4,a7,a5
|
||
|
lw a4,0(a4)
|
||
|
add a3,a2,a5
|
||
|
add a5,a6,a5
|
||
|
beq a4,a1,.L11
|
||
|
bge a4,a1,.L5
|
||
|
lw a0,0(a3)
|
||
|
bne a0,t1,.L3
|
||
|
.L8:
|
||
|
li a0,-1
|
||
|
ret
|
||
|
.L5:
|
||
|
lw a0,0(a5)
|
||
|
bne a0,t1,.L3
|
||
|
j .L8
|
||
|
.L11:
|
||
|
ret
|
||
|
.size search, .-search
|
||
|
.align 1
|
||
|
.globl find_minimum
|
||
|
.type find_minimum, @function
|
||
|
find_minimum:
|
||
|
li a4,-1
|
||
|
mv a5,a0
|
||
|
beq a0,a4,.L15
|
||
|
lla a2,left_child
|
||
|
li a3,-1
|
||
|
.L14:
|
||
|
slli a4,a5,2
|
||
|
add a4,a2,a4
|
||
|
mv a0,a5
|
||
|
lw a5,0(a4)
|
||
|
bne a5,a3,.L14
|
||
|
ret
|
||
|
.L15:
|
||
|
li a0,-1
|
||
|
ret
|
||
|
.size find_minimum, .-find_minimum
|
||
|
.align 1
|
||
|
.globl new_node
|
||
|
.type new_node, @function
|
||
|
new_node:
|
||
|
lla a6,.LANCHOR0
|
||
|
lw a5,0(a6)
|
||
|
lla a2,value
|
||
|
lla a3,left_child
|
||
|
slli a1,a5,2
|
||
|
lla a4,right_child
|
||
|
li a7,-1
|
||
|
add a2,a2,a1
|
||
|
add a3,a3,a1
|
||
|
add a4,a4,a1
|
||
|
addiw a1,a5,1
|
||
|
sw a0,0(a2)
|
||
|
sw a7,0(a3)
|
||
|
sw a7,0(a4)
|
||
|
sw a1,0(a6)
|
||
|
mv a0,a5
|
||
|
ret
|
||
|
.size new_node, .-new_node
|
||
|
.align 1
|
||
|
.globl insert
|
||
|
.type insert, @function
|
||
|
insert:
|
||
|
addi sp,sp,-80
|
||
|
sd s0,64(sp)
|
||
|
sd ra,72(sp)
|
||
|
sd s1,56(sp)
|
||
|
sd s2,48(sp)
|
||
|
sd s3,40(sp)
|
||
|
sd s4,32(sp)
|
||
|
sd s5,24(sp)
|
||
|
sd s6,16(sp)
|
||
|
sd s7,8(sp)
|
||
|
li a3,-1
|
||
|
mv a5,a1
|
||
|
mv s0,a0
|
||
|
beq a0,a3,.L48
|
||
|
lla a4,value
|
||
|
slli s5,a0,2
|
||
|
add a2,a4,s5
|
||
|
lw a2,0(a2)
|
||
|
bge a2,a1,.L21
|
||
|
lla s1,right_child
|
||
|
add a2,s1,s5
|
||
|
lw s2,0(a2)
|
||
|
mv a2,s2
|
||
|
beq s2,a3,.L49
|
||
|
slli s3,s2,2
|
||
|
add a2,a4,s3
|
||
|
lw a2,0(a2)
|
||
|
blt a2,a1,.L50
|
||
|
lla s6,left_child
|
||
|
add a2,s6,s3
|
||
|
lw s4,0(a2)
|
||
|
mv a2,s4
|
||
|
beq s4,a3,.L51
|
||
|
slli a3,s4,2
|
||
|
add a4,a4,a3
|
||
|
lw a4,0(a4)
|
||
|
bge a4,a1,.L32
|
||
|
add s7,s1,a3
|
||
|
lw a0,0(s7)
|
||
|
call insert
|
||
|
sw a0,0(s7)
|
||
|
.L31:
|
||
|
add s3,s6,s3
|
||
|
sw s4,0(s3)
|
||
|
.L23:
|
||
|
add s1,s1,s5
|
||
|
sw s2,0(s1)
|
||
|
mv a0,s0
|
||
|
j .L20
|
||
|
.L21:
|
||
|
lla s6,left_child
|
||
|
add a2,s6,s5
|
||
|
lw s2,0(a2)
|
||
|
mv a2,s2
|
||
|
beq s2,a3,.L52
|
||
|
slli s7,s2,2
|
||
|
add a2,a4,s7
|
||
|
lw a2,0(a2)
|
||
|
blt a2,a1,.L53
|
||
|
add a2,s6,s7
|
||
|
lw s3,0(a2)
|
||
|
mv a2,s3
|
||
|
beq s3,a3,.L54
|
||
|
slli a3,s3,2
|
||
|
add a4,a4,a3
|
||
|
lw a4,0(a4)
|
||
|
bge a4,a1,.L44
|
||
|
lla s1,right_child
|
||
|
add s1,s1,a3
|
||
|
lw a0,0(s1)
|
||
|
call insert
|
||
|
sw a0,0(s1)
|
||
|
.L43:
|
||
|
add a4,s6,s7
|
||
|
sw s3,0(a4)
|
||
|
.L35:
|
||
|
add a5,s6,s5
|
||
|
sw s2,0(a5)
|
||
|
mv a0,s0
|
||
|
j .L20
|
||
|
.L48:
|
||
|
lla a6,.LANCHOR0
|
||
|
lw a0,0(a6)
|
||
|
lla a2,value
|
||
|
lla a3,left_child
|
||
|
slli a1,a0,2
|
||
|
lla a4,right_child
|
||
|
add a2,a2,a1
|
||
|
add a3,a3,a1
|
||
|
add a4,a4,a1
|
||
|
addiw a1,a0,1
|
||
|
sw a5,0(a2)
|
||
|
sw s0,0(a3)
|
||
|
sw s0,0(a4)
|
||
|
sw a1,0(a6)
|
||
|
.L20:
|
||
|
ld ra,72(sp)
|
||
|
ld s0,64(sp)
|
||
|
ld s1,56(sp)
|
||
|
ld s2,48(sp)
|
||
|
ld s3,40(sp)
|
||
|
ld s4,32(sp)
|
||
|
ld s5,24(sp)
|
||
|
ld s6,16(sp)
|
||
|
ld s7,8(sp)
|
||
|
addi sp,sp,80
|
||
|
jr ra
|
||
|
.L50:
|
||
|
add a2,s1,s3
|
||
|
lw s4,0(a2)
|
||
|
mv a2,s4
|
||
|
beq s4,a3,.L55
|
||
|
slli a3,s4,2
|
||
|
add a4,a4,a3
|
||
|
lw a4,0(a4)
|
||
|
bge a4,a1,.L27
|
||
|
add s6,s1,a3
|
||
|
lw a0,0(s6)
|
||
|
call insert
|
||
|
sw a0,0(s6)
|
||
|
.L26:
|
||
|
add s3,s1,s3
|
||
|
sw s4,0(s3)
|
||
|
j .L23
|
||
|
.L53:
|
||
|
lla s1,right_child
|
||
|
add a2,s1,s7
|
||
|
lw s3,0(a2)
|
||
|
mv a2,s3
|
||
|
beq s3,a3,.L56
|
||
|
slli a3,s3,2
|
||
|
add a4,a4,a3
|
||
|
lw a4,0(a4)
|
||
|
bge a4,a1,.L39
|
||
|
add s4,s1,a3
|
||
|
lw a0,0(s4)
|
||
|
call insert
|
||
|
sw a0,0(s4)
|
||
|
.L38:
|
||
|
add s1,s1,s7
|
||
|
sw s3,0(s1)
|
||
|
j .L35
|
||
|
.L49:
|
||
|
lla a0,.LANCHOR0
|
||
|
lw s2,0(a0)
|
||
|
lla a1,left_child
|
||
|
slli a3,s2,2
|
||
|
add a4,a4,a3
|
||
|
add a1,a1,a3
|
||
|
addiw a6,s2,1
|
||
|
add a3,s1,a3
|
||
|
sw a5,0(a4)
|
||
|
sw a2,0(a1)
|
||
|
sw a2,0(a3)
|
||
|
sw a6,0(a0)
|
||
|
j .L23
|
||
|
.L52:
|
||
|
lla a0,.LANCHOR0
|
||
|
lw s2,0(a0)
|
||
|
lla a3,right_child
|
||
|
slli a1,s2,2
|
||
|
add a4,a4,a1
|
||
|
add a6,s6,a1
|
||
|
add a3,a3,a1
|
||
|
addiw a1,s2,1
|
||
|
sw a5,0(a4)
|
||
|
sw a2,0(a6)
|
||
|
sw a2,0(a3)
|
||
|
sw a1,0(a0)
|
||
|
j .L35
|
||
|
.L32:
|
||
|
add s7,s6,a3
|
||
|
lw a0,0(s7)
|
||
|
call insert
|
||
|
sw a0,0(s7)
|
||
|
j .L31
|
||
|
.L44:
|
||
|
add s1,s6,a3
|
||
|
lw a0,0(s1)
|
||
|
call insert
|
||
|
sw a0,0(s1)
|
||
|
j .L43
|
||
|
.L27:
|
||
|
lla s6,left_child
|
||
|
add s6,s6,a3
|
||
|
lw a0,0(s6)
|
||
|
call insert
|
||
|
sw a0,0(s6)
|
||
|
j .L26
|
||
|
.L39:
|
||
|
add s4,s6,a3
|
||
|
lw a0,0(s4)
|
||
|
call insert
|
||
|
sw a0,0(s4)
|
||
|
j .L38
|
||
|
.L51:
|
||
|
lla a1,.LANCHOR0
|
||
|
lw s4,0(a1)
|
||
|
slli a3,s4,2
|
||
|
add a4,a4,a3
|
||
|
add a6,s6,a3
|
||
|
addiw a0,s4,1
|
||
|
add a3,s1,a3
|
||
|
sw a5,0(a4)
|
||
|
sw a2,0(a6)
|
||
|
sw a2,0(a3)
|
||
|
sw a0,0(a1)
|
||
|
j .L31
|
||
|
.L56:
|
||
|
lla a1,.LANCHOR0
|
||
|
lw s3,0(a1)
|
||
|
slli a3,s3,2
|
||
|
add a4,a4,a3
|
||
|
add a6,s6,a3
|
||
|
addiw a0,s3,1
|
||
|
add a3,s1,a3
|
||
|
sw a5,0(a4)
|
||
|
sw a2,0(a6)
|
||
|
sw a2,0(a3)
|
||
|
sw a0,0(a1)
|
||
|
j .L38
|
||
|
.L54:
|
||
|
lla a0,.LANCHOR0
|
||
|
lw s3,0(a0)
|
||
|
lla a3,right_child
|
||
|
slli a1,s3,2
|
||
|
add a4,a4,a1
|
||
|
add a6,s6,a1
|
||
|
add a3,a3,a1
|
||
|
addiw a1,s3,1
|
||
|
sw a5,0(a4)
|
||
|
sw a2,0(a6)
|
||
|
sw a2,0(a3)
|
||
|
sw a1,0(a0)
|
||
|
j .L43
|
||
|
.L55:
|
||
|
lla a0,.LANCHOR0
|
||
|
lw s4,0(a0)
|
||
|
lla a1,left_child
|
||
|
slli a3,s4,2
|
||
|
add a4,a4,a3
|
||
|
add a1,a1,a3
|
||
|
addiw a6,s4,1
|
||
|
add a3,s1,a3
|
||
|
sw a5,0(a4)
|
||
|
sw a2,0(a1)
|
||
|
sw a2,0(a3)
|
||
|
sw a6,0(a0)
|
||
|
j .L26
|
||
|
.size insert, .-insert
|
||
|
.align 1
|
||
|
.globl delete
|
||
|
.type delete, @function
|
||
|
delete:
|
||
|
li a4,-1
|
||
|
beq a0,a4,.L63
|
||
|
addi sp,sp,-32
|
||
|
sd s1,8(sp)
|
||
|
lla a6,value
|
||
|
slli s1,a0,2
|
||
|
add a3,a6,s1
|
||
|
lw a2,0(a3)
|
||
|
sd s0,16(sp)
|
||
|
sd ra,24(sp)
|
||
|
sd s2,0(sp)
|
||
|
mv s0,a0
|
||
|
blt a2,a1,.L70
|
||
|
lla a3,left_child
|
||
|
add s2,a3,s1
|
||
|
lw a7,0(s2)
|
||
|
bgt a2,a1,.L71
|
||
|
lla s2,right_child
|
||
|
add a5,s2,s1
|
||
|
lw a0,0(a5)
|
||
|
beq a7,a4,.L58
|
||
|
beq a0,a4,.L64
|
||
|
mv a5,a0
|
||
|
li a1,-1
|
||
|
.L62:
|
||
|
slli a4,a5,2
|
||
|
add a4,a3,a4
|
||
|
mv a2,a5
|
||
|
lw a5,0(a4)
|
||
|
bne a5,a1,.L62
|
||
|
slli a2,a2,2
|
||
|
add a2,a6,a2
|
||
|
lw a1,0(a2)
|
||
|
add a6,a6,s1
|
||
|
add s2,s2,s1
|
||
|
sw a1,0(a6)
|
||
|
call delete
|
||
|
sw a0,0(s2)
|
||
|
.L61:
|
||
|
mv a0,s0
|
||
|
.L58:
|
||
|
ld ra,24(sp)
|
||
|
ld s0,16(sp)
|
||
|
ld s1,8(sp)
|
||
|
ld s2,0(sp)
|
||
|
addi sp,sp,32
|
||
|
jr ra
|
||
|
.L71:
|
||
|
mv a0,a7
|
||
|
call delete
|
||
|
sw a0,0(s2)
|
||
|
j .L61
|
||
|
.L70:
|
||
|
lla a5,right_child
|
||
|
add s1,a5,s1
|
||
|
lw a0,0(s1)
|
||
|
call delete
|
||
|
sw a0,0(s1)
|
||
|
j .L61
|
||
|
.L64:
|
||
|
ld ra,24(sp)
|
||
|
ld s0,16(sp)
|
||
|
ld s1,8(sp)
|
||
|
ld s2,0(sp)
|
||
|
mv a0,a7
|
||
|
addi sp,sp,32
|
||
|
jr ra
|
||
|
.L63:
|
||
|
li a0,-1
|
||
|
ret
|
||
|
.size delete, .-delete
|
||
|
.align 1
|
||
|
.globl inorder
|
||
|
.type inorder, @function
|
||
|
inorder:
|
||
|
li a5,-1
|
||
|
beq a0,a5,.L101
|
||
|
addi sp,sp,-128
|
||
|
sd s2,96(sp)
|
||
|
sd s3,88(sp)
|
||
|
sd s4,80(sp)
|
||
|
sd s5,72(sp)
|
||
|
sd s11,24(sp)
|
||
|
sd ra,120(sp)
|
||
|
sd s0,112(sp)
|
||
|
sd s1,104(sp)
|
||
|
sd s6,64(sp)
|
||
|
sd s7,56(sp)
|
||
|
sd s8,48(sp)
|
||
|
sd s9,40(sp)
|
||
|
sd s10,32(sp)
|
||
|
mv s5,a0
|
||
|
lla s4,left_child
|
||
|
lla s3,value
|
||
|
lla s2,right_child
|
||
|
li s11,-1
|
||
|
.L90:
|
||
|
slli s5,s5,2
|
||
|
add a5,s4,s5
|
||
|
lw s6,0(a5)
|
||
|
beq s6,s11,.L74
|
||
|
.L89:
|
||
|
slli s6,s6,2
|
||
|
add a5,s4,s6
|
||
|
lw s7,0(a5)
|
||
|
beq s7,s11,.L75
|
||
|
.L88:
|
||
|
slli s7,s7,2
|
||
|
add a5,s4,s7
|
||
|
lw s8,0(a5)
|
||
|
beq s8,s11,.L76
|
||
|
.L87:
|
||
|
slli s8,s8,2
|
||
|
add a5,s4,s8
|
||
|
lw s0,0(a5)
|
||
|
beq s0,s11,.L77
|
||
|
.L86:
|
||
|
slli s0,s0,2
|
||
|
add a5,s4,s0
|
||
|
lw s9,0(a5)
|
||
|
beq s9,s11,.L78
|
||
|
.L85:
|
||
|
slli s9,s9,2
|
||
|
add a5,s4,s9
|
||
|
lw s10,0(a5)
|
||
|
beq s10,s11,.L79
|
||
|
.L84:
|
||
|
slli s10,s10,2
|
||
|
add a5,s4,s10
|
||
|
lw s1,0(a5)
|
||
|
beq s1,s11,.L80
|
||
|
.L83:
|
||
|
slli s1,s1,2
|
||
|
add a5,s4,s1
|
||
|
lw a5,0(a5)
|
||
|
beq a5,s11,.L81
|
||
|
.L82:
|
||
|
slli a5,a5,2
|
||
|
add a4,s4,a5
|
||
|
lw a0,0(a4)
|
||
|
sd a5,8(sp)
|
||
|
call inorder
|
||
|
ld a5,8(sp)
|
||
|
add a4,s3,a5
|
||
|
lw a0,0(a4)
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
ld a5,8(sp)
|
||
|
add a5,s2,a5
|
||
|
lw a5,0(a5)
|
||
|
bne a5,s11,.L82
|
||
|
.L81:
|
||
|
add a5,s3,s1
|
||
|
lw a0,0(a5)
|
||
|
add s1,s2,s1
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s1,0(s1)
|
||
|
bne s1,s11,.L83
|
||
|
.L80:
|
||
|
add a5,s3,s10
|
||
|
lw a0,0(a5)
|
||
|
add s10,s2,s10
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s10,0(s10)
|
||
|
bne s10,s11,.L84
|
||
|
.L79:
|
||
|
add a5,s3,s9
|
||
|
lw a0,0(a5)
|
||
|
add s9,s2,s9
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s9,0(s9)
|
||
|
bne s9,s11,.L85
|
||
|
.L78:
|
||
|
add a5,s3,s0
|
||
|
lw a0,0(a5)
|
||
|
add s0,s2,s0
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s0,0(s0)
|
||
|
bne s0,s11,.L86
|
||
|
.L77:
|
||
|
add a5,s3,s8
|
||
|
lw a0,0(a5)
|
||
|
add s8,s2,s8
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s8,0(s8)
|
||
|
bne s8,s11,.L87
|
||
|
.L76:
|
||
|
add a5,s3,s7
|
||
|
lw a0,0(a5)
|
||
|
add s7,s2,s7
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s7,0(s7)
|
||
|
bne s7,s11,.L88
|
||
|
.L75:
|
||
|
add a5,s3,s6
|
||
|
lw a0,0(a5)
|
||
|
add s6,s2,s6
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s6,0(s6)
|
||
|
bne s6,s11,.L89
|
||
|
.L74:
|
||
|
add a5,s3,s5
|
||
|
lw a0,0(a5)
|
||
|
add s5,s2,s5
|
||
|
call putint@plt
|
||
|
li a0,32
|
||
|
call putch@plt
|
||
|
lw s5,0(s5)
|
||
|
bne s5,s11,.L90
|
||
|
ld ra,120(sp)
|
||
|
ld s0,112(sp)
|
||
|
ld s1,104(sp)
|
||
|
ld s2,96(sp)
|
||
|
ld s3,88(sp)
|
||
|
ld s4,80(sp)
|
||
|
ld s5,72(sp)
|
||
|
ld s6,64(sp)
|
||
|
ld s7,56(sp)
|
||
|
ld s8,48(sp)
|
||
|
ld s9,40(sp)
|
||
|
ld s10,32(sp)
|
||
|
ld s11,24(sp)
|
||
|
addi sp,sp,128
|
||
|
jr ra
|
||
|
.L101:
|
||
|
ret
|
||
|
.size inorder, .-inorder
|
||
|
.section .text.startup,"ax",@progbits
|
||
|
.align 1
|
||
|
.globl main
|
||
|
.type main, @function
|
||
|
main:
|
||
|
addi sp,sp,-160
|
||
|
sd ra,152(sp)
|
||
|
sd s0,144(sp)
|
||
|
sd s1,136(sp)
|
||
|
sd s2,128(sp)
|
||
|
sd s3,120(sp)
|
||
|
sd s4,112(sp)
|
||
|
sd s5,104(sp)
|
||
|
sd s6,96(sp)
|
||
|
sd s7,88(sp)
|
||
|
sd s8,80(sp)
|
||
|
sd s9,72(sp)
|
||
|
sd s10,64(sp)
|
||
|
sd s11,56(sp)
|
||
|
sw zero,.LANCHOR0,a5
|
||
|
call getint@plt
|
||
|
bne a0,zero,.L178
|
||
|
.L105:
|
||
|
ld ra,152(sp)
|
||
|
ld s0,144(sp)
|
||
|
ld s1,136(sp)
|
||
|
ld s2,128(sp)
|
||
|
ld s3,120(sp)
|
||
|
ld s4,112(sp)
|
||
|
ld s5,104(sp)
|
||
|
ld s6,96(sp)
|
||
|
ld s7,88(sp)
|
||
|
ld s8,80(sp)
|
||
|
ld s9,72(sp)
|
||
|
ld s10,64(sp)
|
||
|
ld s11,56(sp)
|
||
|
li a0,0
|
||
|
addi sp,sp,160
|
||
|
jr ra
|
||
|
.L178:
|
||
|
lla s7,.LANCHOR0
|
||
|
mv s5,a0
|
||
|
call getint@plt
|
||
|
lw s0,0(s7)
|
||
|
lla s2,value
|
||
|
lla s4,left_child
|
||
|
slli s8,s0,2
|
||
|
lla s3,right_child
|
||
|
li a5,-1
|
||
|
add a1,s2,s8
|
||
|
add a2,s4,s8
|
||
|
add a3,s3,s8
|
||
|
addiw a4,s0,1
|
||
|
sw a5,0(a2)
|
||
|
sw a5,0(a3)
|
||
|
sw a0,0(a1)
|
||
|
sw a4,0(s7)
|
||
|
li a5,1
|
||
|
ble s5,a5,.L106
|
||
|
li s1,1
|
||
|
li s6,-1
|
||
|
.L108:
|
||
|
call getint@plt
|
||
|
mv a1,a0
|
||
|
bne s0,s6,.L179
|
||
|
lw a4,0(s7)
|
||
|
addiw s1,s1,1
|
||
|
slli a5,a4,2
|
||
|
add a2,s2,a5
|
||
|
add a3,s4,a5
|
||
|
addiw a4,a4,1
|
||
|
add a5,s3,a5
|
||
|
sw a0,0(a2)
|
||
|
sw s0,0(a3)
|
||
|
sw s0,0(a5)
|
||
|
sw a4,0(s7)
|
||
|
bne s5,s1,.L108
|
||
|
.L106:
|
||
|
mv a0,s0
|
||
|
call inorder
|
||
|
li a0,10
|
||
|
call putch@plt
|
||
|
call getint@plt
|
||
|
mv s2,a0
|
||
|
ble a0,zero,.L168
|
||
|
li s1,0
|
||
|
.L169:
|
||
|
call getint@plt
|
||
|
mv a1,a0
|
||
|
mv a0,s0
|
||
|
call delete
|
||
|
addiw s1,s1,1
|
||
|
mv s0,a0
|
||
|
bne s2,s1,.L169
|
||
|
.L168:
|
||
|
mv a0,s0
|
||
|
call inorder
|
||
|
li a0,10
|
||
|
call putch@plt
|
||
|
j .L105
|
||
|
.L179:
|
||
|
add a5,s4,s8
|
||
|
add s9,s2,s8
|
||
|
sd a5,8(sp)
|
||
|
li s10,-1
|
||
|
add s8,s3,s8
|
||
|
.L107:
|
||
|
lw a5,0(s9)
|
||
|
bge a5,a1,.L109
|
||
|
lw a3,0(s8)
|
||
|
beq a3,s10,.L180
|
||
|
slli s6,a3,2
|
||
|
add a5,s2,s6
|
||
|
lw a5,0(a5)
|
||
|
bge a5,a1,.L112
|
||
|
add a5,s3,s6
|
||
|
lw a5,0(a5)
|
||
|
beq a5,s10,.L181
|
||
|
slli s11,a5,2
|
||
|
add a2,s2,s11
|
||
|
lw a2,0(a2)
|
||
|
bge a2,a1,.L115
|
||
|
add a2,s3,s11
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L182
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a6,40(sp)
|
||
|
sd a5,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L118
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a6,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L117:
|
||
|
add s11,s3,s11
|
||
|
sw a6,0(s11)
|
||
|
.L114:
|
||
|
add s6,s3,s6
|
||
|
sw a5,0(s6)
|
||
|
j .L111
|
||
|
.L109:
|
||
|
ld a5,8(sp)
|
||
|
lw s11,0(a5)
|
||
|
beq s11,s10,.L183
|
||
|
slli s6,s11,2
|
||
|
add a5,s2,s6
|
||
|
lw a5,0(a5)
|
||
|
bge a5,a1,.L141
|
||
|
add a5,s3,s6
|
||
|
lw a3,0(a5)
|
||
|
beq a3,s10,.L184
|
||
|
slli a5,a3,2
|
||
|
add a2,s2,a5
|
||
|
lw a2,0(a2)
|
||
|
bge a2,a1,.L144
|
||
|
add a2,s3,a5
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L185
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a5,40(sp)
|
||
|
sd a6,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L147
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a5,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L146:
|
||
|
add a5,s3,a5
|
||
|
sw a6,0(a5)
|
||
|
j .L143
|
||
|
.L112:
|
||
|
add a5,s4,s6
|
||
|
lw a5,0(a5)
|
||
|
beq a5,s10,.L186
|
||
|
slli s11,a5,2
|
||
|
add a2,s2,s11
|
||
|
lw a2,0(a2)
|
||
|
bge a2,a1,.L128
|
||
|
add a2,s3,s11
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L187
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a6,40(sp)
|
||
|
sd a5,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L131
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a6,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L130:
|
||
|
add s11,s3,s11
|
||
|
sw a6,0(s11)
|
||
|
j .L127
|
||
|
.L141:
|
||
|
add a5,s4,s6
|
||
|
lw a3,0(a5)
|
||
|
beq a3,s10,.L188
|
||
|
slli a5,a3,2
|
||
|
add a2,s2,a5
|
||
|
lw a2,0(a2)
|
||
|
bge a2,a1,.L157
|
||
|
add a2,s3,a5
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L189
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a5,40(sp)
|
||
|
sd a6,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L160
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a5,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L159:
|
||
|
add a5,s3,a5
|
||
|
sw a6,0(a5)
|
||
|
j .L156
|
||
|
.L180:
|
||
|
lw a3,0(s7)
|
||
|
slli a5,a3,2
|
||
|
add a6,s2,a5
|
||
|
add a0,s4,a5
|
||
|
addiw a2,a3,1
|
||
|
add a5,s3,a5
|
||
|
sw a1,0(a6)
|
||
|
sw s10,0(a0)
|
||
|
sw s10,0(a5)
|
||
|
sw a2,0(s7)
|
||
|
.L111:
|
||
|
sw a3,0(s8)
|
||
|
addiw s1,s1,1
|
||
|
beq s5,s1,.L106
|
||
|
.L138:
|
||
|
call getint@plt
|
||
|
mv a1,a0
|
||
|
j .L107
|
||
|
.L183:
|
||
|
lw s11,0(s7)
|
||
|
slli a5,s11,2
|
||
|
add a0,s2,a5
|
||
|
add a2,s4,a5
|
||
|
addiw a3,s11,1
|
||
|
add a5,s3,a5
|
||
|
sw a1,0(a0)
|
||
|
sw s10,0(a2)
|
||
|
sw s10,0(a5)
|
||
|
sw a3,0(s7)
|
||
|
.L140:
|
||
|
ld a5,8(sp)
|
||
|
addiw s1,s1,1
|
||
|
sw s11,0(a5)
|
||
|
bne s1,s5,.L138
|
||
|
j .L106
|
||
|
.L115:
|
||
|
add a2,s4,s11
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L190
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a6,40(sp)
|
||
|
sd a5,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L123
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a6,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L122:
|
||
|
add s11,s4,s11
|
||
|
sw a6,0(s11)
|
||
|
j .L114
|
||
|
.L128:
|
||
|
add a2,s4,s11
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L191
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a6,40(sp)
|
||
|
sd a5,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L136
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a6,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L135:
|
||
|
add s11,s4,s11
|
||
|
sw a6,0(s11)
|
||
|
.L127:
|
||
|
add s6,s4,s6
|
||
|
sw a5,0(s6)
|
||
|
j .L111
|
||
|
.L144:
|
||
|
add a2,s4,a5
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L192
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a5,40(sp)
|
||
|
sd a6,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L152
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a5,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L151:
|
||
|
add a5,s4,a5
|
||
|
sw a6,0(a5)
|
||
|
.L143:
|
||
|
add s6,s3,s6
|
||
|
sw a3,0(s6)
|
||
|
j .L140
|
||
|
.L157:
|
||
|
add a2,s4,a5
|
||
|
lw a6,0(a2)
|
||
|
beq a6,s10,.L193
|
||
|
slli a2,a6,2
|
||
|
add a0,s2,a2
|
||
|
lw a0,0(a0)
|
||
|
sd a5,40(sp)
|
||
|
sd a6,32(sp)
|
||
|
sd a3,24(sp)
|
||
|
bge a0,a1,.L165
|
||
|
add a2,s3,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a3,24(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a5,40(sp)
|
||
|
sw a0,0(a2)
|
||
|
.L164:
|
||
|
add a5,s4,a5
|
||
|
sw a6,0(a5)
|
||
|
.L156:
|
||
|
add s6,s4,s6
|
||
|
sw a3,0(s6)
|
||
|
j .L140
|
||
|
.L193:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L164
|
||
|
.L192:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L151
|
||
|
.L187:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L130
|
||
|
.L185:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L146
|
||
|
.L182:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L117
|
||
|
.L191:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L135
|
||
|
.L190:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L122
|
||
|
.L189:
|
||
|
lw a6,0(s7)
|
||
|
slli a2,a6,2
|
||
|
add t1,s2,a2
|
||
|
add a7,s4,a2
|
||
|
addiw a0,a6,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(t1)
|
||
|
sw s10,0(a7)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L159
|
||
|
.L186:
|
||
|
lw a5,0(s7)
|
||
|
slli a2,a5,2
|
||
|
add a7,s2,a2
|
||
|
add a6,s4,a2
|
||
|
addiw a0,a5,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(a7)
|
||
|
sw s10,0(a6)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L127
|
||
|
.L188:
|
||
|
lw a3,0(s7)
|
||
|
slli a5,a3,2
|
||
|
add a6,s2,a5
|
||
|
add a0,s4,a5
|
||
|
addiw a2,a3,1
|
||
|
add a5,s3,a5
|
||
|
sw a1,0(a6)
|
||
|
sw s10,0(a0)
|
||
|
sw s10,0(a5)
|
||
|
sw a2,0(s7)
|
||
|
j .L156
|
||
|
.L184:
|
||
|
lw a3,0(s7)
|
||
|
slli a5,a3,2
|
||
|
add a6,s2,a5
|
||
|
add a0,s4,a5
|
||
|
addiw a2,a3,1
|
||
|
add a5,s3,a5
|
||
|
sw a1,0(a6)
|
||
|
sw s10,0(a0)
|
||
|
sw s10,0(a5)
|
||
|
sw a2,0(s7)
|
||
|
j .L143
|
||
|
.L181:
|
||
|
lw a5,0(s7)
|
||
|
slli a2,a5,2
|
||
|
add a7,s2,a2
|
||
|
add a6,s4,a2
|
||
|
addiw a0,a5,1
|
||
|
add a2,s3,a2
|
||
|
sw a1,0(a7)
|
||
|
sw s10,0(a6)
|
||
|
sw s10,0(a2)
|
||
|
sw a0,0(s7)
|
||
|
j .L114
|
||
|
.L160:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a5,40(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L159
|
||
|
.L152:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a5,40(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L151
|
||
|
.L131:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a6,40(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L130
|
||
|
.L165:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a5,40(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L164
|
||
|
.L136:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a6,40(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L135
|
||
|
.L123:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a6,40(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L122
|
||
|
.L118:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a6,40(sp)
|
||
|
ld a5,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L117
|
||
|
.L147:
|
||
|
add a2,s4,a2
|
||
|
lw a0,0(a2)
|
||
|
sd a2,16(sp)
|
||
|
call insert
|
||
|
ld a2,16(sp)
|
||
|
ld a5,40(sp)
|
||
|
ld a6,32(sp)
|
||
|
ld a3,24(sp)
|
||
|
sw a0,0(a2)
|
||
|
j .L146
|
||
|
.size main, .-main
|
||
|
.globl now
|
||
|
.globl right_child
|
||
|
.globl left_child
|
||
|
.globl value
|
||
|
.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 now, @object
|
||
|
.size now, 4
|
||
|
now:
|
||
|
.zero 4
|
||
|
.zero 4
|
||
|
.type right_child, @object
|
||
|
.size right_child, 40000
|
||
|
right_child:
|
||
|
.zero 40000
|
||
|
.type left_child, @object
|
||
|
.size left_child, 40000
|
||
|
left_child:
|
||
|
.zero 40000
|
||
|
.type value, @object
|
||
|
.size value, 40000
|
||
|
value:
|
||
|
.zero 40000
|
||
|
.type _sysy_idx, @object
|
||
|
.size _sysy_idx, 4
|
||
|
_sysy_idx:
|
||
|
.zero 4
|
||
|
.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
|