From d66baf6f9978c883889e16b2bf6dd27e51ed30ea Mon Sep 17 00:00:00 2001 From: zxq5 Date: Fri, 13 Feb 2026 21:42:59 +0000 Subject: [PATCH] moved loc --- resources/dsa/example.dsa | 216 +++++++++++++-------------- resources/dsa/lib/error/handlers.dsa | 10 ++ resources/dsa/main.dsa | 169 ++++++++++++++++----- resources/dsa/test.dsa | 50 +++++++ resources/dsa/test.dsc | 20 +++ 5 files changed, 317 insertions(+), 148 deletions(-) create mode 100644 resources/dsa/test.dsa create mode 100644 resources/dsa/test.dsc diff --git a/resources/dsa/example.dsa b/resources/dsa/example.dsa index 0d70938..51a2100 100644 --- a/resources/dsa/example.dsa +++ b/resources/dsa/example.dsa @@ -1,121 +1,119 @@ - // GENERATED BY DSC COMPILER -// Generated at 2026-02-05 00:42:40 +// Generated at 2026-02-10 19:26:10 // Imports include print: "./lib/io/print.dsa" include arena: "./lib/memory/arena_alloc.dsa" - +// // Globals & Reserved Memory - - +// // Entry Point -dw stack: 0x10000 +dw stack: 0x010000 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 - - + ldw stack, bpr 0 + 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... + mov bpr, spr + pop bpr + return +db str_1: "end" +// fn main() -> u32 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::new - 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 rg2 // bpr-16: alloc - push rg3 // bpr-20: ptr1 - push rg0 // push arg 1 - push rg2 // push arg 0 - call arena::alloc - pop rg4 - pop zero - subi bpr 16 rg0 - ldw rg0, rg0 // bpr-24: 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 20 rg0 - ldw rg0, rg0 // bpr-28: 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 - + push bpr + mov spr, bpr + lli 0, rg0 + push rg0 + addi spr, 0, rg1 + lli 512, rg0 + push rg1 +// push arg 0 + push rg0 + call arena::new + pop rg2 + lli 32, rg0 + push rg2 +// push arg 1 + push rg0 +// push arg 0 + push rg2 + call arena::alloc + pop rg3 + pop zero + lli 32, rg0 + ldw spr, rg2 0 + stw rg2, spr 0 + push rg3 +// push arg 1 + push rg0 +// push arg 0 + push rg2 + call arena::alloc + pop rg4 + pop zero + ldw spr, rg0 4 + push rg4 + stw rg0, spr 8 +// push arg 0 + push rg0 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg0 4 + stw rg0, spr 4 +// push arg 0 + push rg0 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg0 0 + stw rg0, spr 0 +// push arg 0 + push rg0 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg0 0 + ldw rg0, rg2 0 + stw rg0, spr 0 +// push arg 0 + push rg2 + call print::print_num + pop zero + call print::print_newline + lli 42, rg2 + ldw spr, rg5 0 + stw rg2, rg5 0 + stw rg5, spr 0 +// push arg 0 + push rg5 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg2 0 + ldw rg2, rg5 0 + stw rg2, spr 0 +// push arg 0 + push rg5 + call print::print_num + pop zero + call print::print_newline + lwi str_1, rg5 +// push arg 0 + push rg5 + call print::println + pop zero + lli 0, rg5 + stw rg5, bpr 8 + jmp _ret \ No newline at end of file diff --git a/resources/dsa/lib/error/handlers.dsa b/resources/dsa/lib/error/handlers.dsa index 931ecde..6572ca0 100644 --- a/resources/dsa/lib/error/handlers.dsa +++ b/resources/dsa/lib/error/handlers.dsa @@ -32,3 +32,13 @@ handle_hard_fault: call print::print pop zero hlt + +trigger: + push bpr + mov spr, bpr + + int 0x01 + + mov bpr, spr + pop bpr + return diff --git a/resources/dsa/main.dsa b/resources/dsa/main.dsa index cf0559d..95b90bf 100644 --- a/resources/dsa/main.dsa +++ b/resources/dsa/main.dsa @@ -1,50 +1,141 @@ - // GENERATED BY DSC COMPILER -// Generated at 2026-02-04 01:44:06 +// Generated at 2026-02-10 19:36:18 // Imports +include alloc: "./lib/memory/block_alloc.dsa" include print: "./lib/io/print.dsa" -include fib: "./lib/maths/fib.dsa" - +// // Globals & Reserved Memory - - +// // Entry Point -dw stack: 0x10000 +dw stack: 0x010000 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 - - + ldw stack, bpr 0 + 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... + mov bpr, spr + pop bpr + return +db str_5: "successful free of ptr" +// fn main() -> u32 main: - push bpr - mov spr, bpr - - lli 6, rg0 - push rg0 // bpr-4: x - push rg0 // push arg 0 - call fib::fib_n - pop rg1 - push rg1 // bpr-8: y - push rg1 // push arg 0 - call print::print_num - pop zero - jmp _ret + push bpr + mov spr, bpr + lli 32, rg0 + lli 64, rg1 +// push arg 1 + push rg0 +// push arg 0 + push rg1 + call alloc::init + pop rg2 + pop zero + push rg2 +// push arg 0 + push rg2 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg0 0 + stw rg0, spr 0 +// push arg 0 + push rg0 + call alloc::alloc + pop rg1 + push rg1 +// push arg 0 + push rg1 + call print::print_hex_word + pop zero + lli 200, rg0 + ldw spr, rg1 0 + stw rg0, rg1 0 + stw rg1, spr 0 + call print::print_newline + ldw spr, rg0 4 + stw rg0, spr 4 +// push arg 0 + push rg0 + call alloc::alloc + pop rg2 + push rg2 +// push arg 0 + push rg2 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg0 4 + ldw rg0, rg2 0 + stw rg0, spr 4 +// push arg 0 + push rg2 + call print::print_num + pop zero + ldw spr, rg2 4 + stw rg2, spr 4 + addi spr, 4, rg3 + ldw spr, rg2 8 + stw rg2, spr 8 +// push arg 1 + push rg3 +// push arg 0 + push rg2 + call alloc::free + pop zero + pop zero + ldw spr, rg2 8 + stw rg2, spr 8 +// push arg 0 + push rg2 + call alloc::alloc + pop rg3 + push rg3 + call print::print_newline + ldw spr, rg2 0 + stw rg2, spr 0 +// push arg 0 + push rg2 + call print::print_hex_word + pop zero + call print::print_newline + ldw spr, rg2 8 + stw rg2, spr 8 +// push arg 0 + push rg2 + call print::print_hex_word + pop zero + ldw spr, rg2 8 + lli 0, rg4 + cmp rg2, rg4 + lli 1, rg5 + jeq _cmp_end_1 + lli 0, rg5 +_cmp_end_1: + cmp rg5, zero + jeq _else_3 +_then_2: + lwi str_5, rg4 + stw rg2, spr 8 +// push arg 0 + push rg4 + call print::print + pop zero + jmp _end_4 +_else_3: + nop +_end_4: + lli 0, rg4 + stw rg4, bpr 8 + jmp _ret \ No newline at end of file diff --git a/resources/dsa/test.dsa b/resources/dsa/test.dsa new file mode 100644 index 0000000..0768e73 --- /dev/null +++ b/resources/dsa/test.dsa @@ -0,0 +1,50 @@ + +// GENERATED BY DSC COMPILER +// Generated at 2026-02-10 01:04:01 + +// Imports +include print: "./lib/io/print.dsa" + +// Globals & Reserved Memory + + +// 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... +// fn main() -> u32 +main: + push bpr + mov spr, bpr + + lli 30, rg0 + push rg0 // free var:x offset:-8 + push rg0 // push arg 0 + call print::print_num + pop zero + lli 200, rg0 + lli 5, rg1 + add rg0, rg1, rg2 + jmp _ret + diff --git a/resources/dsa/test.dsc b/resources/dsa/test.dsc new file mode 100644 index 0000000..f13f9a4 --- /dev/null +++ b/resources/dsa/test.dsc @@ -0,0 +1,20 @@ +include print: "./lib/io/print.dsa"; + +fn main() -> u32 { + let x: u32 = 30; + print::print_num(x); + + 200 + 5; + + let p: Point = Point { + x: 10, + y: 20, + test: [2, 3, 4] + }; +} + +struct Point { + x: u32, + y: u32, + test: [u32; 3], +}