aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2023-11-01 17:55:34 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2023-11-01 17:55:34 +0000
commit809cc1b26a42e0690eaa56dafb7fc609ab353737 (patch)
treef775ad256fb45bb0fb8fd3b7c59e48cfd5b563fd
parent693ec7a9d0f408eba12a2020eb7bdf78c2db7573 (diff)
downloadovm-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.asm22
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