Académique Documents
Professionnel Documents
Culture Documents
Exercices #4
lw $t0, 32($t1)
2) Quelle est la valeur dans $s2 après les instructions suivantes, si la valeur du registre $s0
est 0x55555555 et la valeur de $s1 est 0x12345678?
a)
sll $s2, $s0, 4
or $s2, $s2, $s1
$s2 = 0x57755778
b)
srl $s2, $s0, 3
andi $s2, $s2, 0xFFEF
$s2 = 0x0000AAAA
3) Donnez l’instruction MIPS équivalente pour l’instruction C suivante
f = 105 | a;
ori $t1, $t0, 105
a) f = a + b + L[4]
lw $t0, 16($s7)
add $s0, $s1, $s2
add $s0, $s0, $t0
b) f = a – K[L[4]]
lw $t0,16($s7)
sll $t1, $t0, 2
add $t2, $t1, $s6
lw $t3, 0($t2)
sub $s0, $s1, $t3
5) Montrez les effets des instructions suivantes sur la mémoire et les registres. Une partie
de la mémoire contient les données suivantes.
Le registre $t0 contient 0x10000000 et $s0 contient 0x01234567. On commence par les
valeurs données ci-dessous et on considère que l'architecture MIPS est en Big-Endian.
La mémoire
a) lw $s1, 0($t0)
$s1 = 0x12345678
b) lw $s2, 4($t0)
$s2 = 0x9ABCDEF0
c) lb $s3, 0($t0)
$s3 = 0x00000012
d) lb $s4, 4($t0)
$s4 = 0xFFFFFF9A
e) sw $s0, 0($t0)
f) sb $s0, 4($t0)
opcode
addi 0x08
lw 0x23
beq 0x04
j 0x02
lw $t1, 8($t2)
j Begin
Adresse de destination = les 4 bits les plus significatifs du PC : ((jump target) *4)
Jump target = les premiers 28 bits de l’adresse de destination /4
= B00000C /4 = 2C00003
= 1011 0000 0000 0000 0000 0000 1100 /4 srl 2
= 10 1100 0000 0000 0000 0000 0011
10) Ci-dessous une version récursive d’une fonction qui compte le nombre de bits mis à 1
dans un entier. Traduire cette fonction en MIPS.
int Bit1_counter(unsigned a) {
int bit_v;
if (a == 0)
return 0;
bit_v = a & 0x1;