X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=8_benchs%2Fsrc%2Ffibmmem.s;h=11a0aa719a3dc9d98066ec63df7f425f4997f473;hb=a80e63bb420d4ae8dee66703bca59035d672c9fb;hp=fc6a3cdc90508b52f56bc4bd07750ce6de6f63cd;hpb=c02bfbc830b404c8fde2b5269f00bfbe982a4f19;p=calu.git diff --git a/8_benchs/src/fibmmem.s b/8_benchs/src/fibmmem.s index fc6a3cd..11a0aa7 100644 --- a/8_benchs/src/fibmmem.s +++ b/8_benchs/src/fibmmem.s @@ -21,16 +21,30 @@ main: ; return list[n] ; } fibcall: + ;update counter for aligned access lls r1, r1, 2 ; *4 -fibmem: + ;calculate adress of top element add r2, r10, r1 +fibmem: + ;load top element ldw r0, 0(r2) + ;compare if set cmpi r0, 0 + ;return if set retnz- - subi r1, r1, 4 + ;decrement adress for next lopp + subi r2, r2, 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+