Vous êtes sur la page 1sur 12

Université KASDI MERBAH – Ouargla

Chapitre 3

Les macro-instructions en MIPS

1
Enseignante: Chafika Benkherourou
Introduction
Pour économiser beaucoup de temps et d'efforts, les
programmeurs utilisent les macro-instructions, en
particulier lorsqu'ils ont à traiter une séquence de
commandes répétée plusieurs fois dans le corps du
programme.
Définitions
• Une macro-instruction est une instruction unique qui
est définie par l'utilisateur pour représenter une
séquence de plusieurs instructions.
• Elle est utilisée pour simplifier la programmation en
permettant aux programmeurs de définir leur propre
langage d'assemblage.
• On remplace du code fréquemment utilisé par une
macro.
• Ceci rend le code source plus rapide à écrire et plus
compact.
Syntaxe d’une macro
• En MIPS, une macro-instruction est déclarée avec la directive
".macro" dans la section du code du programme où elle sera
utilisée.
• La syntaxe générale pour déclarer une macro-instruction est la suivante:
.macro <nom> [paramètre1, paramètre2, ...]
<macro body>
.end_macro
Exemple:
.macro done
Li $v0,10
Syscall
.end_macro
Caractéristiques d’une macro
• La définition d'une macro doit apparaître avant son
utilisation dans le programme
• Toutes les définitions de macro sont locales dans
chaque fichier et ne peuvent pas être globales.
• Une macro définie avec le même nom qu'une autre
macro définie avant elle sera ignorée.
• Les macros font partie de l'assembleur, pas de l'ISA.
Ainsi, la syntaxe peut être différente avec d'autres
assembleurs.
Caractéristiques d’une macro
.macro calcul_moyenne $t1, $t2, $t3, $t4
add $t5, $t1, $t2
add $t5, $t5, $t3
add $t5, $t5, $t4
div $t5, $t5, 4
.end_macro
Dans cet exemple, la macro-instruction "calcul_moyenne" prend
quatre registres en entrée. Elle effectue ensuite une séquence
d'instructions pour calculer la moyenne des valeurs stockées
dans ces registres.
Caractéristiques d’une macro
La séquence d'instructions inclut les opérations d'addition ($t5 =
$t1 + $t2, $t5 = $t5 + $t3, $t5 = $t5 + $t4) pour additionner les
valeurs stockées dans les registres, suivie d'une division ($t5 =
$t5 / 4) pour diviser la somme par 4 et obtenir la moyenne.
En utilisant cette macro-instruction dans le code
source MIPS, les programmeurs peuvent
simplement appeler la macro-instruction
"calcul_moyenne" avec les quatre registres en
entrée, plutôt que d'écrire la séquence complète
d'instructions chaque fois qu'ils ont besoin de
calculer la moyenne.
Caractéristiques d’une macro
Voici un exemple d'utilisation de cette macro-
instruction :

calcul_moyenne $t0, $t1, $t2, $t3


move $t6, $t5
Macro-instructions avec paramètres
• Dans certains cas, on utilise les macro-instructions
avec des paramètres:
• L’exemple suivant présente une macro-instruction
pour l'impression d'une chaîne de caractères :
.macro print_string str
li $v0, 4
la $a0, \str
syscall
.end_macro
Macro-instructions avec paramètres
•Dans cet exemple, la macro-instruction
"print_string" prend une chaîne de caractères
(\str) en entrée.

•Dans le code source MIPS, les programmeurs


peuvent simplement appeler la macro-
instruction "print_string" avec la chaîne de
caractères en entrée.
• Voici un exemple d'utilisation de cette macro-
instruction :
pour imprimer la chaîne "Hello World!"

print_string "Hello World!


Macro-instructions Vs Procédures
• Une macro-instruction est appelée dans le
code source. Chaque fois qu'elles est appelée,
son contenu est inséré directement dans le code
source à l'endroit de l'appel.

• Par contre, une procédure est une séquence


d'instructions appelée depuis le programme
principal par son nom, et le flux d'exécution
passe à la procédure, puis revient à l'appelant
une fois que la procédure est terminée.
Macro-instructions et compilateurs
• Les macro-instructions ne sont pas supportées par tous
les compilateurs MIPS. La prise en charge des macro-
instructions peut varier en fonction du compilateur utilisé.

•Il est important donc de consulter la documentation du


compilateur MIPS spécifique pour déterminer s'il prend en
charge les macro-instructions et comment les utiliser.

Vous aimerez peut-être aussi