Assembleur 80x86 | POPCNT |
---|---|
AMD K10 (SSE4a)+ | Bit Population Count |
Syntaxe
POPCNT regdest, source |
Description
Cette instruction permet de compter le nombre de bits à 1 que possède une opérande source et place le résultat dans un registre destinataire.
Algorithme
Count ← 0 BOUCLE POUR i ← 0 JUSQU'A taille de l'opérande SAUT 1 SI source(i) = 1 ALORS Count ← Count + 1 FIN SI FIN BOUCLE DEST ← Count |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
POPCNT reg16, reg/mem16 | F3h 0Fh B8h /r | Compte les 1 dans les registres ou mémoire 16 bits. |
POPCNT reg32, reg/mem32 | F3h 0Fh B8h /r | Compte les 1 dans les registres ou mémoire 32 bits. |
POPCNT reg64, reg/mem64 | F3h 0Fh B8h /r | Compte les 1 dans les registres ou mémoire 32 bits. |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#UD(Opcode invalide) | X | X | X | Cette instruction n'est pas supporté, comme indiqué par le bit 23 du registre ECX de la fonction 0000_00001h de l'instruction CPUID. |
#SS(Pile) | X | X | X | Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique |
#GP(Protection général) | X | X | X | Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique |
X | Un segment de données nulle est utilisé comme référence mémoire | |||
#PF(Faute de page) | X | X | Une faute de page résultat de l'exécution de l'instruction | |
#AC(Vérifie l'alignement) | X | X | Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé |
Voir également
Instruction assembleur 80x86 - Instruction BSF
Instruction assembleur 80x86 - Instruction BSR
Instruction assembleur 80x86 - Instruction LZCNT
Références
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 232 à 232.
Dernière mise à jour : Vendredi, le 5 septembre 2014