.text
.align 2

.global fact

@ int fact(int n)
@ 
@ -- r0 -- int n
fact:

	@ Prolog funkcije
	stmfd sp!, {fp,lr}
	mov fp, sp

	@ Proizvod 1*2*...*n akumuliramo u r3. Inicijalna vrednost 
	@ proizvoda je 1.
	mov r3, #1

loop:
	@ Dokle god r0 nije 0...
	cmp r0, #0
	beq end_loop

	@ mnozimo proizvod sa r0...
	mov r2, r3
	mul r3, r0, r2

	@ umanjujemo r0...
	sub r0, r0, #1

	@ i idemo na sledecu iteraciju.
	b loop

end_loop:

	@ Smestamo proizvod u r0
	mov r0, r3

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