2010-08-22 4 views
1

Je suis désolé si c'est une question vraiment noob. J'utilise otool de démonter un fichier et c'est le résultat d'une méthode que je suis intéressé par:Pourquoi la première colonne des résultats d'otool n'est pas continue?

_KTDriverIsRunning: 
0000000000000d98 pushq %rbp 
0000000000000d99 movq %rsp,%rbp 
0000000000000d9c xorl %eax,%eax 
0000000000000d9e testq %rdi,%rdi 
0000000000000da1 je 0x00000dac 
0000000000000da3 xorl %eax,%eax 
0000000000000da5 cmpl $__mh_dylib_header,0x14(%rdi) 
0000000000000da9 setne %al 
0000000000000dac movzbl %al,%eax 
0000000000000daf leave 
0000000000000db0 ret 

Comme vous pouvez le voir, la première colonne est pas continue. Est-ce que cela signifie qu'il y a des instructions que otool ne peut pas démonter? Ou cela signifie-t-il que certaines instructions de montage ont une longueur différente des instructions réelles (de la machine)?

Merci!

Répondre

3

Certaines instructions d'assemblage ont simplement une longueur différente des instructions réelles (machine).

Par exemple, pushq %rbp est longueur de 1 octet (55), mais testq %rdi,%rdi besoin 3 octets pour représenter (48 85 ff). Ce codage à longueur variable est l'un des suivants: the characteristic of x86(-64). Certaines instructions peuvent avoir une longueur de 15 octets.

Ici, il n'y a rien de mal avec otool.

Questions connexes