MIPS - getting array values

2019-05-23 15:07发布

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.

标签: assembly mips
2条回答
Summer. ? 凉城
2楼-- · 2019-05-23 15:39

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.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-05-23 15:44

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)
查看更多
登录 后发表回答