aboutsummaryrefslogtreecommitdiff
path: root/tests/stack_machine_cond_jump
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stack_machine_cond_jump')
-rwxr-xr-xtests/stack_machine_cond_jump/instructions.s.tcl34
l---------tests/stack_machine_cond_jump/test.v1
-rw-r--r--tests/stack_machine_cond_jump/words_to_verify.mem6
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/stack_machine_cond_jump/instructions.s.tcl b/tests/stack_machine_cond_jump/instructions.s.tcl
new file mode 100755
index 0000000..d1d5809
--- /dev/null
+++ b/tests/stack_machine_cond_jump/instructions.s.tcl
@@ -0,0 +1,34 @@
+#!/usr/bin/env tclsh
+
+source tclasm.tcl
+
+## also look at stack_machine_jump test
+
+## we're going to write numbers from 0 to 7 to addresses h400 - h41C
+
+# this will translate to 1 16-bit instruction
+set_sp 0
+
+## set up the counter (1 16-bit instruction)
+const 0
+
+## this is the point we later jump to, address 4
+tee
+tee
+## compute address: counter * 4 + h400 and save counter to it
+const 4
+mul
+swap
+store+ h400
+
+## increase counter by 1
+const 1
+add
+## compare value of counter to 8
+tee
+const 8
+sub
+## loop if counter != 8
+cond_jump 4
+
+halt
diff --git a/tests/stack_machine_cond_jump/test.v b/tests/stack_machine_cond_jump/test.v
new file mode 120000
index 0000000..f5b6a59
--- /dev/null
+++ b/tests/stack_machine_cond_jump/test.v
@@ -0,0 +1 @@
+../stack_machine_store/test.v \ No newline at end of file
diff --git a/tests/stack_machine_cond_jump/words_to_verify.mem b/tests/stack_machine_cond_jump/words_to_verify.mem
new file mode 100644
index 0000000..aa047b5
--- /dev/null
+++ b/tests/stack_machine_cond_jump/words_to_verify.mem
@@ -0,0 +1,6 @@
+// address value
+ 00400 0 // verify the first number written
+
+ 00408 2 // verify a number in the middle
+
+ 0041C 7 // verify the last number