SBC |
Soustraction avec retenue |
| ARM |
Syntaxe
|
SBC{S}{cond} {Rd}, Rn, Operand2
|
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 le premier opérande. |
| Operand2 |
Ce paramètre permet d'indiquer le deuxième opérande flexible. |
Description
Cette instruction permet d'effectuer une soustraction en supprimant également la valeur du drapeau de retenue.
Remarques
- Soustraction complète avec retenue inversée : L'instruction SBC réalise une soustraction complète : elle calcule Rd = Rn - Operand2 - (1 - C), où C
est le bit de retenue. Ce comportement est utile pour chaîner des soustractions sur plusieurs mots lors d'une opération arithmétique multiblocs (comme une
soustraction 64 bits sur deux registres 32 bits).
- Soustraction multi-mots (multi-précision) : L'une des principales utilisations de SBC est dans les calculs multi-précision, où plusieurs registres
représentent un entier plus grand que 32 bits. Si la soustraction du mot de poids faible a emprunté (retenue effacée), SBC propage correctement ce déficit au mot
suivant.
- Utilisation la retenue inversé : Contrairement à ce que son nom pourrait laisser croire, SBC utilise le complément du drapeau de retenue (donc 1 - C). Cela
signifie qu'en pratique, si le bit de carry est clair (C = 0), cela ajoute 1 de plus à la soustraction. Ce détail subtil est essentiel à comprendre pour éviter des
erreurs de logique.
- Operand2 : opérande flexible : Le second opérande (Operand2) peut être un registre, un décalage ou une constante immédiate, ce qui rend cette instruction
très flexible. Cela permet d'écrire des opérations arithmétiques complexes sans ajouter d'instructions intermédiaires.
- Dépendance explicite à l'état du processeur : Comme SBC dépend du drapeau de retenue (C), elle est sensiblement affectée par les instructions précédentes
modifiant ce drapeau. Il est donc crucial d'assurer que le contexte du carry est correctement établi avant d'exécuter cette instruction.
- Version conditionnelle avec mise à jour des drapeaux : Le suffixe S (exemple SBCS) permet de mettre à jour les drapeaux d'état (N, Z, C, V) en fonction du
résultat. Cela peut être exploité pour gérer des boucles arithmétiques, des tests conditionnels ou des flux de contrôle dépendant du résultat de la soustraction.
- Gestion d'emprunt dans les algorithmes : Dans les algorithmes nécessitant un emprunt explicite, comme les bibliothèques de calcul cryptographique ou de
grand entier, SBC est indispensable pour chaîner proprement les opérations de soustraction sans erreur d'arrondi.
- Instruction complémentaire de ADC : SBC est en quelque sorte le pendant inversé de ADC (Add with Carry). Ensemble, ces deux instructions permettent
de construire des calculs arithmétiques étendus avec gestion précise de la retenue et de l'emprunt, ce qui est fondamental dans les opérations de bas niveau.
Dernière mise à jour : Dimanche, le 12 novembre 2017