aboutsummaryrefslogtreecommitdiffstats
path: root/asm/fibo.atk16
diff options
context:
space:
mode:
Diffstat (limited to 'asm/fibo.atk16')
-rw-r--r--asm/fibo.atk1657
1 files changed, 0 insertions, 57 deletions
diff --git a/asm/fibo.atk16 b/asm/fibo.atk16
deleted file mode 100644
index 34999a9..0000000
--- a/asm/fibo.atk16
+++ /dev/null
@@ -1,57 +0,0 @@
-@opt stack_pointer RG
-@opt csr_scratch RH
-@use ext_std:*
-
-; bootstrap code (must be called to setup mandatory data)
-; will jump to label main
-@include bootstrap
-
-@label main
-; call fibo subroutine with parameter 10
- ldi 10 RA
- csi fibo
- hlt
-
-@label fibo
-;;; subroutine fibo
-;;; param RA N
-;;; return RA Nth fibonacci number
-
-; store RB, RC on stack
- spu RB
- spu RC
-; if n < 2, return n
- subi RA 2 RA
- bri sign fibo_early
-; store also RD on stack
- spu RD
-; a = 0
- ldi 0 RB
-; b = 1
- ldi 1 RC
-@label fibo_loop
-; v = a + b
- add RB RC RD
-; a = b
- mov RC RB
-; b = v
- mov RD RC
-; n -= 1
- dec RA
-; loop while n > 0
- bri zero fibo_done
- jpi fibo_loop
-@label fibo_early
-; restore used registers
- spo RC
- spo RB
-; return from subroutine
- rsr
-@label fibo_done
- mov RD RA
-; restore used registers
- spo RD
- spo RC
- spo RB
-; return from subroutine
- rsr