Почему первый столбец результатов отоол не является непрерывным? - PullRequest
1 голос
/ 23 августа 2010

Извините, если это действительно нубский вопрос.Я использую 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 не может разобрать?Или это означает, что некоторые инструкции по сборке имеют разную длину фактических (машинных) инструкций?

Спасибо!

1 Ответ

3 голосов
/ 23 августа 2010

Некоторые инструкции по сборке имеют разную длину фактических (машинных) инструкций.

Например, pushq %rbp имеет длину 1 байт (55), но testq %rdi,%rdi требуется 3 байта для представления (48 85 ff).Эта кодировка переменной длины является одной из характеристик x86 (-64) .Некоторые инструкции могут быть длиной до 15 байт.

Здесь нет ничего плохого в otool.

...