From cb84d3f70eb8e305ceff331b08999f8df4550111 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Wed, 10 Nov 2010 00:17:05 +0100 Subject: [PATCH] bench: fibmem.s @ 177 instructions --- 8_benchs/src/fibmem.s | 23 +++++++++++++---------- 8_benchs/src/max.s | 4 +++- 2 files changed, 16 insertions(+), 11 deletions(-) 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 diff --git a/8_benchs/src/max.s b/8_benchs/src/max.s index ec3a70e..7955785 100644 --- a/8_benchs/src/max.s +++ b/8_benchs/src/max.s @@ -27,6 +27,9 @@ main: br+ main max: + ; r1 = len + ; r2 = arr + ; r4 = arr[x] ; r0 = x = arr[0] ldw r0, 0(r2) subi r1, r1, 1 @@ -35,7 +38,6 @@ maxloop: cmp r0, r4 movlt r0, r4 subi r1, r1, 1 - ;cmpi r1, 1 ; nicht noetig hier, weil wegen subi ueberfluessig (?) addid r2, r2, 4 brnq+ maxloop ret+ -- 2.25.1