Syntaxe
|
AND{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 un «Et binaire» avec 2 opérandes.
Remarques
- Nature de l'instruction : L'instruction AND (shifted register) effectue une opération logique ET bit-à-bit entre deux registres. Le second opérande
peut être préalablement décalé (shifté), ce qui permet une grande flexibilité pour manipuler les bits. Elle permet de combiner deux valeurs tout en filtrant certains bits
spécifiques.
- Décalage intégré pour le second opérande : Contrairement à l'instruction AND classique, cette variante autorise un décalage logique (LSL, LSR), arithmétique
(ASR) ou par rotation (ROR) appliqué au second registre source (Rm). Cela est très utile pour créer des masques dynamiques sans passer par des instructions
supplémentaires.
- Format d'encodage selon la taille des registres : L'instruction existe en deux variantes selon la taille des registres : 32 bits (sf = 0) et 64
bits (sf = 1). Le décalage (imm6) doit être compris entre 0 et 31 pour la version 32 bits, et entre 0 et 63 pour la version 64 bits, ce qui offre une large gamme de
manipulation de bits.
- Comportement indéfini pour certains encodages : Si sf = 0 (mode 32 bits) et que le bit de poids fort de imm6 (imm6<5>) est à 1, alors l'encodage est
invalide (Decode_UNDEF). Cela signifie que les décalages supérieurs à 31 ne sont pas valides en mode 32 bits, ce qui est logique compte tenu de la taille du registre.
- Utilisation fréquente dans les manipulations de masques : Cette instruction est souvent utilisée pour appliquer des masques sur des registres après un
décalage, notamment pour isoler ou tester certains bits à des positions précises. Par exemple, on peut tester si un groupe de bits est actif dans une valeur donnée.
- Aucune affectation des indicateurs d'jtat : Contrairement à d'autres instructions comme ANDS, l'instruction AND n'affecte pas les drapeaux du
processeur (NZCV). Elle est donc utilisée lorsqu'on souhaite effectuer une opération logique sans impacter le flot de contrôle basé sur les résultats conditionnels.
- Instruction efficace pour l'optimisation de code bas niveau : Dans les boucles optimisées ou les accès mémoire conditionnels, l'utilisation de AND avec
décalage permet de réduire le nombre d'instructions nécessaires. Elle permet une manipulation de bits fine sans surcharge en cycles ou en mémoire, ce qui est essentiel pour
les systèmes embarqués ou les noyaux temps réel.
Dernière mise à jour : Dimanche, le 12 novembre 2017