Mach-O - Mach-O

Mach-O
Mac OS X Bajariladigan Ikkilik belgisi
Fayl nomi kengaytmasi
yo'q, .o, .dylib, .bundle
Bir xil turdagi identifikator (UTI)com.apple.mach-o-ikkilik
Tomonidan ishlab chiqilganKarnegi Mellon universiteti, Apple Inc.
Format turiIkkilik, bajariladigan, ob'ekt, umumiy kutubxonalar, yadro chiqindisi
Konteyner uchunARM, SPARC, PA-RISC, PowerPC va x86 bajariladigan kod, xotira tasviri chiqindilari

Mach-O, qisqasi Mach ob'ekt fayl formati, a fayl formati uchun bajariladigan fayllar, ob'ekt kodi, umumiy kutubxonalar, dinamik ravishda yuklangan kod va yadro chiqindilari. Buning o'rnini bosuvchi a.out formatida, Mach-O ko'proq taklif qiladi kengayish va ma'lumotlarga tezroq kirish belgilar jadvali.

Mach-O-ga asoslangan tizimlarning aksariyati foydalanadi Mach yadrosi. Keyingi qadam, macOS va iOS ushbu formatni mahalliy bajariladigan fayllar, kutubxonalar va ob'ekt kodlari uchun ishlatadigan tizimlarning namunalari.

Mach-O faylining joylashuvi

Har bir Mach-O fayli bitta Mach-O sarlavhasidan tashkil topgan, so'ngra bir qator yuklash buyruqlari, so'ngra bir yoki bir nechta segmentlar mavjud bo'lib, ularning har biri 0 dan 255 gacha bo'limlarni o'z ichiga oladi. Mach-O REL-dan foydalanadi ko'chirish belgilarga havolalarni boshqarish uchun format. Mach-O belgilarini qidirishda ikki darajali foydalaniladi ism maydoni har bir belgini "ob'ekt / belgi nomi" juftligiga kodlaydi, so'ngra chiziqli ravishda qidiriladi, avval ob'ekt va keyin belgi nomi.[1]

Asosiy tuzilma - o'zgaruvchan uzunlikdagi "yuklash buyruqlari" ro'yxati, ular fayllarning boshqa joylarida ma'lumot sahifalariga murojaat qilishadi[2]- uchun bajariladigan fayl formatida ham ishlatilgan Urg'u.[iqtibos kerak ] Accent fayl formati o'z navbatida g'oyaga asoslangan edi Spice Lisp.[iqtibos kerak ]

Ko'p arxitektura binarlari

Ostida Keyingi qadam, OPENSTEP, macOS va iOS, bir nechta Mach-O fayllari a-da birlashtirilishi mumkin ko'p arxitektura ikkilik. Bu bitta ikkilik faylga bir nechta ko'rsatmalar to'plamining arxitekturasini qo'llab-quvvatlovchi kodni o'z ichiga oladi. Masalan, iOS uchun ko'p arxitektura binarida 6 ta buyruqlar to'plami arxitekturasi bo'lishi mumkin, ya'ni ARMv6 (for iPhone, 3G va 1/2-avlod iPod touch ), ARMv7 (uchun iPhone 3GS, 4, 4S, iPad, 2, 3-avlod va 3-5 avlod iPod touch), ARMv7s (uchun iPhone 5 va iPad (4-avlod) ), ARMv8 (uchun iPhone 5S ), x86 (32-bitli mashinalarda iPhone simulyatori uchun) va x86_64 (64-bitli simulyator).[iqtibos kerak ]

Minimal OS versiyasi

Kirish bilan Mac OS X 10.6 platforma Mach-O fayli muhim modifikatsiyaga uchradi, bu esa 10.6 yoki undan keyingi versiyalari bilan ishlovchi kompyuterlarda tuzilgan ikkilik fayllarni (sukut bo'yicha) faqat Mac OS X 10.6 yoki undan keyingi versiyalarida ishlaydigan kompyuterlarda bajarilishini ta'minlaydi. Farq yuk buyruqlaridan kelib chiqadi dinamik bog'lovchi, oldingi Mac OS X versiyalarida, tushunmaydi. Mach-O formatidagi yana bir muhim o'zgarish - bu bog'lanishni tahrirlash jadvallari (__LINKEDIT bo'limida joylashgan) funktsiyasining o'zgarishi. 10.6-da ushbu yangi tahrirlash jadvallari foydalanilmagan va keraksiz qismlarni olib tashlash orqali siqiladi, ammo Mac OS X 10.5 va undan oldingi versiyalar ushbu yangi tahrirlash jadvalining formatini o'qiy olmaydi. Orqaga mos bajariladigan fayllarni yaratish uchun "-mmacosx-version-min =" bog'lovchi bayrog'idan foydalanish mumkin.

Boshqa dasturlar

Ning ba'zi versiyalari NetBSD ba'zi bir Mac OS 10.3 ikkilik fayllarini bajarishga imkon beradigan ikkilik muvofiqlikni amalga oshirishning bir qismi sifatida Mach-O yordami qo'shildi.[3][4]

Linux uchun Mach-O yuklagichi Shinichiro Hamaji tomonidan yozilgan[5] 10.6 ikkilikni yuklashi mumkin. Ushbu yuklagichga asoslangan yanada keng echim sifatida Darling loyihasi OS X dasturlarining Linuxda ishlashiga imkon beradigan to'liq muhitni ta'minlashga qaratilgan.

Uchun Yoqut dasturlash tili, ruby-macho[6] kutubxona Mach-O ikkilik ajraluvchisi va muharririning bajarilishini ta'minlaydi.

Shuningdek qarang

Adabiyotlar

  1. ^ "OS X ABI Mach-O fayl formati ma'lumotnomasi". Apple Inc. 2009 yil 4 fevral. Arxivlangan asl nusxasi 2009 yil 19 avgustda. Olingan 27 aprel, 2016.
  2. ^ Avadis Tevanyan, kichik; Richard F. Rashid; Maykl V. Yang; Devid B. Golub; Meri R. Tompson; Uilyam Boloskiy; Richard Sanzi. "Mach ostida umumiy xotira va xotira xaritasi qo'yilgan fayllar uchun Unix interfeysi": 8. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  3. ^ Emmanuel Dreyfus (2006 yil 20-iyun). "Mach va Darvin ikkilik mosligi [sic] NetBSD / powerpc va NetBSD / i386 uchun ". Olingan 18 oktyabr, 2013.
  4. ^ Emmanuel Dreyfus (2004 yil sentyabr), NetBSD-da Mac OS X ikkilik muvofiqligi: qiyinchiliklar va amalga oshirish (PDF)
  5. ^ Shinichiro Xamaji, Linux uchun Mach-O loader - men yozdim ...
  6. ^ Uilyam Vudruff, Mach-O fayllarini tahlil qilish uchun toza Ruby kutubxonasi.

Tashqi havolalar