From c84f30c2965a156da5f07b4d5233fccf11e7424b Mon Sep 17 00:00:00 2001 From: Martin Perner Date: Wed, 10 Nov 2010 20:10:09 +0100 Subject: [PATCH] bench: fib mega mem style runs at about 114 :) but if it is allowed is another question --- 3_test/fibmmem.s | 1 + 8_benchs/src/fibmmem.s | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 120000 3_test/fibmmem.s create mode 100644 8_benchs/src/fibmmem.s diff --git a/3_test/fibmmem.s b/3_test/fibmmem.s new file mode 120000 index 0000000..c2bc347 --- /dev/null +++ b/3_test/fibmmem.s @@ -0,0 +1 @@ +../8_benchs/src/fibmmem.s \ No newline at end of file diff --git a/8_benchs/src/fibmmem.s b/8_benchs/src/fibmmem.s new file mode 100644 index 0000000..a91543d --- /dev/null +++ b/8_benchs/src/fibmmem.s @@ -0,0 +1,38 @@ +.data +.org 0x10 +list: + .fill 0x1 ;1. element = 1 ;0x10 + .fill 0x1 ;2. element = 1 ;0x14 + .fill 0x100, 0x0 ;nullen.. +.text +main: + ldi r1, 9; + ldil r10, list@lo ; global pointer + ldih r10, list@hi + call+ fibcall; + br+ main; + + ; fib(n) { + ; if (list[n] > 0) { + ; return list[n] + ; } + ; a = fib(n-1) + ; list[n] = a + list[n-2] + ; return list[n] + ; } +fibcall: + lls r1, r1, 2 ; *4 +fibmem: + add r2, r10, r1 + ldw r0, 0(r2) + cmpi r0, 0 + retnz- + push r2 ; addr pushen + subi r1, r1, 4 + call+ fibmem + ldw r2, 0-4(r2) + add r0, r2, r0 + pop r2 ; addr poppen + stw r0, 0(r2) ; ergebnis speichern + addi r1, r1, 4 + ret+ -- 2.25.1