diff options
Diffstat (limited to 'examples/fib.asm')
-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 |