b005a0557384eb730e32249f10f8b130d8532979
[calu.git] / 3_test / sum.s
1 .text
2 main:
3         ldis r2, 0x100
4
5         ldis r0, 1      
6         stw r0, 0(r2) ;1
7
8         addi r0,r0,2
9         stw r0, 4(r2) ;3
10
11         addi r0,r0,100
12         stw r0, 8(r2) ;103
13
14         addi r0,r0,-53
15         stw r0, 12(r2) ;50
16
17         addi r0,r0,-10
18         stw r0, 16(r2) ;40
19
20         ;ldis r1, 5
21         ldis r1, 0
22         call sum 
23         ;r0 sollte 1+3+103+50+40=197 sein
24         br dummynop
25
26 sum:
27         ;r1 = len
28         ;r2 = arr
29         ;r3 = i
30         ;r0 = sum
31         ;r4 arr data
32         ldis r0, 0
33         addi r3, r1, 0
34         retzs- ; check len != 0
35 loop:
36         ;load arr data
37         ldw r4, 0(r2)
38         ;sum += arr[i];
39         add r0, r0, r4
40         addi r2, r2, 4
41         subi r3, r3, 1
42         brnz+ loop
43         ret
44
45 dummynop:
46         addi r0,r0,0