web-dev-qa-db-fra.com

Que fait l'instruction `test`?

Je regarde quelques petits codes assembleur et j'ai du mal à comprendre l'instruction TEST et son utilisation. Je regarde le code suivant à la fin d'une boucle:

8048531:    84 c0                   test   al,al
8048533:    75 dc                   jne    8048511 <function+0x2d>

La façon dont je comprends le TEST est qu'il fonctionne un peu comme l'opérateur AND et qu'il définit des indicateurs. Je suppose que je ne comprends pas vraiment comment fonctionnent les drapeaux. test al,al pour moi, il vérifie les mêmes bits inférieurs et obtiendra toujours les mêmes résultats.

Quelqu'un peut-il expliquer?

27
danielhc

Il teste le registre contre lui-même, juste pour définir les drapeaux. Le résultat sera différent pour une valeur nulle et non nulle.

16
Bo Persson