.globl sumarray sumarray: mv a2, a0 # compensate for abi design blunder: first argument (array base address) in return value register slli a1, a1, 2 # convert array size to byte count li a0, 0 # initialize return value to 0 add a1, a1, a2 # compute array end beq a1, a2, 1f # skip loop if empty 2: lw a3, (a2) # load array item from memory add a0, a0, a3 # add to total addi a2, a2, 4 # increment array pointer bne a1, a2, 2b # continue loop unless done 1: ret