diff --git a/dsa_editor/src/syntax/dsa.rs b/dsa_editor/src/syntax/dsa.rs index 2c04169..4e6815e 100644 --- a/dsa_editor/src/syntax/dsa.rs +++ b/dsa_editor/src/syntax/dsa.rs @@ -16,13 +16,13 @@ impl Syntax { "xor", "nand", "nor", "xnor", "irt", "int", "hlt", // pseduo-instructions "db", "dh", "dw", "resb", "resh", "resw", "push", "pop", "lwi", "call", - "ret", + "include", ]), types: BTreeSet::from([]), special: BTreeSet::from([ "rg0", "rg1", "rg2", "rg3", "rg4", "rg5", "rg6", "rg7", "rg8", "rg9", "rga", "rgb", "rgc", "rgd", "rge", "rgf", "acc", "spr", "bpr", "ret", - "idr", "mmr", "zero", "null", + "idr", "mmr", "zero", "null", "pcx", "mdr", "mar", "sts", "cir", ]), } } diff --git a/resources/dsa/fib.dsa b/resources/dsa/fib.dsa index 5042ee0..630892c 100644 --- a/resources/dsa/fib.dsa +++ b/resources/dsa/fib.dsa @@ -1,27 +1,20 @@ db fib_count: 10 // How many more numbers to calculate after F(0) and F(1) -init: - lli 0, rg0 // F(0) = 0 - lli 1, rg1 // F(1) = 1 - ldb fib_count, rg2 +fib_n: + pop ret + pop rg0 // n -loop: - add rg0, rg1, acc // rg4 = rg0 + rg1 (new Fibonacci number) + lli 0, rg1 + lli 1, rg2 - push rg0 - mov rg1, rg0 // rg0 = previous rg1 (F(n-2) = F(n-1)) - mov acc, rg1 // rg1 = rg4 (F(n-1) = F(n)) +start: + add rg1, rg2, acc + push rg1 + mov rg2, rg1 + mov acc, rg2 - dec rg2 // rg2 = rg2 - 1 - - cmp rg2, zero // Compare counter with 0 - jgt loop // Jump back if counter > 0 - -finish: - push rg0, - push rg1, - // Final Fibonacci number is in rg1 - hlt - - // jmp print::run - + cmp rg0, zero + dec rg0 + + jgt start + jmp 4, ret \ No newline at end of file diff --git a/resources/dsa/test.dsa b/resources/dsa/test.dsa index 101c8b0..bb23145 100644 --- a/resources/dsa/test.dsa +++ b/resources/dsa/test.dsa @@ -1,12 +1,15 @@ include print "../resources/dsa/print.dsa" +include fib "../resources/dsa/fib.dsa" + +dw stack: 0x10000 +db string: "Hello world! This is about to be dependency hell..." +db string2: "And extremely jank. Ridiculously, unfathomably jank." init: - dw stack: 0x10000 ldw stack, bpr mov bpr, spr start: - db string: "Damn this works pretty well" lwi string, rg1 // push variables @@ -15,4 +18,18 @@ start: // call jmp print::print + + + lli 25, rg0 + push rg0 + push pcx + jmp fib::fib_n + + + lwi string2, rg1 + push rg1 + push pcx + + jmp print::print + hlt \ No newline at end of file