about summary refs log tree commit diff stats
path: root/mu.arc.t
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-11-27 08:49:18 -0800
committerKartik K. Agaram <vc@akkartik.com>2014-11-27 08:49:18 -0800
commit9d5967c648e93b97d0ce9fe91fa8ea706adf52c6 (patch)
treec6236e35031911aa44eb350d5cad007554c1cc65 /mu.arc.t
parentbb7bad79ae7e23d6a4d484bfe64e0fa95be5baf1 (diff)
downloadmu-9d5967c648e93b97d0ce9fe91fa8ea706adf52c6.tar.gz
349 - jump to label
Diffstat (limited to 'mu.arc.t')
-rw-r--r--mu.arc.t21
1 files changed, 21 insertions, 0 deletions
diff --git a/mu.arc.t b/mu.arc.t
index 08af8773..4ca5a316 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -386,6 +386,27 @@
 (if (~iso memory* (obj 1 2  2 4  3 nil  4 3))
   (prn "F - 'jump-if' can take a negative offset to make backward jumps"))
 
+(reset)
+(new-trace "jump-label")
+(add-code
+  '((def main [
+      ((1 integer) <- copy (2 literal))
+      ((2 integer) <- copy (1 literal))
+      loop
+      ((2 integer) <- add (2 integer) (2 integer))
+      ((3 boolean) <- eq (1 integer) (2 integer))
+      (jump-if (3 boolean) (loop offset))
+      ((4 integer) <- copy (3 literal))
+      (reply)
+      ((3 integer) <- copy (34 literal))
+     ])))
+;? (set dump-trace*)
+;? (= dump-trace* (obj whitelist '("-")))
+(run 'main)
+;? (prn memory*)
+(if (~iso memory* (obj 1 2  2 4  3 nil  4 3))
+  (prn "F - 'jump-if' can take a negative offset to make backward jumps"))
+
 ; Data movement relies on addressing modes:
 ;   'direct' - refers to a memory location; default for most types.
 ;   'literal' - directly encoded in the code; implicit for some types like 'offset'.