Website Summary Files Commits Branches @commit @diff @stats
path: root / examples / example3.s
diff options
context:
space:
mode:
Commitc1c2a973906812ff31faf534c4bc384e895cadfe (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-03-20 17:08:15 +0200
Committer
 Syndamia <kamen@syndamia.com>
2025-03-20 17:08:15 +0200
Files54671148b989324071465ba2f3b4f1645fe294e0 /examples/example3.s
tonkobali-main.tar
tonkobali-main.tar.gz
tonkobali-main.zip
Parentbb8c3f02d7c3c318e67575167886de1da123b95a (diff)
feat: Demo video and accompanying example assembly HEAD main
1 files changed, 18 insertions, 0 deletions
-rw-r--r--examples/example3.s18
diff --git a/examples/example3.s b/examples/example3.s
new file mode 100644
index 0000000..fa65c4b
--- /dev/null
+++ b/examples/example3.s
@@ -0,0 +1,18 @@
+; Tonkobali assembler will assemble this program into a series of i64 values
+; Every instruction here is composed of SUBLEQ instructions!
+
+condition = 0
+modifier = 5
+operand = 10
+jmp main ; Start execution from main
+
+label_add: add modifier, operand ; operand += modifier
+ rts ; return from subroutine
+label_sub: sub modifier, operand ; operand -= modifier
+ rts ; return from subroutine
+
+main: beq condition, do_add ; if condition == 0 goto do_add
+do_sub: jsr label_sub ; else enter label_sub subroutine
+ jmp continue
+do_add: jsr label_add ; enter label_add subroutine
+continue: mov operand, %1000 ; Mem[1000] = operand