dw heap_start: 196608 dw heap_end: 262144 dw heap_current: 196608 new: push bpr mov spr, bpr ldw bpr, rg0, 8 lli 12, rg1 add rg0, rg1, rg2 ldw heap_current, rg1 add rg1, rg2, rg3 ldw heap_end, rg4 cmp rg3, rg4 lli 0, rg5 jle _cmp_end_2 lli 1, rg5 _cmp_end_2: cmp rg5, zero jeq _else_4 _then_3: lli 0, rg4 stw rg4, bpr, 8 jmp _ret jmp _end_5 _else_4: nop _end_5: lli 12, rg4 add rg1, rg4, rg5 add rg1, rg2, rg4 stw rg5, rg1 lli 4, rg6 add rg1, rg6, rg7 stw rg5, rg7 lli 8, rg6 add rg1, rg6, rg7 stw rg4, rg7 stw rg3, heap_current stw rg1, bpr, 8 jmp _ret alloc: push bpr mov spr, bpr ldw bpr, rg0, 8 ldw bpr, rg1, 12 lli 4, rg2 add rg0, rg2, rg3 ldw rg3, rg2 lli 8, rg3 add rg0, rg3, rg4 ldw rg4, rg3 add rg2, rg1, rg4 cmp rg4, rg3 lli 0, rg5 jle _cmp_end_6 lli 1, rg5 _cmp_end_6: cmp rg5, zero jeq _else_8 _then_7: lli 0, rg5 stw rg5, bpr, 8 jmp _ret jmp _end_9 _else_8: nop _end_9: lli 4, rg5 add rg0, rg5, rg6 stw rg4, rg6 stw rg2, bpr, 8 jmp _ret destroy: push bpr mov spr, bpr ldw bpr, rg0, 8 lli 0, rg1 stw rg1, bpr, 8 jmp _ret reset_all: push bpr mov spr, bpr ldw heap_start, rg0 stw rg0, heap_current lli 0, rg0 stw rg0, bpr, 8 jmp _ret _ret: mov bpr, spr pop bpr return