projects
/
calu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bootromfun: testprogramm angepasst -> bytes empfangen im 'stream' geht nicht ordentlich
[calu.git]
/
8_benchs
/
src
/
fibmmem.s
diff --git
a/8_benchs/src/fibmmem.s
b/8_benchs/src/fibmmem.s
index fc6a3cdc90508b52f56bc4bd07750ce6de6f63cd..11a0aa719a3dc9d98066ec63df7f425f4997f473 100644
(file)
--- a/
8_benchs/src/fibmmem.s
+++ b/
8_benchs/src/fibmmem.s
@@
-21,16
+21,30
@@
main:
; return list[n]
; }
fibcall:
; return list[n]
; }
fibcall:
+ ;update counter for aligned access
lls r1, r1, 2 ; *4
lls r1, r1, 2 ; *4
-fibmem:
+ ;calculate adress of top element
add r2, r10, r1
add r2, r10, r1
+fibmem:
+ ;load top element
ldw r0, 0(r2)
ldw r0, 0(r2)
+ ;compare if set
cmpi r0, 0
cmpi r0, 0
+ ;return if set
retnz-
retnz-
- subi r1, r1, 4
+ ;decrement adress for next lopp
+ subi r2, r2, 4
+ ;iterative call for n-1 element
call+ fibmem
call+ fibmem
+ ;load n-2 element
ldw r3, 0-4(r2)
ldw r3, 0-4(r2)
+ ;add n-1 and n-2 element
add r0, r3, r0
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
addi r2, r2, 4
- stw r0, 0(r2) ; ergebnis speichern
+ ;store fib n
+ stw r0, 0(r2)
ret+
ret+