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会帮你做到这一点。