projects
/
calu.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
fc6a3cdc90508b52f56bc4bd07750ce6de6f63cd
[calu.git]
/
8_benchs
/
src
/
fibmmem.s
1
.data
2
.org 0x10
3
list:
4
.fill 0x1 ;1. element = 1 ;0x10
5
.fill 0x1 ;2. element = 1 ;0x14
6
.fill 0x100, 0x0 ;nullen..
7
.text
8
main:
9
ldi r1, 9;
10
ldil r10, list@lo ; global pointer
11
ldih r10, list@hi
12
call+ fibcall;
13
br+ main;
14
15
; fib(n) {
16
; if (list[n] > 0) {
17
; return list[n]
18
; }
19
; a = fib(n-1)
20
; list[n] = a + list[n-2]
21
; return list[n]
22
; }
23
fibcall:
24
lls r1, r1, 2 ; *4
25
fibmem:
26
add r2, r10, r1
27
ldw r0, 0(r2)
28
cmpi r0, 0
29
retnz-
30
subi r1, r1, 4
31
call+ fibmem
32
ldw r3, 0-4(r2)
33
add r0, r3, r0
34
addi r2, r2, 4
35
stw r0, 0(r2) ; ergebnis speichern
36
ret+