MLS |
Multiplication soustraction |
| ARM |
Syntaxe
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 à soustraire. |
Description
Cette instruction permet d'effectuer une multiplication avec la soustraction.
Remarques
- L'instruction MLS permet de faire une soustraction d'un produit : L'opération effectuée est : Rd = Ra - (Rn * Rm). Cela permet de combiner deux
opérations arithmétiques en une seule, ce qui optimise à la fois les performances et l'utilisation du pipeline du processeur.
- Excellente instruction pour les algorithmes de rétropropagation ou de correction : Dans certains algorithmes d'ajustement, comme les filtres adaptatifs
ou les réseaux de neurones, MLS permet de calculer un ajustement en une seule étape, en retirant un produit pondéré d'une valeur existante.
- L'opérande Ra n'est pas l'accumulateur comme dans MLA : Contrairement à MLA qui accumule vers Ra + (Rn * Rm), ici on a une soustraction inversée, ce
qui signifie que l'ordre des opérandes est crucial pour éviter des erreurs dans les calculs. Il faut faire attention à ne pas inverser Ra avec Rd.
- Instruction à quatre opérandes, ce qui est puissant et rare : L'instruction MLS accepte quatre registres : deux pour la multiplication (Rn et Rm), un
pour la soustraction (Ra) et un pour le résultat (Rd). Cela permet une grande flexibilité sans avoir besoin d'instructions intermédiaires.
- Le suffixe {S} est mentionné dans la documentation mais non pris en charge dans MLS : En pratique, MLS ne permet pas de modifier les drapeaux de
condition (N, Z, C, V). La présence du paramètre S dans la description est probablement une erreur ou une confusion héritée d'autres instructions comme
MLA ou SUB.
- Très utile pour des calculs dans des boucles mathématiques intensives : MLS est couramment utilisé dans des algorithmes DSP ou des calculs de
régression, car il permet d'enchaîner des produits-soustractions (par exemple pour des différences pondérées) avec un minimum d'instructions et de cycles.
- Compatible avec l'exécution conditionnelle grâce au champ {cond} : Comme toutes les instructions ARM classiques, MLS peut être exécutée sous
condition (MLSEQ, MLSNE, etc.), ce qui permet de l'utiliser dans des blocs conditionnels sans branchement explicite, ce qui améliore le flot d'exécution.
- L'utilisation de PC comme registre est interdite : Aucun des registres Rd, Rn, Rm, ou Ra ne peut être le registre PC (r15), car cela compromettrait le
contrôle du programme. Il est également recommandé d'éviter SP pour ne pas interférer avec la gestion de la pile.
Dernière mise à jour : Dimanche, le 12 novembre 2017