VOOZH about

URL: https://ru.wikipedia.org/wiki/Mach-O

⇱ Mach-O — Википедия


Перейти к содержанию
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 29 сентября 2025 года; проверки требуют 2 правки.
Mach-O
Расширение .без расширения, , ,
Разработчик Университет Карнеги — Меллон/Apple Inc.
Последний выпуск
  • 64bit
Тип формата двоичный, исполняемый, объектный, динамическая библиотека, дамп памяти
Содержит исполняемый код архитектур ARM, SPARC, PA-RISC, PowerPC, дампы памяти.

Mach-O (сокращение от Mach object) — формат исполняемых и объектных файлов, динамических библиотек и дампов памяти, использующийся в операционных системах Apple Inc. и некоторых других. Был введён вместо формата a.out и предоставляет большие возможности для расширяемости и более быстрый доступ к информации в таблице символов.

Mach-O используется в большинстве систем, основанных на ядре Mach, например NeXTSTEP, iOS и Mac OS X. В GNU Hurd, основанном на микроядре GNU Mach, в качестве стандартного формата двоичных файлов используется ELF, а не Mach-O.

Заголовок файла

[править | править код]
Заголовок файла Mach-O[1]
Смещение Байты Описание
0 4 Магическое число
4 4 Тип ЦП
8 4 Подтип ЦП
12 4 Тип файла
16 4 Количество команд загрузки
20 4 Размер команд загрузки
24 4 Флаги
28 4 Зарезервировано (только для 64-бит)

Магическое число для 32-битного кода — 0xfeedface, а для 64-битных архитектур — 0xfeedfacf.

Зарезервированное значение присутствует только в 64-битных файлах Mach-O. Оно зарезервировано для будущего использования или расширения 64-битного заголовка.

Тип ЦП указывает архитектуру набора инструкций для кода. Если файл предназначен для 64-битной версии архитектуры набора инструкций, значение типа ЦП имеет установленный бит 0x01000000. Если файл предназначен для 64-битной версии архитектуры набора инструкций, но с 32-битными указателями, значение типа ЦП имеет установленный бит 0x02000000.

Значения типа ЦП следующие:[2]

Тип ЦП
Значение Тип ЦП
0x00000001 VAX
0x00000002 ROMP
0x00000004 NS32032
0x00000005 NS32332
0x00000006 MC680x0
0x00000007 x86
0x00000008 MIPS
0x00000009 NS32352
0x0000000B HP-PA
0x0000000C ARM
0x0000000D MC88000
0x0000000E SPARC
0x0000000F i860 (big-endian)
0x00000010 i860 (little-endian) или, возможно, DEC Alpha[3]
0x00000011 RS/6000
0x00000012 PowerPC / MC98000
0x00000018 RISC-V

Примечания

[править | править код]
Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её.
Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (26 мая 2013)