190 votes

Le point de test %eax %eax

Duplicata possible :
Assemblage x86 - 'testl' eax contre eax ?

Je suis très très novice en matière de programmation en langage assembleur, et j'essaie actuellement de lire le langage assembleur généré à partir d'un binaire. Je suis tombé sur

 test   %eax,%eax

o test %rdi, %rdi etc. etc. Je ne comprends pas très bien à quoi cela sert. Les valeurs dans %eax, %eax la même chose ? Que teste-t-il ? J'ai lu quelque part qu'il fait le AND mais comme il s'agit de la même valeur, ne retournerait-elle pas simplement %eax ?

Voici un exemple où j'ai trouvé cet usage :

   400e6e:       85 c0                   test   %eax,%eax
   400e70:       74 05                   je     400e77 <phase_1+0x23>

Je pensais je saute si les deux valeurs comparées sont égales......well, car %eax est bien, lui-même, dans quelle situation ne sauterions-nous PAS ?

Je suis un débutant en programmation en général, donc j'apprécierais beaucoup si quelqu'un pouvait m'expliquer cela. Merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X