SMMLS |
Multiplication avec soustraction signé |
| ARM |
Syntaxe
|
SMMLS{R}{cond} Rd, Rn, Rm, Ra
|
Paramètres
| Nom |
Description |
| R |
Ce paramètre optionnel permet d'indiquer que le résultat est arrondit. S'il n'est pas présent, le résultat sera tronqué. |
| 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 le premier opérande. |
| Rm |
Ce paramètre permet d'indiquer le registre contenant le deuxième opérande. |
| Ra |
Ce paramètre permet d'indiquer le registre contenant la valeur à ajouter ou soustraire. |
Description
Cette instruction permet d'effectuer une multiplication du mot entier le plus significatif avec une soustraction.
Remarques
- Multiplication 32x32 avec récupération du MSW uniquement : L'instruction SMMLS effectue une multiplication de deux entiers signés sur 32 bits, mais au
lieu de conserver tout le résultat 64 bits, elle extrait uniquement la partie haute (MSW - Most Significant Word), ce qui permet de travailler plus efficacement avec
des formats en virgule fixe.
- Soustraction directe avec un troisième opérande : Contrairement à son homologue SMMLA, cette instruction soustrait le résultat MSW de la valeur contenue
dans le registre accumulateur Ra. Cela permet d'implémenter des algorithmes où la soustraction de produits est requise, comme dans certaines étapes de filtres numériques
ou de calculs matriciels anti-symétriques.
- Contrôle du comportement via le suffixe R : L'option R permet de choisir entre un résultat arrondi ou simplement tronqué. Cet arrondi peut améliorer la
précision lors de calculs répétés ou enchaînés, en compensant la perte d'information liée à la suppression des bits de poids faible.
- Particulièrement adapté aux calculs en virgule fixe : SMMLS est conçu pour s'adapter aux architectures ne disposant pas de FPU (unité de calcul flottant).
Il facilite donc les calculs en Q-format, où le résultat est conservé dans une plage maîtrisée, ce qui est fréquent en systèmes embarqués temps réel.
- Soustraction intégrée pour gain de cycles processeur : Le fait d'effectuer la multiplication et la soustraction en une seule instruction permet un gain de
performance considérable, surtout dans les boucles intensives. Cela réduit le nombre total d'instructions nécessaires, donc améliore le débit global d'exécution.
- Instruction conditionnelle avec suffixe {cond} : Comme d'autres instructions ARM, SMMLS peut être conditionnelle, permettant de l'exécuter uniquement si
certains drapeaux d'état sont définis. Cela élimine le besoin de branchements conditionnels, rendant le code plus compact et rapide.
- Sensibilité à l'ordre des opérandes : L'ordre dans lequel les registres sont spécifiés a une incidence directe sur le résultat : Rn et Rm sont multipliés,
leur MSW est extrait, et ce MSW est ensuite soustrait de Ra. Une erreur dans la position des registres pourrait conduire à un comportement mathématiquement incorrect.
- Complément utile aux autres instructions SMMLx : L'instruction SMMLS complète les instructions SMMLA et SMMUL en fournissant une alternative négative à
l'accumulation, permettant de créer des algorithmes différenciateurs ou correcteurs plus compacts. Elle élargit ainsi la palette des opérations possibles avec un code
ARM plus expressif et efficace.
Dernière mise à jour : Dimanche, le 12 novembre 2017