0

我已经使用定义了一个字节数组

.data
letters  : .byte 0:26   

我有一些问题:1)阵列中的第一个单元格是否可供使用,还是用于其他目的?2) 如何加载数组的 6 个(例如)单元格?

我考虑过使用:

la $t0, letters  # load the array address to $t0
addi $t0, $t0 , 6  # update $t0 in order to get the 6th cell
lb $t1, $t0        # load byte to $t1

这种方法有效还是我应该以其他方式进行?

提前致谢

4

2 回答 2

1

1) 是的,它是可用的 2) 就像在 C 中一样,第一个单元格的偏移量为零。所以这样你实际上会指向第七个单元格。

于 2013-01-06T12:38:25.400 回答
0

您的代码几乎是有效的,您只是缺少一对用于间接寻址的括号,如下所示:

lb $t1, ($t0) # load byte to $t1

此外,地址可以包含一个常量偏移量,因此在您的情况下,您不必单独添加它:

lb $t1, 6($t0) # load byte to $t1

请注意,这只适用于常量。如果您想按另一个寄存器索引,则必须像以前一样进行添加。

弗拉德已经回答了另一部分。

于 2013-01-06T14:49:33.173 回答