; return list[n]
; }
fibcall:
+ ;update counter for aligned access
lls r1, r1, 2 ; *4
+ ;calculate adress of top element
add r2, r10, r1
-; addi r2, r2, 4
fibmem:
-; add r2, r10, r1
-; ldw r0, 0(r2)
+ ;load top element
ldw r0, 0(r2)
+ ;compare if set
cmpi r0, 0
+ ;return if set
retnz-
+ ;decrement adress for next lopp
subi r2, r2, 4
-; subi r1, r1, 4
+ ;iterative call for n-1 element
call+ fibmem
+ ;load n-2 element
ldw r3, 0-4(r2)
+ ;add n-1 and n-2 element
add r0, r3, r0
+ ;increment address for n element
+ ;is needed because after return
+ ;we need r2 to be set to the address
+ ;of element n
addi r2, r2, 4
- stw r0, 0(r2) ; ergebnis speichern
+ ;store fib n
+ stw r0, 0(r2)
ret+