Reputation: 92
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.
Upvotes: 2
Views: 7030
Reputation: 634
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)
Upvotes: 1
Reputation: 58822
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.
Upvotes: 3