Bonjour,
Je sais que pour mettre tout les bits d'un registre à 0 on doit faire un XOR(ex:XOR EAX,EAX)
Quelle est l'instruction qui met tout les bits à 1?
merci
Bonjour,
Je sais que pour mettre tout les bits d'un registre à 0 on doit faire un XOR(ex:XOR EAX,EAX)
Quelle est l'instruction qui met tout les bits à 1?
merci
Hi,
Il n'y a pas d'instruction spécifique pour cela. Il suffit de mettre à 0 et d'inverser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 xor eax,eax not eax
ou tout simplement
mieux encore par forçage logique bit par bit( c plus rapide en exécution)
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov ax,0FFh
.........
Code : Sélectionner tout - Visualiser dans une fenêtre à part or ax,0FFh
Bonjour,
Il me semble que le gain obtenu par les mises à 0 par xor fait partie du passé. Alors si on utilise deux instructions pour mettre tous les bits à 1...
Si vous savez qu'un registre ou une mémoire est à 0, vous pouvez faire un not ou un dec. Mais je ne vois pas mieux que le mov. Et n'oubliez pas que les instructions autres que le mov positionnent des flags, et que donc les méthodes ne sont pas nécessairement interchangeables.
En x86, plus généralement en complément à 2, j'aime bien comme beaucoup écrire:
C'est surtout valable si vous le lisez bien, avec comme petit avantage que dans certaines circonstances vous pouvez écrire un code indépendamment de la taille des registres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mov reg, -1 mov mem, -1
Vous pouvez utiliser votre préprocesseur pour définir par exemple ALL_ON à -1 et ALL_OFF à 0.
j'ai bien aimer votre
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov reg,-1
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager