// GENERATED BY DSA-C COMPILER // Generated at 2026-01-31 01:39:55 // Imports include maths: "./lib/maths/core.dsa" 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 // Function return boilerplate _ret: mov bpr, spr pop bpr return factorial: push bpr mov spr, bpr ldw bpr, rg0, 8 lli 1, rg1 cmp rg0, rg1 lli 0, rg2 jgt _cmp_end_1 lli 1, rg2 _cmp_end_1: cmp rg2, zero jeq _else_3 _then_2: lli 1, rg1 stw rg1, bpr, 8 jmp _ret jmp _end_4 _else_3: nop _end_4: push rg0 lli 1, rg1 sub rg0, rg1, rg2 push rg2 call factorial pop rg1 pop rg0 push rg1 push rg0 call maths::multiply pop rg2 pop zero stw rg2, bpr, 8 jmp _ret add_: push bpr mov spr, bpr ldw bpr, rg0, 8 ldw bpr, rg1, 12 add rg0, rg1, rg2 stw rg2, bpr, 8 jmp _ret greater: push bpr mov spr, bpr ldw bpr, rg0, 8 ldw bpr, rg1, 12 add rg0, rg0, rg2 add rg1, rg1, rg3 cmp rg2, rg3 lli 0, rg4 jle _cmp_end_5 lli 1, rg4 _cmp_end_5: cmp rg4, zero jeq _else_7 _then_6: stw rg0, bpr, 8 jmp _ret jmp _end_8 _else_7: add rg1, rg0, rg2 stw rg2, bpr, 8 jmp _ret _end_8: jmp _ret main: push bpr mov spr, bpr lli 5, rg0 push rg0 lli 5, rg1 push rg1 call add_ pop rg2 pop zero push rg2 lli 5, rg0 push rg0 call greater pop rg1 pop zero push rg1 call print::print_num pop rg0 lli 5, rg0 push rg0 call factorial pop rg1 push rg1 call print::print_num pop rg0 lli 0, rg0 stw rg0, bpr, 8 jmp _ret