Licence Sciences et technologies
Informatique/Informatique-Physique
Architecture des ordinateurs
TD num´ero 5 : Assembleur MIPS
Universit´e de Provence
Ann´ee 2007-2008
On rappelle les quelques instructions de l’assembleur MIPS suivantes :
Instruction Nom Signification
add $1, $2, $3 addition $1 ←$2 + $3
sub $1, $2, $3 soustraction $1 ←$2 - $3
addi $1, $2, val addition imm´ediate $1 ←$2 + val
mul $1, $2, $3 multiplication $1 ←$2 * $3
div $1, $2, $3 quotient $1 ←$2 / $3
rem $1, $2, $3 reste $1 ←$2 % $3
srl $1, $2, sa d´ecalage `a droite de sa bits $1 ←$2/2sa
xor $1, $2, $3 ou exclusif $1 ←$2 xor $3
ori $1, $2, val ou imm´ediat $1 ←$2 or val
li $1, val chargement imm´ediat $1 ←val
move $1, $2 copie de registres $1 ←$2
bne $1, $2, label branchement si 6= si ($1! = $2) alors aller `a l’etiquette label
beq $1, $2, label branchement si = si ($1 == $2) alors aller `a l’etiquette label
bgt $1, $2, label branchement si >si ($1 >$2) alors aller `a l’etiquette label
ble $1, $2, label branchement si ≤si ($1 <= $2) alors aller `a l’etiquette label
j label saut aller `a l’etiquette label
jal label appel de proc´edure aller `a l’etiquette label et $ra ←P C + 4
jr $ra retour de proc´edure P C ←$ra
Exercice 1 Consid´erons le programme assembleur suivant :
lw $t0, 0($a0)
lw $t1, 0($a1)
bne $t0, $t1, toto
add $v0, $t0, $zero
j titi
toto: add $v0, $t1, $zero
titi:
Que fait le programme suivant ? Ecrire la fonction r´ealis´ee en C.
Exercice 2 En supposant que $a0=0x1234 et que $a1=0x3 quel est la valeur de $t0 apr`es
l’ex´ecutuon du programme suivant :
add $t0, $0, $0
toto: add $t0, $t0, $a0
addi $a1, $a1, -1
bne $a1 , $zero, toto
srl $t0, $t0, 4
Exercice 3 Ecrire un programme qui calcule la factorielle d’un nombre n. On suppose que nest
initialement dans le registre $a0 et qu’`a l’issue du programme, le r´esultat se trouve dans $a0.