无法理解这个 lw 在做什么
Can't understand what this lw is doing
我必须找到那个 C 指令的 mips 代码:
B[8] = A[i-j]
变量i、j在寄存器$s3、$s4中,而基地址
A 和 B 是 $s6,$s7
当我阅读解决方案时,我不明白为什么在 lw 指令(第三行代码)中我必须指定偏移量。
我不是在第二行计算的吗?
感谢您,对于任何英文错误,我们深表歉意。
''' Mips 代码
sub $t0,$s3,$s4
add $t0,$s6,$t0
lw $t1,16($t0)
sw $t1,32($s7)
'''
你在这里计算的是 byte 偏移量:
sub $t0,$s3,$s4
如果我们假设您的数组中的元素是单词(4 个字节)- 因为您使用的是 lw
和 sw
- 那么您需要相应地缩放该偏移量:
sll $t0, $t0, 2 # $t0 *= 4
我必须找到那个 C 指令的 mips 代码: B[8] = A[i-j] 变量i、j在寄存器$s3、$s4中,而基地址 A 和 B 是 $s6,$s7 当我阅读解决方案时,我不明白为什么在 lw 指令(第三行代码)中我必须指定偏移量。 我不是在第二行计算的吗?
感谢您,对于任何英文错误,我们深表歉意。
''' Mips 代码
sub $t0,$s3,$s4
add $t0,$s6,$t0
lw $t1,16($t0)
sw $t1,32($s7)
'''
你在这里计算的是 byte 偏移量:
sub $t0,$s3,$s4
如果我们假设您的数组中的元素是单词(4 个字节)- 因为您使用的是 lw
和 sw
- 那么您需要相应地缩放该偏移量:
sll $t0, $t0, 2 # $t0 *= 4