SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: m0skit0 en Miércoles 6 de Mayo de 2009, 17:35

Título: [SOLUCIONADO] Ensamblador MIPS
Publicado por: m0skit0 en Miércoles 6 de Mayo de 2009, 17:35
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
  1.     00000000:    3c040440   lui $a0,0x440      
  2.     00000004:    3c05047a   lui $a1,0x47a      
  3.     00000008:    ac800000   sw  $zero,0($a0)       
  4.     0000000c:    24840004   addiu   $a0,$a0,4      
  5.     00000010:    1485fffd   bne $a0,$a1,0x8    
  6.     00000014:    00000000   nop            
  7.     00000018:    04110001   bgezal  $zero,0x20     
  8.     0000001c:    00000000   nop            
  9.     00000020:    03e08021   addu    $s0,$ra,$zero      
  10.     00000024:    26040508   addiu   $a0,$s0,1288=0x0508 
  11.     00000028:    3c030881   lui $v1,0x881      
  12.     0000002c:    3c1209ea   lui $s2,0x9ea      
  13.     00000030:    36520c46   ori $s2,$s2,0xc46      
  14.     00000034:    3c130015   lui $s3,0x15       
  15.     00000038:    3673f3ac   ori $s3,$s3,0xf3ac     
  16.     0000003c:    00734021   addu    $t0,$v1,$s3    
  17.     00000040:    00804821   addu    $t1,$a0,$zero
  18.  
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?
Título: Re: Ensamblador MIPS
Publicado por: Eternal Idol en Miércoles 6 de Mayo de 2009, 17:50
Una logica le veo 0x20+0x18 que salte a 0x38  :P
Título: Re: Ensamblador MIPS
Publicado por: m0skit0 en Miércoles 6 de Mayo de 2009, 17:56
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.
Título: Re: Ensamblador MIPS
Publicado por: m0skit0 en Jueves 7 de Mayo de 2009, 12:31
Vale, resulta que 0x20 no es un desplazamiento + PC, sino directamente el PC :P