TEQ |
Test d'équivalence |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| 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 le test d'équivalence sur 2 opérandes.
Remarques
- Opération de comparaison sans résultat entreposé : L'instruction TEQ effectue un test logique XOR entre deux opérandes, sans enregistrer le résultat. Seuls
les drapeaux du processeur (notamment le drapeau Z pour "zero") sont mis à jour. Cela permet de tester si deux valeurs sont équivalentes sans consommer de registre
supplémentaire.
- Utilisation pour des branchements conditionnels : Après une instruction TEQ, un branchement conditionnel (comme BEQ ou BNE) peut être exécuté selon l'état
du drapeau Z. Si le résultat du XOR est zéro (valeurs identiques), Z est mis à 1. Cela permet de prendre des décisions basées sur l'égalité bit à bit de deux valeurs.
- Différence avec CMP : Contrairement à CMP (effectuant une soustraction pour comparer deux valeurs), TEQ réalise un XOR logique. Cela signifie que TEQ est
plus adapté pour tester des motifs de bits précis (par exemple, vérifier si un ensemble particulier de bits est actif).
- Aucune valeur de destination Rd : Le paramètre Rd mentionné dans ta description semble incorrect. TEQ ne produit aucune valeur dans un registre destination
(Rd n'existe pas ici). Elle ne modifie que les drapeaux APSR (Application Program Status Register). Il faudrait donc corriger cette description.
- Flexibilité grâce à Operand2 : Le second opérande (Operand2) peut être un registre simple ou une valeur immédiate, mais aussi un registre modifié par
décalage ou rotation. Cela donne une grande souplesse pour tester des patterns spécifiques sans devoir préparer les données auparavant.
- Instruction rapide et efficace : Comme TEQ est une opération logique simple, elle est très rapide à exécuter sur les coeurs ARM, en particulier dans des
architectures comme ARM Cortex-M. Elle est parfaite pour des tests intensifs en temps réel où chaque cycle CPU compte.
- Cas d'utilisation : sécurité et validation de bits : TEQ est souvent utilisé pour vérifier des permissions, valider des drapeaux ou contrôler l'état de
registres dans des systèmes embarqués ou critiques. Par exemple, on peut vérifier si un certain groupe de bits correspond exactement à un modèle attendu.
- Pas d'effet sur le flot de données : Puisque TEQ ne stocke aucun résultat, elle est purement utilisée pour des tests. Cela la rend inoffensive pour le
reste des registres et évite les erreurs où une valeur intermédiaire serait accidentellement écrasée, ce qui est crucial dans du code sensible ou multitâche.
Dernière mise à jour : Dimanche, le 12 novembre 2017