Ok, so I have an array stored in memory and I want to essentially create a variable "i" and get the array value at index i. How do I do this in MIPS? Thanks in advance! Here is my code.
.data
array: .word 0:100
.text
li $t0, 5 #this is my representation of "i"
la $t2, array
lw $t1, i($t2) #this is where i am messed up.
You should add the base and index together, and remember to scale by 4 for the word size. Something like this:
li $t0, 5 # this is my representation of "i"
la $t2, array
sll $t1, $t0, 2 # scale by 4
addu $t1, $t1, $t2 # add offset and base together
lw $t1, ($t1) # fetch the data
You can only use the i($t2)
style if i
is an immediate constant that fits into 16 bits.
To add with the previous answer, if you array happens to be located in the first 64k of RAM, you can also do this :
lw $t1, array($t1)