| Mach-O | |
|---|---|
| Расширение |
.без расширения, , , |
| Разработчик | Университет Карнеги — Меллон/Apple Inc. |
| Последний выпуск |
|
| Тип формата | двоичный, исполняемый, объектный, динамическая библиотека, дамп памяти |
| Содержит | исполняемый код архитектур 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.
Заголовок файла
[править | править код]| Смещение | Байты | Описание |
|---|---|---|
| 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 |
Примечания
[править | править код]Ссылки
[править | править код]Mach-O(5)— страница справки man по форматам файлов Darwin и Mac OS X (англ.)- Mach Object Files (документация NeXTSTEP)
