117 lines
1.8 KiB
ArmAsm
117 lines
1.8 KiB
ArmAsm
.file "task07_free_insert.c"
|
|
.option nopic
|
|
.attribute arch, "rv32i2p1_zicsr2p0_zifencei2p0"
|
|
.attribute unaligned_access, 0
|
|
.attribute stack_align, 16
|
|
.text
|
|
.align 2
|
|
.globl main
|
|
.type main, @function
|
|
main:
|
|
lla a5,.LANCHOR0
|
|
lla a4,.LANCHOR0+176
|
|
sw a4,end_marker,a3
|
|
sw a5,start,a3
|
|
lla a3,.LANCHOR0+128
|
|
sw a3,0(a5)
|
|
sw a4,128(a5)
|
|
sw zero,176(a5)
|
|
li a4,40
|
|
sw a4,4(a5)
|
|
li a4,48
|
|
sw a4,132(a5)
|
|
sw zero,180(a5)
|
|
li a4,32
|
|
sw a4,68(a5)
|
|
lla a5,start
|
|
lla a3,.LANCHOR0+64
|
|
.L2:
|
|
mv a4,a5
|
|
lw a5,0(a5)
|
|
bltu a5,a3,.L2
|
|
lla a3,.LANCHOR0
|
|
sw a5,64(a3)
|
|
lla a5,.LANCHOR0+64
|
|
sw a5,0(a4)
|
|
lw a5,start
|
|
beq a5,a3,.L16
|
|
sw zero,g_order_ok,a4
|
|
lla a4,.LANCHOR0+176
|
|
beq a5,a4,.L5
|
|
.L9:
|
|
mv a4,a5
|
|
li a3,0
|
|
lla a2,.LANCHOR0+176
|
|
.L6:
|
|
addi a3,a3,1
|
|
lw a4,0(a4)
|
|
bne a4,a2,.L6
|
|
sw a3,g_free_count,a4
|
|
li a4,0
|
|
lla a2,.LANCHOR0+176
|
|
.L7:
|
|
lw a3,4(a5)
|
|
add a4,a4,a3
|
|
lw a5,0(a5)
|
|
bne a5,a2,.L7
|
|
.L8:
|
|
sw a4,g_total_free,a5
|
|
li a0,0
|
|
ret
|
|
.L16:
|
|
lla a3,.LANCHOR0+64
|
|
lw a2,.LANCHOR0
|
|
li a4,0
|
|
beq a2,a3,.L17
|
|
.L4:
|
|
sw a4,g_order_ok,a3
|
|
j .L9
|
|
.L17:
|
|
lla a3,.LANCHOR0+128
|
|
lw a2,.LANCHOR0+64
|
|
bne a2,a3,.L4
|
|
lla a3,.LANCHOR0+176
|
|
lw a4,.LANCHOR0+128
|
|
sub a4,a4,a3
|
|
seqz a4,a4
|
|
j .L4
|
|
.L5:
|
|
sw zero,g_free_count,a5
|
|
li a4,0
|
|
j .L8
|
|
.size main, .-main
|
|
.globl g_total_free
|
|
.globl g_free_count
|
|
.globl g_order_ok
|
|
.bss
|
|
.align 2
|
|
.set .LANCHOR0,. + 0
|
|
.type heap_area, @object
|
|
.size heap_area, 192
|
|
heap_area:
|
|
.zero 192
|
|
.section .sbss,"aw",@nobits
|
|
.align 2
|
|
.type g_total_free, @object
|
|
.size g_total_free, 4
|
|
g_total_free:
|
|
.zero 4
|
|
.type g_free_count, @object
|
|
.size g_free_count, 4
|
|
g_free_count:
|
|
.zero 4
|
|
.type g_order_ok, @object
|
|
.size g_order_ok, 4
|
|
g_order_ok:
|
|
.zero 4
|
|
.type end_marker, @object
|
|
.size end_marker, 4
|
|
end_marker:
|
|
.zero 4
|
|
.type start, @object
|
|
.size start, 8
|
|
start:
|
|
.zero 8
|
|
.ident "GCC: (15.2.0-23) 15.2.0"
|
|
.section .note.GNU-stack,"",@progbits
|