.text
.align 2


.global sum

@ Funkcija:
@ int sum(int a[], int n);
@
@ izracunava sumu elemenata celobrojnog niza. Argumenti funkcije su:
@
@ -- r0 -- int * a -- adresa pocetka niza
@ -- r1 -- int n -- duzina niza
@
sum:
	@ Prolog funkcije
	stmfd sp!, {fp, lr}
	mov fp, sp

	@ Komentari u nastavku instrukcija priblizno opisuju njihove
	@ C-ovske ekvivalente.

	mov r3, #0                       @  S = 0;

loop:
	cmp r1, #0                       @  while(n > 0) {
	beq end_loop             
	ldr r2, [r0], #4                 @  S = S + *a++;
	add r3, r3, r2
	sub r1, r1, #1                   @  n--;
	b loop                           @  }


end_loop:
	mov r0, r3                       @  return S;

done:
	@ Epilog funkcije
	mov sp, fp
	ldmfd sp!, {fp, pc}

