QDSUB |
Soustraction 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 une soustraction de valeur entière.
Remarques
- Doublement de l'opérande avec saturation avant soustraction : L'instruction QDSUB commence par doubler la valeur de Rm (premier opérande), en
appliquant une saturation arithmétique si nécessaire. Ce résultat est ensuite soustrait à Rn. L'ordre des opérations est crucial : on effectue d'abord le doublement,
puis la soustraction.
- Protection contre le dépassement via saturation : Comme son nom l'indique, QDSUB utilise une saturation arithmétique pour éviter les débordements. Si le
doublement de Rm ou la soustraction finale dépasse les bornes du type entier signé 32 bits, la valeur est automatiquement ajustée au maximum ou minimum autorisé, ce qui
renforce la stabilité des programmes.
- Différent de la soustraction simple avec doublement : Contrairement à une séquence classique du type SUB Rd, Rn, Rm, LSL #1, effectuant une soustraction
avec un simple décalage à gauche, QDSUB applique en plus une saturation sur le doublement. Cela rend cette instruction particulièrement adaptée aux calculs à comportement
borné.
- Utilisation fréquente dans les algorithmes de DSP : Cette instruction est conçue pour les traitements de signal numériques où l'on combine fréquemment des
valeurs amplifiées avec d'autres. Elle est notamment utile dans les opérations MAC (Multiply-Accumulate), la filtration numérique ou la compression audio, où la précision
doit rester contrôlée.
- Met à jour le drapeau Q du registre CPSR : QDSUB met à jour le bit Q du registre d'état CPSR pour signaler qu'une saturation s'est produite pendant le
traitement. Cela permet au logiciel de détecter les cas de dépassement et éventuellement de prendre des mesures correctives ou d'ajuster les calculs à venir.
- Instruction complémentaire à QDADD : QDSUB est le pendant logique de QDADD, qui effectue une addition au lieu d'une soustraction. Ces deux instructions
sont souvent utilisées ensemble pour créer des algorithmes symétriques, comme dans les filtres en passe-bande ou les transformées rapides (FFT).
- Gain de performance par combinaison d'opérations : Au lieu d'utiliser plusieurs instructions (doublement, saturation, soustraction), QDSUB permet de
réaliser l'ensemble en une seule opération, ce qui réduit le nombre de cycles machine nécessaires. Cela améliore significativement les performances sur des architectures
ARM dotées de DSP.
- Disponible uniquement sur les architectures ARM avec extensions DSP : Comme pour QDADD, l'instruction QDSUB n'est disponible que sur des architectures
ARMv5TE et supérieures. Elle dépend des extensions DSP, ce qui signifie qu'elle est inaccessible sur les processeurs ARM simplifiés comme les Cortex-M0 ou M3, souvent
utilisés dans les microcontrôleurs de base.
Dernière mise à jour : Dimanche, le 12 novembre 2017