/ bin / ls 이진의 홀수 CPU 유형


2

방금 Charlie Miller와 Dino Dai Zovi의 Mac Hacker 's Handbook으로 시작하여 튜토리얼을 진행했습니다. 여기에는 'otool'과 같은 정보를 얻는 것이 포함됩니다

otool -f \bin\ls
Fat headers
fat_magic 0xcafebabe
nfat_arch 2
architecture 0
    cputype 16777223
    cpusubtype 3
    capabilities 0x80
    offset 4096
    size 39600
    align 2^12 (4096)
architecture 1
    cputype 7
    cpusubtype 3
    capabilities 0x0
    offset 45056
    size 35632
    align 2^12 (4096)

나는 cputype/usr/include/mach/machine.h에서 처음 으로 무언가를 찾으려고 했지만 아무것도 찾지 못했습니다. 분명히 뭔가 빠졌습니다.

답변:


5

cputype16777223은 "x86 64"(64 비트 모드)입니다. 7은 "i386"(32 비트 모드)입니다. 또한 16777223 == 0x1000007이므로 비트 24는 "64 비트"를 의미합니다.

시작하기에 합리적 인 것처럼 보이는 /usr/include/mach/machine.h(으로 지적 됨)을 살펴보면 …/mach-o/fat.h다음을 찾을 수 있습니다.

⋮
typedef integer_t       cpu_type_t;
⋮
#define CPU_ARCH_ABI64  0x01000000              /* 64 bit ABI */
⋮
#define CPU_TYPE_X86            ((cpu_type_t) 7)
#define CPU_TYPE_I386           CPU_TYPE_X86            /* compatibility */
#define CPU_TYPE_X86_64         (CPU_TYPE_X86 | CPU_ARCH_ABI64)
⋮
#define CPU_TYPE_POWERPC                ((cpu_type_t) 18)
#define CPU_TYPE_POWERPC64              (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
⋮

물론 명령에 -v옵션을 추가 otool하여 기호 값을 표시 할 수도 있습니다.

% otool -vf /bin/ls
Fat headers
fat_magic FAT_MAGIC
nfat_arch 2
architecture x86_64
    cputype CPU_TYPE_X86_64
    cpusubtype CPU_SUBTYPE_X86_64_ALL
    capabilities CPU_SUBTYPE_LIB64
    offset 4096
    size 39600
    align 2^12 (4096)
architecture i386
    cputype CPU_TYPE_I386
    cpusubtype CPU_SUBTYPE_I386_ALL
    capabilities 0x0
    offset 45056
    size 35632
    align 2^12 (4096)

고마워 파일을 볼 때 16 진수 값으로 정의를 완전히 간과했습니다. 인수에 대한 힌트를 다시 한 번 감사드립니다 :-)
er4z0r

1

내가 알 수있는 한 인텔 FORTRAN 컴파일 객체는 cputype 16777223을 사용하지만 gcc 컴파일 객체는 cputype 7을 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.