Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| 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 test «Et binaire» sur 2 opérandes.
Remarques
- Sur le rôle de TST : L'instruction TST est essentiellement utilisée pour tester des bits spécifiques dans un registre sans modifier leur valeur. C'est
une manière efficace de vérifier rapidement l'état de certains bits avant d'effectuer un saut conditionnel. Elle est notamment utile pour la gestion des états, des
drapeaux ou des permissions en bas niveau.
- Sur le fait que TST ne modifie pas les registres : Contrairement à des instructions comme AND, l'instruction TST effectue l'opération logique "ET" entre
deux opérandes, mais elle n'écrit pas le résultat. Le but est uniquement de mettre à jour les indicateurs de condition (NZCV) du registre d'état. Cela permet d'économiser
des cycles d'horloge en évitant des écritures inutiles.
- Sur l'utilisation des codes conditionnels (cond) : Le paramètre {cond} optionnel est fondamental pour rendre l'instruction TST encore plus puissante. Il
permet d'exécuter TST seulement si certaines conditions préalablement établies sont remplies, ce qui optimise les branches du programme. Cela s'inscrit dans la philosophie
ARM d'un codage très compact et flexible.
- Sur Operand2 et sa flexibilité : L'Operand2 dans ARM est très particulier car il peut être soit une constante immédiate soit un registre transformé par
des décalages (shifts) ou des rotations. Cela donne beaucoup de puissance à TST, puisqu'on peut tester non seulement un simple bit mais aussi un motif complexe sans avoir
à préparer l'opérande en plusieurs instructions.
- Sur l'impact sur les flags de condition : La principale conséquence de l'exécution d'un TST est la mise à jour du drapeau Zero (Z) et du drapeau Négatif (N).
Le drapeau Z sera mis si le résultat est nul (c'est-à-dire si aucun bit commun n'est trouvé). Comprendre l'effet de TST sur les drapeaux est crucial pour écrire des branches
conditionnelles efficaces en ARM.
- Sur l'intérêt dans les routines d'interruptions et systèmes embarqués : ans les systèmes embarqués, TST est souvent employé pour vérifier des bits d'état
matériel sans avoir à charger ou modifier les registres associés. Cette instruction est légère et rapide, ce qui est essentiel dans les routines critiques de type ISR (Interrupt
Service Routine) où chaque cycle compte.
- Sur la comparaison avec CMP : Il est intéressant de noter que TST est au test binaire ce que CMP est à la soustraction : une opération servant uniquement à
modifier les indicateurs de condition sans enregistrer de résultat. Alors que CMP teste des valeurs numériques, TST se concentre sur les bits, renforçant la capacité de
l'assembleur ARM à traiter aussi bien des nombres que des structures binaires.
- Sur les cas d'usage typiques (exemples pratiques) : Un usage courant de TST serait de tester si un bit particulier est activé, par exemple pour savoir si
un périphérique est prêt ou si une tâche a été accomplie. Un simple TST R0, #0x08 permet de vérifier si le 4e bit de R0 est actif, sans besoin de masquage manuel ou de
comparaison longue, ce qui simplifie considérablement le code.
Dernière mise à jour : Dimanche, le 12 novembre 2017