MIPS - getting array values

2019-05-23 15:18发布

问题:

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.

回答1:

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.



回答2:

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)


标签: assembly mips