2017-07-29 4 views
2

Je vois une instruction bizarre dans mon objdump:Quelle est cette ligne dans mon objdump?

64 2e 65 78 65 fs cs gs js,pn 0x4010cb 

Lorsque je tente de démonter les opcodes manuellement à l'aide this, je reçois:

fs cs gs js 0x6a 

Qu'est-ce que cette instruction signifie? Quelle est sa signification?

Info: Assemblage compilé sous Windows 7 64 bits en utilisant NASM au format win64.

+6

Ce n'est pas une instruction. C'est juste le texte 'd.exe'. Vous ne pouvez pas le démonter et attendre une sortie sensible. – Jester

Répondre

5

Ceci est une instruction de saut avec un tas de préfixes à l'avant. Il décode comme ceci:

  • 64 est le préfixe de remplacement du segment fs. Ça ne fait rien ici.
  • 2e est le préfixe de substitution de segment cs. Devant les instructions de saut conditionnelles, il indique que le saut n'est pas pris.
  • 65 est le préfixe de remplacement du segment gs. Ça ne fait rien ici.
  • 78 est l'instruction js « sauter si elle est définie signe de drapeau »
  • 65 est l'opérande pour cette instruction.

Cette instruction n'a pas beaucoup de sens. Comme le codage correspond à la chaîne d.exe, il se peut qu'il s'agisse de données plutôt que de code. Il se peut aussi que l'assembleur génère des préfixes inutiles pour faire une sorte d'alignement, mais sans voir l'adresse à laquelle cette instruction est, cette hypothèse ne peut pas être testée.