Assembly 用于MIPS程序集中的循环

Assembly 用于MIPS程序集中的循环,assembly,for-loop,branch,mips,Assembly,For Loop,Branch,Mips,我在让我的处理器正确模拟时遇到了问题,我想我已经把它缩小到了我要给它的程序 1. li $R1, 0 2. li $R2, 0x100 3. li $R6, 1 4. li $R8, 0 5. li $R9, 20 6. lw $R3, 0($R1) 7. lw $R4, 4($R1) 8. add $R5, $R3, $R4 9. srlv $R5, $R5, $R6 10. sw $R5, 0($R2) 11. add

我在让我的处理器正确模拟时遇到了问题,我想我已经把它缩小到了我要给它的程序

1.  li    $R1, 0
2.  li    $R2, 0x100
3.  li    $R6, 1
4.  li    $R8, 0
5.  li    $R9, 20

6.  lw    $R3, 0($R1)
7.  lw    $R4, 4($R1)
8.  add  $R5, $R3, $R4
9.  srlv    $R5, $R5, $R6
10. sw   $R5, 0($R2)
11. addi    $R1, $R1, 4
12. addi    $R2, $R2, 4
13. addi    $R8, $R8, 1
14. slt     $R7, $R8, $R9
15. bne  $R7, $zero,  -9

它应该在底部循环20次,然后退出。我特别不确定分支指令,但我找不到它有任何错误,所以://

所以,从R8开始,将其设置为0,将R9设置为20。然后在步骤13中,将一个添加到R8中,然后如果R8小于R9(在前19次迭代中会小于R9),则设置R7。如果设置了R7,则进行分支。我觉得这个循环很好


我不记得bnq是做什么的。。。bnq在这里不工作吗?

我也不知道bnq做什么。它可能是beq和bne的组合,哈哈。现在编辑。那么-9在bne语句中起作用了吗?是的,我认为它应该。。。我已经有一段时间没有搞砸mips了,但我想你必须乘以4才能得到偏移量,但我想CPU会帮你做到这一点。