## array on MIPS Assembly

By : Mooh
Source: Stackoverflow.com
Question!

i'm trying to write a mips function wich return the position of the maximum value but i'm gettin this exeption (Error in /home/ams/Bureau/part2a line 21: Runtime exception at 0x00400028: address out of range 0x00000000)

``````# MIPS assembly code

# \$s0 = array base address, \$s1 = i
# initialization code

main: lui  \$s0, 0x23B8           # \$s0 = 0x23B80000
ori  \$s0, \$s0, 0xF000   # \$s0 = 0x23B8F000
addi \$s1, \$0, 0            # i = 0
addi \$t2, \$0, 1000      # \$t2 = 1000
addi \$t3, \$0, 0            # \$t3 =   max
addi \$s4, \$0 , 0           #  \$s4 = max indice

max:
loop: slt  \$t0, \$s1, \$t2      # i < 1000?
beq  \$t0, \$0, done      # if not then done
sll \$t0, \$s1, 2              # \$t0 = i * 4

lw   \$t1, 0(\$t0)        # \$t1 = array[i] ERROR HERE
slt \$t5, \$t3, \$t1      # max < array[i]
beq \$t5, \$0,else   # if not then ense
addi \$t3,\$t1, 0    # \$t3 =: array[i]
addi \$s4, \$s1,0    # \$s4 =: i
#end

else:
addi \$s1, \$s1, 1        # i = i + 1
j    loop               # repeat

done:
addi  \$v0, \$s4, 0        # retval = max
jr    \$ra                # Return
``````