CLZ |
Compte le nombre zéro |
| 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. |
| Rm |
Ce paramètre permet d'indiquer un registre d'opérande. |
Description
Cette instruction permet de compter le nombre de zéro dans un registre et de retourner le résultat.
Remarques
- Utile pour des calculs de priorité ou de normalisation : L'instruction CLZ est utilisée pour compter le nombre de bits à zéro en tête d'un mot
de 32 bits (c'est-à-dire à partir du bit le plus significatif). Elle est très utile dans des algorithmes comme ceux de compression, de normalisation de flottants ou
encore pour déterminer la priorité d'un bit actif.
- Retourne un entier de 0 à 32 : CLZ retourne une valeur entière comprise entre 0 (si le bit le plus à gauche est à 1) et 32 (si tous les bits sont
à zéro). Ce résultat est stocké dans le registre de destination Rd. Cela peut servir pour détecter un zéro global ou pour calculer des décalages optimaux.
- Instruction simple mais puissante : Bien que très simple à utiliser (seulement deux registres, Rd et Rm), CLZ encapsule une opération souvent coûteuse
à implémenter manuellement en assembleur. Elle remplace efficacement une boucle de test bit à bit, ce qui améliore les performances et réduit le code.
- Prend en charge l'exécution conditionnelle : Grâce au champ optionnel {cond}, l'instruction peut être exécutée uniquement si certaines conditions sont
remplies (exemple : égalité, dépassement,...). Cela permet de l'insérer efficacement dans des branches sans avoir à coder de sauts explicites.
- Ne modifie pas les registres d'état : CLZ ne modifie pas les registres d'état du processeur (CPSR), contrairement à d'autres instructions arithmétiques
ou logiques. Cela signifie qu'elle peut être utilisée sans perturber les conditions d'exécution ultérieures, ce qui est pratique dans des contextes sensibles.
- Disponible uniquement sur certaines architectures : CLZ n'est pas disponible dans toutes les versions de l'architecture ARM. Elle a été introduite à
partir de l'architecture ARMv5T. Les programmeurs doivent donc vérifier la compatibilité de leur processeur cible avant de l'utiliser.
- Peut être combinée avec d'autres instructions pour des optimisations : CLZ est souvent utilisée en combinaison avec d'autres instructions comme RSB
(Reverse Subtract) ou MOV pour créer des séquences efficaces, par exemple pour calculer un log2 ou la position du bit le plus significatif à 1.
- Optimise les algorithmes mathématiques bas niveau : Dans des algorithmes comme la division, l'approximation racine carrée ou encore les encodeurs de
priorité, CLZ permet un gain de performance important. Elle est notamment appréciée dans les systèmes embarqués où les cycles CPU sont limités.
Dernière mise à jour : Dimanche, le 12 novembre 2017