Programación General > ASM (Ensamblador)

 [SOLUCIONADO] Ensamblador MIPS

(1/1)

m0skit0:
No sé si alguien estará muy puesto en esto, pero yo lo pongo (si éste no es el lugar adecuado, mis disculpas anticipadas):


--- Código: ASM ---    00000000:    3c040440   lui $a0,0x440           00000004:    3c05047a   lui $a1,0x47a           00000008:    ac800000   sw  $zero,0($a0)            0000000c:    24840004   addiu   $a0,$a0,4           00000010:    1485fffd   bne $a0,$a1,0x8         00000014:    00000000   nop                 00000018:    04110001   bgezal  $zero,0x20          0000001c:    00000000   nop                 00000020:    03e08021   addu    $s0,$ra,$zero           00000024:    26040508   addiu   $a0,$s0,1288=0x0508     00000028:    3c030881   lui $v1,0x881           0000002c:    3c1209ea   lui $s2,0x9ea           00000030:    36520c46   ori $s2,$s2,0xc46           00000034:    3c130015   lui $s3,0x15            00000038:    3673f3ac   ori $s3,$s3,0xf3ac          0000003c:    00734021   addu    $t0,$v1,$s3         00000040:    00804821   addu    $t1,$a0,$zero La instrucción bgezal $zero,0x20 (0x18) me parece que no tiene ningún sentido, ya que salta a 0x38... ¿Alguien le ve alguna lógica?

Eternal Idol:
Una logica le veo 0x20+0x18 que salte a 0x38  :P

m0skit0:
Ok Eternal Idol, gracias por la ayuda...  :lol:

Ahora en serio, no tiene sentido modificar la media palabra (16 bits) baja del registro S3 y después sumárselo a V1 cuando ni siquiera sabemos qué hay en la media palabra alta. Sí tendría lógica si se ejecutara lui $s3,0x15 (0x34) que carga la media palabra alta de S3. De hecho, LUI y ORI siempre van juntas para cargar un registro con un valor inmediato.

m0skit0:
Vale, resulta que 0x20 no es un desplazamiento + PC, sino directamente el PC :P

Navegación

[0] Índice de Mensajes

Ir a la versión completa