如何使用 MIPS 阵列在特定位置存储数据?
How do I use a MIPS array to store data at specific places?
我想建立一个数组,然后将整数存储在数组的特定元素中。例如,我想在数组的第 21 个元素中存储数字 7,在第 27 个元素中存储数字 9。我一直在尝试这样做:
.data
array: .space 100
当我设置元素时:
la $t0, array
addi $v1, [=11=], 7
sw $v1, 84($t0)
我使用了 4 倍的偏移量,因为正在存储一个单词,但我不确定错误(异常 4 和 5)是否是因为我试图在字节数组中存储一个单词。
你的代码没问题。我猜你的问题是 array
没有正确对齐。
内存总是可以被认为是一个字节数组,但是 MIPS 不允许 loading/saving 一个 32 位字在一个未对齐的地址(这里未对齐意味着地址不是 4 的倍数)。
在 array
标签之前使用指令 .align 2
。
我想建立一个数组,然后将整数存储在数组的特定元素中。例如,我想在数组的第 21 个元素中存储数字 7,在第 27 个元素中存储数字 9。我一直在尝试这样做:
.data
array: .space 100
当我设置元素时:
la $t0, array
addi $v1, [=11=], 7
sw $v1, 84($t0)
我使用了 4 倍的偏移量,因为正在存储一个单词,但我不确定错误(异常 4 和 5)是否是因为我试图在字节数组中存储一个单词。
你的代码没问题。我猜你的问题是 array
没有正确对齐。
内存总是可以被认为是一个字节数组,但是 MIPS 不允许 loading/saving 一个 32 位字在一个未对齐的地址(这里未对齐意味着地址不是 4 的倍数)。
在 array
标签之前使用指令 .align 2
。