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. |
| 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. |
Description
Cette instruction permet d'effectuer une saturation de soustraction de valeur entière.
Remarques
- Soustraction entière avec gestion des débordements : L'instruction QSUB effectue une soustraction entre deux registres contenant des valeurs entières
signées. Sa particularité est de gérer automatiquement les débordements en utilisant une saturation arithmétique. Cela garantit que le résultat reste dans les bornes
représentables, évitant ainsi les erreurs dues au dépassement.
- Saturation intégrée pour fiabilité : Quand le résultat de la soustraction dépasse les limites d'un entier signé 32 bits (ou 16 bits dans certaines
versions SIMD), il est clampé à la valeur maximale ou minimale possible. Cette sécurité évite les résultats incorrects, surtout dans les applications critiques comme
l'aéronautique, l'automobile ou les systèmes embarqués.
- Syntaxe familière mais puissante : La syntaxe de QSUB reste proche des instructions arithmétiques classiques comme SUB, ce qui facilite son
intégration dans un code existant. L'ajout de la lettre Q (pour "saturation") indique simplement une version plus sûre de la soustraction.
- Utile pour les calculs sensibles aux bornes : Cette instruction est idéale pour les applications où un dépassement est inacceptable, comme les calculs
de position dans un robot, les mesures physiques ou les calculs financiers. Le développeur n'a pas besoin d'implémenter manuellement des vérifications supplémentaires
après chaque opération.
- Peut être conditionnelle : Grâce au paramètre {cond}, QSUB peut être exécutée conditionnellement, selon les drapeaux du programmeur. Cela permet une
écriture plus compacte et efficace, évitant des branchements supplémentaires dans le flot d'exécution.
- Optimisée pour les systèmes embarqués : QSUB est souvent utilisée dans les processeurs embarqués (ARMv5TE, ARMv6,...) intégrant les extensions DSP. Elle
améliore considérablement la performance des calculs numériques sans recourir à des opérations plus complexes ou à des bibliothèques logicielles.
- Remplace plusieurs lignes de code : En langage C, une opération équivalente nécessiterait une soustraction suivie d'un test de débordement et d'un
ajustement du résultat. QSUB regroupe toutes ces étapes en une seule instruction, ce qui rend le code plus lisible, plus rapide et moins sujet aux erreurs.
- Contrôle fin sur les opérations : En combinant QSUB avec des instructions similaires comme QADD, QDADD, QDSUB, le programmeur peut construire des chaînes
de traitement numérique complexes tout en maintenant un haut degré de contrôle sur la saturation, sans affecter les performances globales du système.
Dernière mise à jour : Dimanche, le 12 novembre 2017