diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-11-27 08:49:18 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-11-27 08:49:18 -0800 |
commit | 9d5967c648e93b97d0ce9fe91fa8ea706adf52c6 (patch) | |
tree | c6236e35031911aa44eb350d5cad007554c1cc65 /mu.arc.t | |
parent | bb7bad79ae7e23d6a4d484bfe64e0fa95be5baf1 (diff) | |
download | mu-9d5967c648e93b97d0ce9fe91fa8ea706adf52c6.tar.gz |
349 - jump to label
Diffstat (limited to 'mu.arc.t')
-rw-r--r-- | mu.arc.t | 21 |
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'. |