我试图在MIPS中存储用户输入的两个3x3矩阵,这样我最终可以执行矩阵乘法。我可以存储MatrixA就好了,但是当我尝试存储MatrixB时,我得到了错误
[]
我知道存在内存对齐问题,但我该如何解决?
到目前为止,这是我的代码(我正在使用QTSpim来运行它):
Exception occurred at PC=0x00400060
Unaligned address in store: 0x10010009
答案 0 :(得分:0)
粗略地说,您需要指定对齐方式:
.data
.align 4
matrixA: .space 9
.align 4
matrixB: .space 9
此外,如果您在两种情况下都使用尺寸8
而不是9
,那么在未指定.align
的情况下就可以了。也许,您应该阅读一篇关于内存对齐的好文章,以便下次记住它。诀窍是您使用sw
("存储字")指令来存储机器字,即4
字节。因此,存储数据的内存地址必须是4的倍数。在您的情况下0x10010009
(其中MatrixB
开始)不是4
的倍数。
虽然您没有要求进行代码审核,但我应该警告您,每个内容保留9
字节,而不是字矩阵。
这只是意味着您的代码可能会溢出,因为在下面的代码中,每个元素地址都会添加4
字节偏移量。