En el desmontaje, veo la instrucción LI, pero no puedo encontrar dicha instrucción en el conjunto de instrucciones MIPS

2

Tengo un pequeño proyecto de prueba para la CPU PIC32MX, aquí hay una parte del desmontaje:

(Sé que este código no es atómico, solo estoy probando cosas. En realidad, soy bastante novato en MIPS)

 72:                        LATEbits.LATE0 ^= 0x1;  //-- toggle LATE0
9D0015BE      B309   LW V1, 36(PC)
9D0015C0      9B80   LW A0, 0(V1)
9D0015C2      6A01   LI V0, 1       <--- what is this?
9D0015C4      6D01   LI A1, 1       <--- and this one
9D0015C6      EC4C   AND A0, V0
9D0015C8      EC11   ZEB A0
9D0015CA      ECAE   XOR A0, A1
9D0015CC      EC4C   AND A0, V0
9D0015CE      9B40   LW V0, 0(V1)
9D0015D0      4DFD   ADDIU A1, -3
9D0015D2      EAAC   AND V0, A1
9D0015D4      EA8D   OR V0, A0
9D0015D6      17EF   B 0x9D0015B6
9D0015D8      6100   BTNEZ 0x9D0015DA
9D0015DC      6120   BTNEZ 0x9D00161E
9D0015E0      6120   BTNEZ 0x9D001622

¿El comando LI es un alias para algo? He revisado MIPS Architecture para programadores, volúmenes I-A y II-A, pero no veo ninguna aparición de LI .

Más, tengo este código de ensamblaje (es de TNKernel RTOS, no soy el autor de este código):

tn_enter_critical:

        la      $t0,    tn_sys_context
        lw      $t0,    0($t0)
        bne     $t0,    $zero,      1f          /* return if non-task context */
        nop

 ....................

Hay una instrucción la en este código y, en desorden, esta instrucción se muestra como LUI :

                                                  119:   tn_enter_critical:
                                                  120:           
9D000020  3C08A000   LUI T0, -24576               121:           la      $t0,    tn_sys_context
9D000028  8D080000   LW T0, 0(T0)                 122:           lw      $t0,    0($t0)
9D00002C  15000006   BNE T0, ZERO, 0x9D000048     123:           bne     $t0,    $zero,      1f          /* return if non-task context */
9D000030  00000000   NOP                          124:           nop
                                                  125:       
 ....................

Ahora, situación invertida: veo la instrucción LUI en los documentos, pero no puedo encontrar LA . Me hace creer que realmente debería haber alias, pero no puedo encontrarlos también.

Por favor, explícamelo.

    
pregunta Dmitry Frank

1 respuesta

3

Oh, realmente me perdí el uso de la opción de compilador -mips16 . Entonces, la instrucción LI es definitivamente de ahí (aquí hay MIPS16e docs )

En cuanto a ese la , parece ser una pseudo-instrucción del ensamblador, que se especifica en Referencia rápida de conjunto de instrucciones MIPS32 .

Gracias a los chicos de foro de microchip por ayuda.

    
respondido por el Dmitry Frank

Lea otras preguntas en las etiquetas