--- /dev/null
+../8_benchs/src/max.s
\ No newline at end of file
+++ /dev/null
-.text
-main:
- ldis r2, 0x100
-
- ldis r0, 1
- stw r0, 0(r2) ;1
-
- addi r0,r0,2
- stw r0, 4(r2) ;3
-
- addi r0,r0,100
- stw r0, 8(r2) ;103
-
- addis r0,r0,-53
- stw r0, 12(r2) ;50
-
- addis r0,r0,-10
- stw r0, 16(r2) ;40
-
- ldis r1, 5
- call sum
- ;r0 sollte 1+3+103+50+40=197 sein
- br dummynop
-
-sum:
- ;r1 = len
- ;r2 = arr
- ;r3 = i
- ;r0 = sum
- ;r4 arr data
- ldis r0, 0
- addi r3, r1, 0
- retzs- ; check len != 0
-loop:
- ;load arr data
- ldw r4, 0(r2)
- ;sum += arr[i];
- add r0, r0, r4
- addi r2, r2, 4
- subi r3, r3, 1
- brnz+ loop
- ret
-
-dummynop:
- addi r0,r0,0
--- /dev/null
+../8_benchs/src/sum.s
\ No newline at end of file
--- /dev/null
+.data
+arr:
+ .fill 2
+ .fill 3
+ .fill 5
+ .fill 7
+ .fill 11
+ .fill 13
+ .fill 17
+ .fill 19
+ .fill 23
+ .fill 29
+ .fill 31
+ .fill 37
+ .fill 41
+ .fill 43
+ .fill 47
+ .fill 53
+
+.text
+main:
+ ldis r1, 16
+ ldil r2, arr@lo
+ ldih r2, arr@hi
+
+ call+ max
+ br+ main
+
+max:
+ ; r0 = x = arr[0]
+ ldw r0, 0(r2)
+maxloop:
+ ldw r4, 4(r2)
+ cmp r0, r4
+ movlt r0, r4
+ subi r1, r1, 1
+ ;cmpi r1, 1 ; nicht noetig hier, weil wegen subi ueberfluessig (?)
+ reteq-
+ addi r2, r2, 4
+ br+ maxloop
--- /dev/null
+.data
+arr:
+ .fill 2
+ .fill 3
+ .fill 5
+ .fill 7
+ .fill 11
+ .fill 13
+ .fill 17
+ .fill 19
+ .fill 23
+ .fill 29
+ .fill 31
+ .fill 37
+ .fill 41
+ .fill 43
+ .fill 47
+ .fill 53
+
+.text
+main:
+ ldis r1, 16
+ ldil r2, arr@lo
+ ldih r2, arr@hi
+ call+ sum
+ br+ main
+
+sum:
+ ;r1 = len
+ ;r2 = arr
+ ;r3 = i
+ ;r0 = sum
+ ;r4 arr data
+ ldis r0, 0
+ addi r3, r1, 0
+ retzs- ; check len != 0
+loop:
+ ;load arr data
+ ldw r4, 0(r2)
+ ;sum += arr[i];
+ add r0, r0, r4
+ addi r2, r2, 4
+ subi r3, r3, 1
+ brnz+ loop
+ ret