【发布时间】:2018-10-11 01:19:00
【问题描述】:
我对 MIP 非常陌生,正在尝试为分配创建一个 for 循环。
for (int i=1; i < 16; i+=2)
{
A[i] = A[i] + B[3*i]
}
使用当前代码,当我尝试加载 A[i] 的值时,它显示获取地址未在字边界上对齐。
这是我的代码:
main:
li $t0, 1 # Starting index of t0=i
lw $s7, aSize # Loop bound
la $s0, A # &A
la $s6, endA # &endA
la $s1, B # &B
loop:
#TODO: Write the loop code
addi $t3, $zero, 3 # $t3 = 3
mul $t4, $t0,$t3 # $t4 = i * 3
sll $t4, $t4, 2 # $t4 into a byte offset
add $s1, $s1, $t4 # $s1 = &B[i*3]
add $s0, $s0, $t0 # $s0 = &A[i]
lw $t1, 0($s0) # value of A[i]
lw $t2, 0($s1) # value of B[i * 3]
add $t2, $t1, $t2 # A[i] + B[i]
sw $t2, 0($s0) # A[i] = A[i] + B[i]
addi $s0, $s0, 2
addi $s1, $s1, 2
addi $t0, $t0, 1 #i++
bne $t0, $s7, loop
我对 MIP 很陌生,所以不知道发生了什么,甚至不知道该去哪里看。感谢您的帮助。
【问题讨论】: