3_test: prep for praes tomorrow
[calu.git] / 3_test / sum.s
diff --git a/3_test/sum.s b/3_test/sum.s
new file mode 100644 (file)
index 0000000..b005a05
--- /dev/null
@@ -0,0 +1,46 @@
+.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
+
+       addi r0,r0,-53
+       stw r0, 12(r2) ;50
+
+       addi r0,r0,-10
+       stw r0, 16(r2) ;40
+
+       ;ldis r1, 5
+       ldis r1, 0
+       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