diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-11-01 17:55:34 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-11-01 17:55:34 +0000 |
commit | 809cc1b26a42e0690eaa56dafb7fc609ab353737 (patch) | |
tree | f775ad256fb45bb0fb8fd3b7c59e48cfd5b563fd | |
parent | 693ec7a9d0f408eba12a2020eb7bdf78c2db7573 (diff) | |
download | ovm-809cc1b26a42e0690eaa56dafb7fc609ab353737.tar.gz ovm-809cc1b26a42e0690eaa56dafb7fc609ab353737.tar.bz2 ovm-809cc1b26a42e0690eaa56dafb7fc609ab353737.zip |
examples/fib.asm now terminates on a very large bound
This is using the comparators and a jump-if
-rw-r--r-- | examples/fib.asm | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/examples/fib.asm b/examples/fib.asm index 004a5c3..2864ba3 100644 --- a/examples/fib.asm +++ b/examples/fib.asm @@ -1,7 +1,8 @@ -;;; fib.asm: A program that indefinitely generates the fibonacci -;;; numbers. Using the registers to store the pairs of fibonacci -;;; numbers, we ensure only a finite memory space is necessary for -;;; this program to function, unlike a pure stack version. +;;; fib.asm: A program that generates the fibonacci numbers up to a +;;; very large bound (~UINT64_MAX). Using the registers to store the +;;; pairs of fibonacci numbers, we ensure only a finite amount of +;;; memory is necessary for this program to function, unlike a pure +;;; stack version. ;; Setup initial REG[0] = 1 and REG[1] = 1 push.word 1 mov.word 0 @@ -10,11 +11,19 @@ ;; Print REG[0] and REG[1] ;; Here is the loop back point `#` + push.hword 1 + print.hword + push.byte ':' + print.char push.reg.word 0 print.word push.byte '\n' print.char + push.hword 2 + print.hword + push.byte ':' + print.char push.reg.word 1 print.word push.byte '\n' @@ -32,6 +41,9 @@ plus.word mov.word 1 + push.word 12200160415121876738 + push.reg.word 1 + gte.word ;; Jump to `#` - jump.abs 4 + jump.if.byte 4 halt |