Syntaxe
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 |
| Rm |
Ce paramètre permet d'indiquer le registre contenant la valeur étant soustraire de 0. |
Description
Cette instruction permet d'effectuer la négation d'une valeur dans un registre.
Remarques
- NEG effectue une soustraction de 0 - Rm : L'instruction NEG calcule le négatif d'une valeur en effectuant l'opération 0 - Rm, ce qui revient à inverser le
signe d'un entier. Elle est donc équivalente à RSB Rd, Rm, #0, mais avec une syntaxe plus claire et plus concise.
- Alternative simplifiée à RSB : NEG est essentiellement une forme abrégée de RSB (Reverse Subtract) avec une constante nulle. Cela rend le code plus
lisible quand on veut simplement obtenir l'opposé d'une valeur, sans avoir à écrire l'équation complète.
- Mise à jour conditionnelle des drapeaux avec S : Le suffixe S (comme dans NEGS) permet de mettre à jour les drapeaux du programme (N, Z, C, V). Cela est
utile pour adapter le flux de contrôle ou vérifier des erreurs de dépassement suite à l'opération de négation.
- Risque de débordement pour certaines valeurs : Lorsque la valeur contenue dans Rm est le plus petit entier signé possible (comme 0x80000000 pour un entier
32 bits), la négation peut provoquer un débordement arithmétique, car cette valeur n'a pas d'opposé signé représentable.
- NEG conserve l'unité de traitement arithmétique : Même si NEG est une opération logique simple, elle est exécutée comme une opération arithmétique, ce qui
signifie que les drapeaux peuvent être affectés par des conditions telles que les dépassements ou le résultat nul.
- Compatible avec les conditions d'exécution : Comme la majorité des instructions ARM, NEG peut inclure un suffixe conditionnel {cond} (exemple NEGEQ, NEGLT).
Cela permet d'exécuter la négation uniquement si certaines conditions sont remplies, ce qui permet de réduire l'usage de branches.
- Peut servir à l'initialisation ou à la correction de signe : L'instruction NEG peut être utilisée pour transformer une valeur positive en négative, ou
inversement, pour corriger le signe d'un résultat. Cela est utile dans des algorithmes de traitement numérique ou de calcul vectoriel.
- Utile pour simplifier les calculs en boucle : Dans les routines qui nécessitent des comptages décroissants ou des inversions de direction (par exemple
dans des boucles), NEG permet de rapidement générer l'opposé d'un compteur, facilitant certains algorithmes sans multiplier les instructions.
Dernière mise à jour : Dimanche, le 12 novembre 2017