2010-08-11 18 views
2

Comment les instructions suivantes peuvent-elles avoir un sens?Quel est le but du déréférencement d'eax lorsqu'il contient 0?

xor eax,eax 
mov eax,[eax] 

Lorsque vous XOR EAX, vous obtenez zéro la plupart du temps, donc peut vous déréférencer ce qui est à l'adresse [EAX] (dans ce cas eax contient 0) et le remettre dans eax?

+0

Quand est-ce que 'xor eax, eax' n'est pas zéro eax? –

+0

@MartinJames J'étais un noob. Je suis toujours un noob. Attendez-vous quelque chose d'un noob? : P –

Répondre

5

D'où vient ce code? Et sur quel système d'exploitation est-il prévu de fonctionner?

Je vois deux possibilités:

  1. Ce code est censé générer une erreur de segmentation intentionnelle.

  2. Le code est conçu pour s'exécuter sur un système où une page est valide à l'adresse 0 et tente d'accéder à tout ce qui s'y trouve.

2

Vous ne savez pas exactement ce que vous voulez clarifier.

xor eax, eax 

générerons 0 toujours. Le déréférencement 0 entraîne le plus souvent un défaut de page.

C'est-à-dire, à moins qu'il y ait une page valide à l'adresse 0 ...