L'instruction de test effectue une opération ET logique entre les opérandes, mais ne pas écrire le résultat dans un registre. Seuls les drapeaux sont mis à jour.
Dans votre exemple, le test eax, eax va définir l'indicateur de zéro si eax est égal à zéro, le signe-drapeau si le bit le plus élevé et certaines autres drapeaux.
Le Saut en cas d'Égalité (ej) l'enseignement des sauts si l'indicateur de zéro est réglé.
Vous pouvez traduire le code plus lisible le code comme ceci:
cmp eax, 0
je somewhere
Qui a la même fonctionnalité, mais nécessite quelques octets de plus de code de l'espace. C'est la raison pour laquelle le compilateur émet un test au lieu de comparer.