9a571fcbe7a811b1d8a7f868b87ec43bfe646b14
[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         addis r0,r0,-53
15         stw r0, 12(r2) ;50
16
17         addis r0,r0,-10
18         stw r0, 16(r2) ;40
19
20         ldis r1, 5
21         call sum 
22         ;r0 sollte 1+3+103+50+40=197 sein
23         br dummynop
24
25 sum:
26         ;r1 = len
27         ;r2 = arr
28         ;r3 = i
29         ;r0 = sum
30         ;r4 arr data
31         ldis r0, 0
32         addi r3, r1, 0
33         retzs- ; check len != 0
34 loop:
35         ;load arr data
36         ldw r4, 0(r2)
37         ;sum += arr[i];
38         add r0, r0, r4
39         addi r2, r2, 4
40         subi r3, r3, 1
41         brnz+ loop
42         ret
43
44 dummynop:
45         addi r0,r0,0