2010-08-22 5 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은 (48 85 ff)을 나타내는 데 3 바이트가 필요합니다. 이 가변 길이 인코딩은 the characteristic of x86(-64) 중 하나입니다. 일부 명령어는 15 바이트까지 가능합니다.

otool 여기에 문제가 없습니다.

관련 문제