Assembly 为什么otool的第一列结果不是连续的?

Assembly 为什么otool的第一列结果不是连续的?,assembly,otool,Assembly,Otool,如果这真的是个愚蠢的问题,我很抱歉。我正在使用otool反汇编一个文件,这是我感兴趣的一种方法的结果: _KTDriverIsRunning: 0000000000000d98 pushq %rbp 0000000000000d99 movq %rsp,%rbp 0000000000000d9c xorl %eax,%eax 0000000000000d9e testq %rdi,%rdi 0000000000000da1 je 0x00000dac 0000000000000da3 xorl

如果这真的是个愚蠢的问题,我很抱歉。我正在使用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不能拆卸的?或者,这是否意味着某些汇编指令的实际(机器)指令长度不同


谢谢大家!

某些装配指令的实际(机器)指令长度不同

例如,
pushq%rbp
的长度为1字节(
55
),但
testq%rdi,%rdi
需要3个字节来表示(
48 85 ff
)。这种可变长度编码是其中之一。有些指令可能长达15字节

这里的
otool
没有问题