首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个MIPS/QtSPIM循环代码有什么问题?

这个MIPS/QtSPIM循环代码有什么问题?
EN

Stack Overflow用户
提问于 2011-10-19 12:06:45
回答 1查看 13.7K关注 0票数 2

这些程序运行时有预期的输出,但有下面的错误

代码语言:javascript
复制
.data

.text
.globl main
main: 
  addi $t0, $t0, 0    # i = 0
  addi $t2, $0, 10    # n = 10
  j WhileCond         # goto WhileCond

  WhileLoop:
    li $v0, 1         # print_int
    move $a0, $t0     # $a0 = i (print i)
    addi $t0, $t0, 1
    syscall

  WhileCond:
    blt $t0, $t2, WhileLoop # if i < 10 goto WhileLoop

  j $ra

用户文本段

代码语言:javascript
复制
[00400000] 21080000  addi $8, $8, 0           ; 10: addi $t0, $t0, 0 # i = 0 
[00400004] 200a000a  addi $10, $0, 10         ; 11: addi $t2, $0, 10 # n = 10 
[00400008] 08100007  j 0x0040001c [WhileCond] ; 12: j WhileCond # goto WhileCond 
[0040000c] 34020001  ori $2, $0, 1            ; 15: li $v0, 1 # print_int 
[00400010] 00082021  addu $4, $0, $8          ; 16: move $a0, $t0 # $a0 = i (print i) 
[00400014] 21080001  addi $8, $8, 1           ; 17: addi $t0, $t0, 1 
[00400018] 0000000c  syscall                  ; 18: syscall 
[0040001c] 010a082a  slt $1, $8, $10          ; 21: blt $t0, $t2, WhileLoop # if i 
[00400020] 1420fffb  bne $1, $0, -20 [WhileLoop-0x00400020] 
[00400024] 03e00008  jr $31                   ; 23: j $ra 

误差

代码语言:javascript
复制
Exception occurred at PC=0x00000000
  Bad address in text read: 0x00000000
Instruction references undefined symbol at 0x800001dc
  [0x800001dc] 0x143a0000  bne $1, $26, 0 [ok_pc-0x800001d8]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-19 13:33:22

代码语言:javascript
复制
addi $t0, $t0, 0    # i = 0

不会将$t0设置为0,而是保持不变。(move $t0, $zero)或(addi $t0, $0, 0)都能工作。

另外,您确定$t0$t2保存在syscall中吗?

最后,您发布的错误似乎不会出现在代码中。您是否有寄存器的堆栈跟踪/转储,或者其他可能有助于跟踪它的东西?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7821025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档