|
|
/* ------------------------------------------------------- sumRange(A,a,b): returns (A[a] + A[a+1] + ... + A[b-1]) ------------------------------------------------------- */ int sumRange(int[] A, int a, int b ) { int i, s; s = 0; for (i = a, i < b; i++) s = s + A[i]; return(s); } void main( ) { int[] B = {11,12,13,14,15,16,17,18,19,20}; int[] C = {1,2,3,4,5,6,7,8,9,10}; int x, y, sum; sum = sumRange(B, 0, 5); sum = sumRange(C, x, y); } |
Important note: how to pass an array to a function
|
|
// Java statement: sum = sumRange(B, 0, 5): /* ------------------------------------------------- Pass parameter address of array B in reg r0 ------------------------------------------------- */ movw r0, #:lower16:B movt r0, #:upper16:B /* ------------------------------------------------- Pass 2nd parameter value 0 in reg r1 ------------------------------------------------- */ mov r1, #0 /* ------------------------------------------------- Pass 3nd parameter value 5 in reg r2 ------------------------------------------------- */ mov r2, #5 /* ---------------------------------------------------------------- |
/* ---------------------------------------------------------------- Function sumRange(a,b): agreed inputs: r0 = A, r1 = a, r2 = b agreed return: r0 = return value Unused registers: r3, r4, r5, r6, r7, r8, r9, r10 Use these registers as local vars: *** r3 = i, r4 = s *** Body of sumRange(A,a,b): s = 0; for (i = a, i < b; i++) s = s + A[i]; return(s); ---------------------------------------------------------------- */ sumRange: // When sumRange begins, we will have: r0 = A, r1 = a, r2 = b |
How to run the program:
|