在MIPS中声明特定内存地址的数组

时间:2016-02-26 12:19:08

标签: arrays mips qtspim

如何在MIPS程序中的内存位置100(十进制)声明一个数组?

1 个答案:

答案 0 :(得分:2)

spim模拟器支持可选的data指令参数,详细内容为here

  

.data <addr>

     

以下数据项应存储在数据段中。如果存在可选参数addr,则从地址addr开始存储项目。

因此,使用spim,您可以将任何数据存储在确切的地址,只要它在用户数据段的范围内即可。在spim中,保留范围为0x10000000 - 0x10040000

因此,例如,如果您想在地址0x10000030存储数组,您可以写:

.data 0x10000030
list: .word 3, 0, 1, 2, 6, -2, 4, 9, 3, 7

但是,地址100不在spim模拟器用户数据段的可接受范围内(或者可能在任何其他情况下,因为它将成为第一页内存的一部分)。

我在.data 100中尝试了一个spim指令,只是为了看看当我尝试从中加载时它会做什么,答案是Memory address out of bounds错误。