FREE SEEMS TO WORK POG

This commit is contained in:
Bryan McShea
2022-10-20 22:57:47 -04:00
parent 4590c5ea62
commit de5c57ef9e
2 changed files with 152 additions and 59 deletions

View File

@@ -27,10 +27,14 @@ hexstr:
.global heap_test
heap_test:
addi sp, sp, -(3*8)
addi sp, sp, -(7*8)
sd ra, 0(sp)
sd s0, 8(sp)
sd s1, 16(sp)
sd s2, 24(sp)
sd s3, 32(sp)
sd s4, 40(sp)
sd s5, 48(sp)
# empty heap
@@ -41,7 +45,10 @@ heap_test:
li a0, 8*9
jal heap_alloc
move s2, a0
jal print_heap
jal printnl
li a0, 8*4
jal heap_alloc
@@ -49,8 +56,11 @@ heap_test:
sd t0, (a0)
sd t0, 8(a0)
sd t0, 24(a0)
move s3, a0
li s0, 0x0f
# put array of stuff on heap
li s0, 0x0a
0:
bltz s0, 0f
@@ -69,56 +79,54 @@ heap_test:
jal heap_alloc
li t0, 0xffff
sd t0, 6*8(a0)
move s5, a0
li a0, 8*3
jal heap_alloc
move s4, a0
jal print_heap
jal printnl
# free stuff
move a0, s2
jal heap_free
move a0, s3
jal heap_free
move a0, s4
jal heap_free
move a0, s5
jal heap_free
jal print_heap
ld ra, 0(sp)
ld s0, 8(sp)
ld s1, 16(sp)
addi sp, sp, +(3*8)
sd s2, 24(sp)
sd s3, 32(sp)
sd s4, 40(sp)
sd s5, 48(sp)
addi sp, sp, +(7*8)
ret
print_heap:
addi sp, sp, -(4*8)
addi sp, sp, -8
sd ra, 0(sp)
jal print_heap_info
jal print_heap_blocks
ld ra, 0(sp)
addi sp, sp, +8
ret
print_heap_blocks:
addi sp, sp, -(3*8)
sd ra, 0(sp)
sd s0, 8(sp)
sd s1, 16(sp)
sd s2, 24(sp)
# info
la a0, hinfo_msg
lw a1, -4(a0)
jal print
jal print_space
la a0, hexstr
lw a1, -4(a0)
jal print
la s0, heap_info
move a0, s0
jal print_hex
jal printnl
li s1, 0
li s2, 4
0:
beq s1, s2, 0f
jal print_space
jal print_space
li t1, 8
mul t0, s1, t1
add t0, s0, t0
ld a0, 0(t0)
jal print_hex
jal printnl
addi s1, s1, 1
j 0b
0:
# blocks
@@ -127,8 +135,8 @@ print_heap:
jal println
la t0, heap_info
ld s0, 16(t0)
ld s1, 24(t0)
ld s0, 24(t0)
ld s1, 32(t0)
0:
jal print_space
jal print_space
@@ -144,10 +152,20 @@ print_heap:
jal print_hex
jal print_space
jal printnl
jal print_space
jal print_space
jal print_space
jal print_space
ld a0, 8(s0)
jal print_hex
jal print_space
ld a0, 16(s0)
jal print_hex
jal print_space
la a0, dots
lw a1, -4(a0)
jal print
@@ -165,6 +183,49 @@ print_heap:
j 0b
0:
ld ra, 0(sp)
ld s0, 8(sp)
ld s1, 16(sp)
addi sp, sp, +(3*8)
ret
print_heap_info:
addi sp, sp, -(4*8)
sd ra, 0(sp)
sd s0, 8(sp)
sd s1, 16(sp)
sd s2, 24(sp)
la a0, hinfo_msg
lw a1, -4(a0)
jal print
jal print_space
la a0, hexstr
lw a1, -4(a0)
jal print
la s0, heap_info
move a0, s0
jal print_hex
jal printnl
li s1, 0
li s2, 5
0:
beq s1, s2, 0f
jal print_space
jal print_space
li t1, 8
mul t0, s1, t1
add t0, s0, t0
ld a0, 0(t0)
jal print_hex
jal printnl
addi s1, s1, 1
j 0b
0:
ld ra, 0(sp)
ld s0, 8(sp)
ld s1, 16(sp)