RSC |
Inverse la soustraction avec retenue |
| ARM |
Syntaxe
|
RSC{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 inversé en supprimant également la valeur du drapeau de retenue.
Remarques
- Soustraction inversée prenant en compte la retenue : L'instruction RSC réalise une opération du type Operand2 - Rn - (1 - C) où C est le drapeau de
retenue. Elle est donc essentiellement une soustraction inversée avec gestion fine de la retenue, ce qui la rend essentielle dans des contextes arithmétiques plus
complexes comme la soustraction multi-mot.
- Indispensable pour les opérations multi-mots : Lorsqu'on effectue des calculs sur de grandes entités (64 bits ou plus) divisées en registres 32 bits,
RSC est souvent utilisée dans les opérations de propagation de retenue, notamment dans la deuxième phase d'une soustraction multi-mot. Elle complète efficacement
SBC dans ces séquences.
- Interaction forte avec les drapeaux de condition : Avec le suffixe S, l'instruction met à jour les drapeaux du processeur (N, Z, C, V), ce qui est
très utile pour les branches conditionnelles. Cependant, cela impose une certaine vigilance : un usage incorrect pourrait compromettre la logique conditionnelle
de l'application.
- RSC est rarement utilisée seule : Dans la pratique, RSC est rarement utilisée comme une instruction isolée. Elle prend tout son sens dans des algorithmes
d'arithmétique de précision élevée, où chaque bit et chaque drapeau a un rôle. Sa rareté dans les codes simples reflète sa spécialisation.
- Permet l'inversion explicite de soustraction conditionnelle : Contrairement à SUB ou SBC, RSC offre un renversement explicite des termes de la
soustraction, avec intégration du drapeau de retenue. Cette particularité peut simplifier certaines opérations où les opérandes ne sont pas dans l'ordre attendu.
- Le deuxième opérande reste flexible : Operand2 peut inclure un décalage ou une valeur immédiate, ce qui rend l'instruction souple dans sa forme, malgré
sa complexité fonctionnelle. Cela permet d'éviter des instructions intermédiaires dans des calculs sophistiqués.
- Attention à la gestion du drapeau de retenue en amont : L'efficacité de RSC repose sur l'état du drapeau de retenue (C) avant son exécution. Si ce
drapeau n'a pas été correctement mis à jour (par exemple par une instruction précédente sans suffixe S), alors le résultat de RSC pourrait être faux ou inattendu.
- Différence subtile mais importante avec SBC : L'instruction SBC calcule Rn - Operand2 - (1 - C), alors que RSC fait l'inverse. Cette distinction est
cruciale dans les calculs orientés bas niveau comme les bibliothèques de calculs cryptographiques ou les conversions binaires multi-tailles.
Dernière mise à jour : Dimanche, le 12 novembre 2017