【发布时间】:2017-10-15 02:28:30
【问题描述】:
我正在尝试将用户输入的两个 3x3 矩阵存储在 MIPS 中,以便最终我可以执行矩阵乘法。我可以很好地存储 MatrixA,但是当我尝试存储 MatrixB 时出现错误
Exception occurred at PC=0x00400060
Unaligned address in store: 0x10010009
我知道存在内存对齐问题,但我该如何解决?
这是我目前的代码(我正在使用 QTSimp 运行它):
.data
matrixA: .space 9
matrixB: .space 9
.text
main:
la $a1,matrixA #load a pointer to array into $a1
la $a2,matrixB #load pointer to array into $a2
addi $t1,$t1,9 #size of the array(matrix in array form)
addi $t3,$t3,9
matA_loop:
addi $t1,$t1,-1 #subtract 1 from $t1, save to $t1
li $v0,5 #load 5 into $v0 (read integer)
syscall #input from user
sw $v0,0($a1) #store input int to array
addi $a1,$a1,4 #add 4 to $a1, save to $a1
bnez $t1,matA_loop #if $t1 isn't zero,goto loop
la $a1,matrixA #load array pointer into $a1
matB_loop:
addi $t3,$t3,-1 #subtract 1 from $t3, save to $t3
li $v0,5 #load 5 into $v0 (read integer)
syscall #prompt for input
sw $v0,0($a2) #store input int to array
addi $a2,$a2,4 #add 4 to $a2, save to $a2
bnez $t3,matB_loop #if $t1 isn't zero,goto loop
la $a2,matrixB #load array pointer into $a1
li $v0, 10
syscall
【问题讨论】:
标签: matrix mips memory-alignment