在MIPS汇编中从控制台存储矩阵

时间:2017-10-15 02:28:30

标签: matrix mips memory-alignment

我试图在MIPS中存储用户输入的两个3x3矩阵,这样我最终可以执行矩阵乘法。我可以存储MatrixA就好了,但是当我尝试存储MatrixB时,我得到了错误

[]

我知道存在内存对齐问题,但我该如何解决?

到目前为止,这是我的代码(我正在使用QTSpim来运行它):

Exception occurred at PC=0x00400060
Unaligned address in store: 0x10010009

1 个答案:

答案 0 :(得分:0)

粗略地说,您需要指定对齐方式:

.data
.align 4
matrixA: .space 9
.align 4
matrixB: .space 9

此外,如果您在两种情况下都使用尺寸8而不是9,那么在未指定.align的情况下就可以了。也许,您应该阅读一篇关于内存对齐的好文章,以便下次记住它。诀窍是您使用sw("存储字")指令来存储机器字,即4字节。因此,存储数据的内存地址必须是4的倍数。在您的情况下0x10010009(其中MatrixB开始)不是4的倍数。

虽然您没有要求进行代码审核,但我应该警告您,每个内容保留9 字节,而不是矩阵。 这只是意味着您的代码可能会溢出,因为在下面的代码中,每个元素地址都会添加4字节偏移量。