MLA |
Multiplication addition |
| ARM |
Syntaxe
|
MLA{S}{cond} Rd, Rn, Rm, Ra
|
Paramètres
| Nom |
Description |
| S |
Ce paramètre optionnel permet d'indiquer le suffixe. Si ce paramètre est spécifié, les drapeaux de condition sont mise à jour dans le résultat de l'opérande |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rd |
Ce paramètre permet d'indiquer le registre de destination |
| Rn |
Ce paramètre permet d'indiquer le registre contenant la première valeur à multiplier. |
| Rm |
Ce paramètre permet d'indiquer le registre contenant la deuxième valeur à multiplier. |
| Ra |
Ce paramètre permet d'indiquer le registre contenant la valeur à additionner. |
Description
Cette instruction permet d'effectuer une multiplication avec l'addition.
Remarques
- L'instruction MLA combine multiplication et addition en une seule opération : MLA effectue l'opération suivante : Rd = (Rn * Rm) + Ra. Cela permet
d'économiser une instruction par rapport à un enchaînement classique de MUL puis ADD, ce qui est essentiel dans les boucles de traitement de signal ou de calcul vectoriel.
- Optimisation fréquente en traitement de signal numérique (DSP) : L'instruction est particulièrement utile pour les filtres FIR, les produits scalaires,
ou les convolutions où des produits successifs doivent être accumulés. Elle est souvent utilisée dans des boucles optimisées pour gagner en performance et réduire la
latence.
- Instruction à quatre opérandes, ce qui est rare en assembleur : Le format MLA Rd, Rn, Rm, Ra montre qu'elle prend deux opérandes pour la
multiplication (Rn, Rm), un pour l'accumulation (Ra), et un registre de destination (Rd). Cela permet une grande expressivité en une seule instruction.
- Le registre destination Rd peut être égal à Ra : On peut réutiliser Rd comme accumulateur : par exemple, MLA Rd, Rn, Rm, Rd permet de cumuler les produits
successifs dans un seul registre. C'est très courant pour les algorithmes d'agrégation ou les accumulations rapides.
- L'indicateur S permet de mettre à jour les drapeaux de condition : Avec le suffixe S, MLA peut mettre à jour les drapeaux dans le programme du registre
d'état (NZCV), utile pour tester le résultat sans ajouter une instruction CMP ou TST. Cela rend l'instruction polyvalente dans des structures de contrôle.
- Compatible avec les suffixes conditionnels cond : Comme la plupart des instructions ARM, MLA peut s'exécuter sous condition, comme MLAEQ, MLALT,...
Cela permet d'intégrer la logique conditionnelle directement dans les calculs, optimisant encore l'usage du pipeline.
- Les registres utilisés doivent être différents du PC : Il est interdit d'utiliser le registre PC (r15) pour Rd, Rn, Rm ou Ra dans MLA, car cela
compromettrait le contrôle du flot d'exécution. Il est aussi déconseillé d'utiliser SP à cause des effets secondaires potentiels sur la pile.
- L'instruction MLA est disponible en ARM, mais pas dans l'ensemble Thumb : Cela signifie qu'elle est réservée aux processeurs fonctionnant en mode ARM,
et ne peut pas être utilisée dans des environnements très contraints (par exemple dans les microcontrôleurs exécutant uniquement Thumb). Il faut prévoir des
alternatives dans ce cas.
Dernière mise à jour : Dimanche, le 12 novembre 2017