2010-08-22 35 views
1

對不起,如果這是一個真正的小問題。我使用otool拆解文件,這是我很感興趣的一個方法的結果:爲什麼otool的結果的第一列不連續?

_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 

正如你可以看到,第一列是不連續的。這是否意味着有一些說明,otool不能反彙編?或者這是否意味着某些彙編指令只有實際(機器)指令的不同長度?

謝謝!

回答

3

某些彙編指令只是實際(機器)指令的長度不同。

例如,pushq %rbp是1個字節長(55),但需要testq %rdi,%rdi 3個字節來表示(48 85 ff)。該可變長度編碼是the characteristic of x86(-64)之一。一些指令可能長達15個字節。

otool這裏沒有錯。

相關問題