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
Ir a la versión completa