From f7a82b643e867e18bee1e41037634c43d969e74b Mon Sep 17 00:00:00 2001 From: Wojciech Kosior Date: Wed, 2 Sep 2020 09:10:53 +0200 Subject: add bench for jump instruction --- tests/stack_machine_jump/instructions.s.tcl | 22 ++++++++++++++++++++++ tests/stack_machine_jump/test.v | 1 + tests/stack_machine_jump/words_to_verify.mem | 2 ++ 3 files changed, 25 insertions(+) create mode 100755 tests/stack_machine_jump/instructions.s.tcl create mode 120000 tests/stack_machine_jump/test.v create mode 100644 tests/stack_machine_jump/words_to_verify.mem (limited to 'tests') diff --git a/tests/stack_machine_jump/instructions.s.tcl b/tests/stack_machine_jump/instructions.s.tcl new file mode 100755 index 0000000..f681fc9 --- /dev/null +++ b/tests/stack_machine_jump/instructions.s.tcl @@ -0,0 +1,22 @@ +#!/usr/bin/env tclsh + +source tclasm.tcl + +## Let there be 2 pieces of code - each one storing a different value in memory +## and halting afterwards. Jump instruction should cause the second piece of +## code to execute instead of the first. We'll verify that by checking, which +## value got written. + +## Ufortunately, our assembly currently doesn't compute label addresses for us. + +# Each of those 4 instructions should get encoded into 1 16-bit word, so they +# will take 8 bytes total. Hence jump to address 8 is needed to skip them. +jump 8 +const h12 +store@ h00100 +halt + +# address 8 here +const h34 +store@ h00100 +halt diff --git a/tests/stack_machine_jump/test.v b/tests/stack_machine_jump/test.v new file mode 120000 index 0000000..f5b6a59 --- /dev/null +++ b/tests/stack_machine_jump/test.v @@ -0,0 +1 @@ +../stack_machine_store/test.v \ No newline at end of file diff --git a/tests/stack_machine_jump/words_to_verify.mem b/tests/stack_machine_jump/words_to_verify.mem new file mode 100644 index 0000000..4fded2b --- /dev/null +++ b/tests/stack_machine_jump/words_to_verify.mem @@ -0,0 +1,2 @@ +// address value + 00100 34 -- cgit v1.2.3