指令引用MIPS / QTSPIM中的未定义错误

时间:2014-11-08 00:55:06

标签: assembly mips qtspim

我正在试图计算数组中的所有字符,并且出现以下错误:

指令引用0x00400014处的未定义符号   [0x00400014] 0x0c000000 jal 0x00000000 [main]; 188:jal main

.data

 string:    .asciiz "nice work..."



  .text
 .globl main

  lw $a0,string
  jal strlength
  li $v0, 10
  syscall

   # METHOD STRLENGTH
   # Receives as first parameter the direction of the first character of string.
   # Returns the length of the string.

   strlength: li $t0, 0  #numero de caracteres
   lb $t4,string($t0)       #recorremos la cadena
   beqz $t4, fin            #si el caracter es igual a cero vamos a fin    
   addi $t0,$t0, 1      
   j strlength

   move $a0,$t0               #imprimimos numero de caracteres 
   li $v0, 1
   syscall 
   jr $ra 

3 个答案:

答案 0 :(得分:7)

.globl main没有定义符号,只是将其标记为全局符号。您需要在适当的位置添加main:标签,在您的情况下可能是第一条指令。

答案 1 :(得分:4)

您应该更改模拟器设置。模拟器 - >设置 - > MIPS - >异常处理程序:取消选中此选项"加载异常处理程序"通过这种方式,您可以禁用本机MIPS代码并使用自己的代码。

答案 2 :(得分:0)

我是MIPS的完整入门者,但是当我使用QtSPIM时,此错误弹出很多。原来是因为我每次都单击“重新初始化模拟器”,并且导致了错误。因此,每当要重新运行程序时,只要清除寄存器,就不要重新初始化模拟器。