QDADD |
Addition double |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rd |
Ce paramètre permet d'indiquer le registre de destination. |
| Rm |
Ce paramètre permet d'indiquer le registre contenant le premier opérande. |
| Rn |
Ce paramètre permet d'indiquer le registre contenant le deuxième opérande. |
Description
Cette instruction permet d'effectuer une saturation double et d'effectuer un addition.
Remarques
- Doublement d'un opérande avec saturation préalable : L'instruction QDADD réalise d'abord une multiplication par deux de l'opérande Rm, en appliquant
une saturation arithmétique si nécessaire. Cela signifie que si le doublement produit un dépassement de la capacité d'un entier signé 32 bits, le résultat est clampé
à la borne maximale ou minimale permise.
- Addition avec un second opérande après doublement : Une fois le doublement saturé effectué sur Rm, le résultat est additionné à Rn. Cette
addition est aussi protégée par saturation, ce qui permet d'éviter tout dépassement sur le résultat final dans Rd. C'est une instruction idéale pour des calculs
nécessitant une amplification suivie d'un cumul.
- Utilisée dans les filtres numériques et les codecs : QDADD est fréquemment utilisée dans les algorithmes de traitement du signal, comme les filtres
numériques ou codecs audio, où certaines valeurs doivent être amplifiées puis combinées. La saturation intégrée garantit que les résultats restent stables et évitent
les débordements incontrôlés.
- Saturation détectable via le drapeau Q : Comme toutes les instructions avec saturation, QDADD met à jour le bit Q dans le registre d'état CPSR si un
dépassement s'est produit pendant le doublement ou l'addition. Cela permet à un programme de réagir aux situations critiques, comme dans des boucles de calcul
sensibles.
- Optimise les performances en réduisant le nombre d'instructions : QDADD combine en une seule instruction ce qui nécessiterait normalement deux opérations
distinctes (un décalage à gauche et une addition). Cela permet d'économiser du temps d'exécution et de la place en mémoire, en réduisant le nombre total d'instructions
nécessaires.
- Attention aux cas limites du doublement : Si l'opérande Rm est proche des bornes ±231-1, son doublement peut immédiatement
entraîner une saturation. Les programmeurs doivent donc être conscients que cette instruction peut produire une valeur maximale/minimale même avec des entrées valides
si le doublement dépasse les capacités.
- Non disponible sur toutes les architectures ARM : QDADD est une instruction spécifique à certaines architectures ARMv5TE et supérieures, incluant les
extensions DSP (Digital Signal Processing). Elle n'est donc pas supportée sur toutes les plateformes ARM, comme les Cortex-M plus simples.
- Complémentaire avec QDSUB pour les opérations DSP : L'instruction QDADD fonctionne souvent en tandem avec QDSUB (soustraction après doublement saturé),
ce qui permet de couvrir des opérations arithmétiques symétriques dans les algorithmes de type MAC (Multiply-Accumulate) ou de convolution.
Dernière mise à jour : Dimanche, le 12 novembre 2017