Assembly 为什么otool的第一列结果不是连续的?
如果这真的是个愚蠢的问题,我很抱歉。我正在使用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
_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
没有问题