Vous êtes sur la page 1sur 1

Exo 


Donner les valeurs des registres  et des cases mémoire  0x0A00  0x04 
 (0x0A08 .. 0x0A0b) à la fin de l’exécution .    0x05 
  
  0x03 
 
andi    $8, $0, 0     0x14 
$3 
andi    $3, $0, 0     0x0A04  0x12 

Lbu    $6, 0x0A00($3)     $4      0x01 

 blez  $6, 5       $6    0x20 


  0x0C 
 addi  $3, $3, 1 
$8  0x0A08   
lbu   $4,0x0A00($3) 
   
Add   $8, $8, $4 
   
 addi   $6, $6, ‐1     
0x0A0b   
j  ‐6       
 sh    $8, 0x0A08($0) 
 

Solution:  
 
andi    $8, $0, 0       $8 = 0x00000000 
andi    $3, $0, 0       $3 = 0x00000000 
Lbu    $6, 0x0A00($3)      $6 = 0x00000004  (charger un octet non signé) 
 blez  $6, 5        $6 <= 0 ?  si oui Î sautés  5  instructions (la dernière)  
 addi  $3, $3, 1        $3 = $3 +1 = 0x00000001 
lbu   $4,0x0A00($3)      $4 = 0x00000005     (Adresse = 1 + 0x0A00= 0x0A01) 
Add   $8, $8, $4       $8 = $8 + $4 = 0 + 5 = 5  (pour la première itération)  
 addi   $6, $6, ‐1      $6 = $6 + (‐1) = 4 – 1 = 3  
j  ‐6  sauté vers l’instruction « blez … ») donc une boucle à répéter 
jusqu’à : $6 = 0   
 sh    $8, 0x0A08($0)  stocker 2 octets poids faible du $8 dans la mémoire pointé 
par l’adresse  0x0A08.  ($8= 0x05+0x03+0x14+0x12= 0x002E) 

0X0A08  00 

0x0A09 2E 
 

Vous aimerez peut-être aussi