Section courante

A propos

Section administrative du site

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