96 lines
1.5 KiB
ArmAsm
96 lines
1.5 KiB
ArmAsm
.file "task05_malloc_first_fit.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 a4,.LANCHOR0
|
|
andi a5,a4,7
|
|
beq a5,zero,.L2
|
|
andi a4,a4,-8
|
|
addi a4,a4,8
|
|
.L2:
|
|
mv a5,a4
|
|
addi a3,a4,120
|
|
sw a3,end_marker,a2
|
|
sw zero,120(a4)
|
|
sw zero,4(a3)
|
|
sw a3,0(a4)
|
|
li a2,120
|
|
sw a2,4(a4)
|
|
lla a2,start
|
|
sw a4,0(a2)
|
|
sw zero,4(a2)
|
|
li a1,31
|
|
j .L5
|
|
.L6:
|
|
mv a5,a4
|
|
.L5:
|
|
lw a4,4(a5)
|
|
bgtu a4,a1,.L7
|
|
lw a4,0(a5)
|
|
mv a2,a5
|
|
bne a4,a3,.L6
|
|
li a5,0
|
|
j .L4
|
|
.L7:
|
|
lw a4,0(a5)
|
|
sw a4,0(a2)
|
|
sw zero,0(a5)
|
|
lw a4,4(a5)
|
|
li a3,-2147483648
|
|
or a4,a4,a3
|
|
sw a4,4(a5)
|
|
addi a5,a5,8
|
|
.L4:
|
|
snez a4,a5
|
|
sw a4,g_allocation_ok,a3
|
|
lw a5,-4(a5)
|
|
slli a5,a5,1
|
|
srli a5,a5,1
|
|
sw a5,g_allocated_size,a4
|
|
lw a5,start
|
|
lw a5,4(a5)
|
|
sw a5,g_remaining_free,a4
|
|
li a0,0
|
|
ret
|
|
.size main, .-main
|
|
.globl g_allocation_ok
|
|
.globl g_remaining_free
|
|
.globl g_allocated_size
|
|
.bss
|
|
.align 2
|
|
.set .LANCHOR0,. + 0
|
|
.type heap_area, @object
|
|
.size heap_area, 136
|
|
heap_area:
|
|
.zero 136
|
|
.section .sbss,"aw",@nobits
|
|
.align 2
|
|
.type g_allocation_ok, @object
|
|
.size g_allocation_ok, 4
|
|
g_allocation_ok:
|
|
.zero 4
|
|
.type g_remaining_free, @object
|
|
.size g_remaining_free, 4
|
|
g_remaining_free:
|
|
.zero 4
|
|
.type g_allocated_size, @object
|
|
.size g_allocated_size, 4
|
|
g_allocated_size:
|
|
.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
|