IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

A quoi sert l'instruction test eax,eax ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 19
    Points : 21
    Points
    21
    Par défaut A quoi sert l'instruction test eax,eax ?
    Bonjour,

    J'apprend par moi même l'assembleur.

    Il y a une instruction que je vois souvent mais dont je n'arrive pas à comprendre le sens.

    Il s'agit de test eax,eax (souvent suivie d'un je , jnz etc...)

    Voila , si quelquin pouvait m'expliquer ce que ce test fait.

    Merci d'avance

  2. #2
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    test eax, eax est équivalent à çà:
    Donc çà teste si eax=0.

    Il y a d'autres cas dans ce style. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mov eax, 0 ;eax <- 0
    xor eax, eax ;idem mais + rapide

  3. #3
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    test eax, eax est plus rapide que cmp eax, 0 car cmp effectue une soustraction (eax - 0) puis positionne le Zero Flag à 1 si le résultat vaut zéro (donc un je effectue le saut si eax vaut zéro), alors que test effectue un ET logique: x ET x renvoie 0 ssi x vaut 0. test met aussi le Zéro Flag à 1 si le résultat vaut zéro, donc l'effet est similaire.

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Merci pour tes informations claires et rapides

  5. #5
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Bonjour !

    Petite précision en plus : un OR fonctionne aussi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      or   eax, eax
      jz   label
    OR positionne aussi le zero flag à 1 si eax vaut zéro. Un OR ne modifie pas les opérandes lorsqu'elles sont égales.

    Désolé de poster si tard mais c'était pour préciser...

    Salut !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. à quoi sert l'instruction RELEASE ?
    Par clavier12AZQSWX dans le forum Requêtes
    Réponses: 9
    Dernier message: 28/08/2012, 16h38
  2. Réponses: 3
    Dernier message: 27/03/2008, 12h19
  3. Réponses: 3
    Dernier message: 24/03/2008, 21h21
  4. A quoi sert l'instruction \advance ?
    Par Beowulf dans le forum Programmation (La)TeX avancée
    Réponses: 0
    Dernier message: 09/08/2007, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo