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

Pra*_*nav 2 arrays mips qtspim

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

Kon*_*ach 5

模拟器spim支持可选data指令参数,详细信息请参见此处

.data <addr>

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

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

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

.data 0x10000030
list: .word 3, 0, 1, 2, 6, -2, 4, 9, 3, 7
Run Code Online (Sandbox Code Playgroud)

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

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