title: MIPS "spim: (parser) syntax error"
body: <p>I'm building a program on MIPS for checking if the column of a matrix is ordered in a increasing way, in a decreasing way, if all it's numbers are equal or if it's disordered. Here's the code:</p>
  
  <pre><code># #include &lt;iostream&gt;
  # int m; int n;
  # int M[m][n];
  # 
  # int i=0; bool ordenada=true; int direccion=0; int j=0;
  # 
  # cout&lt;&lt;"\n¿Qué columna desea comprobar? ";
  # cin&gt;&gt;j;
  #
  # do{
  #   if (m[i][j] &gt; m[i+1][j])
  #       if (direccion != 0) ordenada = false;
  #   else if (m[i][j] &lt; m[i+1][j]){
  #       if ((direccion != 1)&amp;&amp;(i&gt;0)) ordenada = false;
  #       direccion = 1;
  #   }
  #   else{
  #       if ((direccion != 2)&amp;&amp;(i&gt;0)) ordenada = false;
  #       direccion = 2;
  #   }
  #   i++;
  # }while ((i&lt;m)&amp;&amp;ordenada); 
  # cout&lt;&lt;"\nLa columna "&lt;&lt;j;
  # if (ordenada){
  #   cout&lt;&lt;" está ordenada";
  #   if (direccion == 0) cout&lt;&lt;" de manera decreciente."&lt;&lt;endl;
  #   else if (direccion == 1) cout&lt;&lt;" de manera creciente."&lt;&lt;endl;
  #   else cout&lt;&lt;" de manera que todas las variables son iguales."&lt;&lt;endl;
  # }
  # else cout&lt;&lt;" está desordenada."&lt;&lt;endl;
  
  .globl main
              .data
  m: .word 4      # numero de filas de m1
  n: .word 5      # numero de columnas de  m1
  size: .word 4   # tamano de cada elemento
  m1:         .word   1,2,3,4,5
              .word   1,2,3,4,5
                  .word   1,2,3,4,5
                  .word   1,2,3,2,5
  
                         # la primera fila es la fila 0
                         # la primera columna es la columna 0
  pregunta:       .asciiz "\n¿Qué columna desea comprobar? Tenga en cuenta que las columnas se empiezan a contar desde 0: "
  principio:      .asciiz "\nLa columna "
  ordenada:       .asciiz " está ORDENADA"
  creciente:      .asciiz " de manera creciente."
  decreciente:    .asciiz " de manera decreciente."
  igualada:       .asciiz " de manera que todas las variables son iguales."
  desordenada:    .asciiz " está DESORDENADA"
  
  
              .text
  main:
      lw $s6,m    # numero de filas de m1
      lw $s7,n    # numero de columnas de  m1
      li $v0,4
      la $a0,pregunta
      syscall
      li $v0,5
      syscall
      move $s0,$v0 #$s0 = columna objeto de estudio
      li $t0,4
      mult $s7,$t0
      mflo $s4 #$s4 = número de bytes que debe saltar cada vez para recorrer una fila
  
      li $s1,1 #$s1 = variable ordenada
      li $s2,0 #$s2 = i (num. fila)
      la $s3,m1 #$s3 = puntero a la matriz
      move $s5,$zero #$s5 = direccion
      li $t0,4
      mult $s0,$t0
      mflo $t0
      add $s3, $s3, $t0 #posicionamos el vector en el primer elemento de la columna objeto de estudio
      add $s8, $s4, $s3
  
  dowhile:
  
  
  
          bgt 0($s8),0($s3),elseif  #THIS IS THE LINE QTSPIM COMPLAINS ABOUT
  
  
  
          ifa:    beq $s5,$zero,elseif
              move $s1,$zero
              j endif
      elseif:
          bge 0($s3),0($s8),else
          ifb:    beq $s5,1,endifb
              ble $s2,$zero,endifb
              move $s1,$zero
          endifb: li $s5,1
              j endif
      else:   
          ifc:    beq $s5,2,endifc
              ble $s2,$zero,endifc
              move $s1,$zero
          endifc: li $s5,2
      endif:
      addi $s2, 1
      add $s3,$s3,$s4
      add $s8,$s8,$s4
      bne $s1,$zero,endw
      bgt $s2, $s6, dowhile
  endw:   
      li $v0,4
      la $a0,principio
      syscall
      li $v0,1
      move $a0,$s0
      syscall
  ifd:
      beq $s1,$zero,endifd
      li $v0,4
      la $a0,ordenada
      syscall
      cre:    bne $s5,$zero,dec
          la $a0,creciente
          syscall
          j exit
      dec:    li $t0,1
          bne $s5,$t0,igu
          la $a0,decreciente
          syscall
          j exit
      igu:    la $a0,igualada
          syscall
          j exit
  endifd:
      li $v0,4
      la $a0,desordenada
      syscall
  exit:
      li $v0,10
      syscall
  </code></pre>
  
  <p>The problem is that when I try to load it on QtSpim the following error shows up:</p>
  
  <pre><code>spim: (parser) syntax error on line 83 of file
  C:/Users/Tutoru/Desktop/Universidad/Principios de Computadores/practica4.s
      bgt 0($s8),0($s3),elseif
  </code></pre>
  
  <p>Any ideas?</p>