LSR |
Décalage vers la droite logique |
| ARM |
Syntaxe
|
LSR{S}{cond} Rd, Rm, Rs
|
|
LSR{S}{cond} Rd, Rm, #sh
|
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 |
| Rm |
Ce paramètre permet d'indiquer le registre contenant le premier opérande. L'opérande allant être décalé vers la droite. |
| Rs |
Ce paramètre permet d'indiquer le registre contenant la valeur de décalage à appliquer à la valeur du paramètre Rm. |
| sh |
Ce paramètre permet d'indiquer une constante de décalage. La valeur doit être situé dans l'intervalle de 0 à 31. |
Description
Cette instruction permet d'effectuer le décalage de bits logique vers la droite.
Remarques
- LSR effectue un décalage logique à droite sans conservation du signe : Contrairement à un décalage arithmétique (ASR), le décalage logique (LSR) remplit
les bits de gauche avec des zéros, quelle que soit la valeur du bit de signe. Cela le rend particulièrement adapté au traitement de valeurs non signées ou à la
manipulation de bits.
- La mise à jour des drapeaux est optionnelle grâce au suffixe S : Lorsque le suffixe S est utilisé, l'instruction LSR met à jour les drapeaux de
condition du programme (comme Zero ou Negative). Cela permet d'intégrer LSR dans des structures de contrôle sans avoir à insérer une instruction de comparaison
supplémentaire.
- Deux variantes existent : avec constante (#sh) ou registre (Rs) LSR peut utiliser un décalage constant (#sh) ou un décalage variable contenu dans un
registre (Rs). Cela offre une grande flexibilité, notamment dans des boucles ou algorithmes nécessitant un décalage dynamique selon une valeur calculée.
- Le décalage constant est limité à un maximum de 31 bits : Le paramètre #sh doit obligatoirement être compris entre 0 et 31. Cette limitation correspond
à la taille de registre standard de 32 bits sur l'architecture ARM, et garantit un comportement défini du processeur.
- Le registre source Rm contient la valeur à décaler : Le paramètre Rm est l'opérande principal que l'on souhaite décaler vers la droite. Ce registre
n'est pas modifié, car le résultat est toujours stocké dans un registre de destination séparé (Rd), ce qui évite les effets de bord.
- Le registre de destination Rd reçoit le résultat du décalage : Le résultat final du décalage est écrit dans Rd, indépendamment des registres source. Cela
permet de conserver les valeurs initiales tout en effectuant des traitements parallèles ou en construisant de nouvelles valeurs à partir d'anciens registres.
- L'instruction peut être conditionnelle grâce au champ cond : Avec le paramètre optionnel cond, l'instruction LSR peut être exécutée uniquement si
une condition donnée est remplie. Cela permet de minimiser le nombre de branchements explicites et d'optimiser les performances dans des sections critiques.
- LSR est souvent utilisé pour extraire ou isoler des bits : Le décalage logique à droite est une technique très courante pour extraire certains bits d'un
registre, par exemple pour isoler un champ dans une valeur codée en binaire. LSR combiné à AND permet souvent d'émuler une opération de "masquage de champ".
Dernière mise à jour : Dimanche, le 12 novembre 2017