| 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