75 lines
1.3 KiB
ArmAsm
75 lines
1.3 KiB
ArmAsm
.file "task03_heap_init.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 a2,.LANCHOR0
|
|
andi a4,a2,7
|
|
mv a5,a2
|
|
beq a4,zero,.L2
|
|
andi a5,a2,-8
|
|
addi a5,a5,8
|
|
.L2:
|
|
lla a3,.LANCHOR0+160
|
|
sub a3,a3,a5
|
|
addi a4,a5,-8
|
|
andi a3,a3,-8
|
|
add a4,a4,a3
|
|
sw a4,end_marker,a3
|
|
sw zero,0(a4)
|
|
sw zero,4(a4)
|
|
sw a4,0(a5)
|
|
sub a3,a4,a5
|
|
sw a3,4(a5)
|
|
lla a1,start
|
|
sw a5,0(a1)
|
|
sw zero,4(a1)
|
|
sub a5,a5,a2
|
|
sw a5,g_aligned_offset,a2
|
|
sw a3,g_initial_free_size,a5
|
|
lw a5,0(a4)
|
|
seqz a5,a5
|
|
sw a5,g_end_is_last,a4
|
|
li a0,0
|
|
ret
|
|
.size main, .-main
|
|
.globl g_end_is_last
|
|
.globl g_aligned_offset
|
|
.globl g_initial_free_size
|
|
.bss
|
|
.align 2
|
|
.set .LANCHOR0,. + 0
|
|
.type heap_area, @object
|
|
.size heap_area, 168
|
|
heap_area:
|
|
.zero 168
|
|
.section .sbss,"aw",@nobits
|
|
.align 2
|
|
.type g_end_is_last, @object
|
|
.size g_end_is_last, 4
|
|
g_end_is_last:
|
|
.zero 4
|
|
.type g_aligned_offset, @object
|
|
.size g_aligned_offset, 4
|
|
g_aligned_offset:
|
|
.zero 4
|
|
.type g_initial_free_size, @object
|
|
.size g_initial_free_size, 4
|
|
g_initial_free_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
|