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.