runs at about 114 :)
but if it is allowed is another question
--- /dev/null
+../8_benchs/src/fibmmem.s
\ No newline at end of file
--- /dev/null
+.data
+.org 0x10
+list:
+ .fill 0x1 ;1. element = 1 ;0x10
+ .fill 0x1 ;2. element = 1 ;0x14
+ .fill 0x100, 0x0 ;nullen..
+.text
+main:
+ ldi r1, 9;
+ ldil r10, list@lo ; global pointer
+ ldih r10, list@hi
+ call+ fibcall;
+ br+ main;
+
+ ; fib(n) {
+ ; if (list[n] > 0) {
+ ; return list[n]
+ ; }
+ ; a = fib(n-1)
+ ; list[n] = a + list[n-2]
+ ; return list[n]
+ ; }
+fibcall:
+ lls r1, r1, 2 ; *4
+fibmem:
+ add r2, r10, r1
+ ldw r0, 0(r2)
+ cmpi r0, 0
+ retnz-
+ push r2 ; addr pushen
+ subi r1, r1, 4
+ call+ fibmem
+ ldw r2, 0-4(r2)
+ add r0, r2, r0
+ pop r2 ; addr poppen
+ stw r0, 0(r2) ; ergebnis speichern
+ addi r1, r1, 4
+ ret+