X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=8_benchs%2Fsrc%2Ffibmem.s;h=7ecdc54997d02b0acc6cc391225ce0ede41e2755;hb=cb84d3f70eb8e305ceff331b08999f8df4550111;hp=c848735e564b94b1721708ac5d6cd16333ff2dac;hpb=d599ee320dc29170d19a76a25a82744881fc64fc;p=calu.git diff --git a/8_benchs/src/fibmem.s b/8_benchs/src/fibmem.s index c848735..7ecdc54 100644 --- a/8_benchs/src/fibmem.s +++ b/8_benchs/src/fibmem.s @@ -7,29 +7,32 @@ list: .text main: ldi r1, 9; - ldil r10, list@lo + ldil r10, list@lo ; global pointer ldih r10, list@hi - call+ fibmem; + call+ fibcall; br+ main; - ; if (list[n] == true) { - ; return list[n] + ; fib(n) { + ; if (list[n] > 0) { + ; return list[n] + ; } + ; erg = list[n] = fib(n-1) + (n-2) + ; return erg ; } - ; erg = list[n] = fib(n-1) + (n-2) - ; return erg +fibcall: + lls r1, r1, 2 ; *4 fibmem: - lls r2, r1, 2 ; * 4 - add r2, r10, r2 + add r2, r10, r1 ldw r0, 0(r2) cmpi r0, 0 retnz- push r2 ; addr pushen push r1 ; param pushen - subi r1, r1, 1 + subi r1, r1, 4 call+ fibmem pop r1 ; param poppen push r0 ; zwischenerg pushen - subi r1, r1, 2 + subi r1, r1, 8 call+ fibmem pop r2 ; zwischenerg poppen add r0, r2, r0