// GENERATED BY DSC COMPILER // Generated at 2026-02-03 23:37:16 // Imports include print: "./lib/io/print.dsa" // Globals & Reserved Memory dw heap_start: 196608 dw heap_end: 262144 dw heap_current: 196608 // Entry Point dw stack: 0x10000 db message: "Process Exited with code:" _init: ldw stack, bpr mov bpr, spr push zero call main call print::print_newline lwi message, rg0 push rg0 call print::print pop zero call print::print_hex_word pop zero hlt // Return _ret: mov bpr, spr pop bpr return // Compiled Code Starts... main: push bpr mov spr, bpr lli 0, rg0 push rg0 // bpr-4: x subi bpr 4 rg1 lli 512, rg0 push rg1 // bpr-8: y push rg0 // push arg 0 call arena_create pop rg2 lli 32, rg0 push rg2 // bpr-12: alloc push rg0 // push arg 1 push rg2 // push arg 0 call arena_alloc pop rg3 pop zero lli 32, rg0 subi bpr 12 rg2 ldw rg2, rg2 // bpr-20: alloc push rg3 // bpr-16: ptr1 push rg2 // bpr-20: alloc push rg0 // push arg 1 push rg2 // push arg 0 call arena_alloc pop rg4 pop zero subi bpr 20 rg0 ldw rg0, rg0 // bpr-28: alloc push rg4 // bpr-24: ptr2 push rg0 // bpr-28: alloc push rg0 // push arg 0 call print::print_hex_word pop zero call print::print_newline subi bpr 16 rg0 ldw rg0, rg0 // bpr-24: ptr1 push rg0 // bpr-32: ptr1 push rg0 // push arg 0 call print::print_hex_word pop zero call print::print_newline subi bpr 24 rg0 ldw rg0, rg0 // bpr-32: ptr2 push rg0 // bpr-36: ptr2 push rg0 // push arg 0 call print::print_hex_word pop zero call print::print_newline subi bpr 36 rg0 ldw rg0, rg0 // bpr-44: ptr2 ldw rg0, rg2 push rg0 // bpr-40: ptr2 push rg2 // push arg 0 call print::print_num pop zero call print::print_newline lli 42, rg2 subi bpr 40 rg5 ldw rg5, rg5 // bpr-48: ptr2 stw rg2, rg5 push rg5 // bpr-44: ptr2 push rg5 // push arg 0 call print::print_hex_word pop zero call print::print_newline subi bpr 44 rg2 ldw rg2, rg2 // bpr-52: ptr2 ldw rg2, rg5 push rg2 // bpr-48: ptr2 push rg5 // push arg 0 call print::print_num pop zero call print::print_newline db str_1: "end" lwi str_1, rg5 push rg5 // push arg 0 call print::println pop zero lli 0, rg5 stw rg5, bpr, 8 jmp _ret arena_create: 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 arena_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 arena_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