Maço - Mach-O

Maço
Mac OS X Executable Binary simgesi
Dosya adı uzantısı
Yok, , .dylib, .bundle
Tekdüzen Tip Tanımlayıcı (UTI)com.apple.mach-o-binary
Tarafından geliştirilmişCarnegie Mellon Üniversitesi, Apple Inc.
Biçim türüİkili, çalıştırılabilir, nesne, paylaşılan kitaplıklar, çekirdek dökümü
İçin konteynerKOL, SPARC, PA-RISC, PowerPC ve x86 çalıştırılabilir kod, bellek görüntüsü dökümleri

Maçokısaltması Mach nesne dosya biçimi, bir dosya formatı için çalıştırılabilir dosyalar, nesne kodu, paylaşılan kitaplıklar, dinamik olarak yüklenen kod ve çekirdek dökümleri. Yerine a.out Mach-O daha fazlasını sunar uzayabilirlik ve içindeki bilgilere daha hızlı erişim sembol tablosu.

Mach-O, temel alınan çoğu sistem tarafından kullanılır. Mach çekirdeği. Sonraki adım, Mac os işletim sistemi, ve iOS yerel yürütülebilir dosyalar, kitaplıklar ve nesne kodu için bu biçimi kullanan sistemlerin örnekleridir.

Mach-O dosya düzeni

Her Mach-O dosyası, bir Mach-O başlığından, ardından bir dizi yükleme komutundan ve ardından her biri 0 ile 255 arasında bölüm içeren bir veya daha fazla bölümden oluşur. Mach-O, REL kullanır yer değiştirme sembollere referansları işlemek için format. Mach-O sembolleri ararken iki seviyeli ad alanı Her sembolü bir 'nesne / sembol adı' çiftine kodlayan ve daha sonra önce nesne ve sonra sembol adı tarafından doğrusal olarak aranan.[1]

Temel yapı — dosyanın başka yerlerindeki veri sayfalarına başvuran değişken uzunluklu "yükleme komutlarının" listesi[2]- çalıştırılabilir dosya biçiminde de kullanıldı Aksan.[kaynak belirtilmeli ] Accent dosya formatı sırayla, Baharat Lisp.[kaynak belirtilmeli ]

Çok mimarili ikili dosyalar

Altında Sonraki adım, AÇIK ADIM, Mac os işletim sistemi, ve iOS, birden fazla Mach-O dosyası bir çok mimarili ikili. Bu, tek bir ikili dosyanın çoklu komut seti mimarilerini desteklemek için kod içermesine izin verir. Örneğin, iOS için çok mimarili bir ikili program 6 komut seti mimarisine sahip olabilir, yani ARMv6 (for iPhone, 3G ve 1. / 2. nesil ipod touch ), ARMv7 (için Iphone 3gs, 4, 4S, iPad, 2, 3. nesil ve 3. – 5. nesil iPod touch), ARMv7'ler ( iPhone 5 ve iPad (4. nesil) ), ARMv8 (için iphone 5s ), x86 (32 bit makinelerde iPhone simülatörü için) ve x86_64 (64 bit simülatör).[kaynak belirtilmeli ]

Minimum işletim sistemi sürümü

Girişiyle Mac OS X 10.6 platform Mach-O dosyası, 10.6 veya sonraki sürümleri çalıştıran bir bilgisayarda derlenen ikili dosyaların (varsayılan olarak) yalnızca Mac OS X 10.6 veya sonraki sürümleri çalıştıran bilgisayarlarda yürütülebilir olmasına neden olan önemli bir değişiklik geçirdi. Aradaki fark, dinamik bağlayıcı, önceki Mac OS X sürümlerinde anlamıyor. Mach-O formatındaki bir diğer önemli değişiklik, Bağlantı Düzenleme tablolarının (__LINKEDIT bölümünde bulunur) işlevindeki değişikliktir. 10.6'da bu yeni Bağlantı Düzenleme tabloları, kullanılmayan ve gereksiz bilgi bitleri kaldırılarak sıkıştırılır, ancak Mac OS X 10.5 ve önceki sürümler bu yeni Bağlantı Düzenleme tablo formatını okuyamaz. Geriye dönük uyumlu çalıştırılabilirler yapmak için bağlayıcı bayrağı "-mmacosx-version-min =" kullanılabilir.

Diğer uygulamalar

Bazı sürümleri NetBSD bazı Mac OS 10.3 ikili dosyalarının çalıştırılmasına izin veren ikili uyumluluğun bir parçası olarak Mach-O desteği eklenmiştir.[3][4]

Linux için, bir Mach-O yükleyici Shinichiro Hamaji tarafından yazılmıştır.[5] 10.6 ikili dosya yükleyebilir. Bu yükleyiciye dayalı daha kapsamlı bir çözüm olarak, Darling Projesi OS X uygulamalarının Linux üzerinde çalışmasına izin veren eksiksiz bir ortam sağlamayı amaçlamaktadır.

İçin Yakut programlama dili, ruby-macho[6] kütüphane, Mach-O ikili ayrıştırıcısının ve düzenleyicisinin bir uygulamasını sağlar.

Ayrıca bakınız

Referanslar

  1. ^ "OS X ABI Mach-O Dosya Biçimi Referansı". Apple Inc. 4 Şubat 2009. Arşivlenen orijinal 19 Ağustos 2009. Alındı 27 Nisan 2016.
  2. ^ Avadis Tevanian, Jr.; Richard F. Rashid; Michael W. Young; David B. Golub; Mary R. Thompson; William Bolosky; Richard Sanzi. "Mach Altında Paylaşılan Bellek ve Bellek Eşlemeli Dosyalar için Unix Arayüzü": 8. Alıntı dergisi gerektirir | günlük = (Yardım)
  3. ^ Emmanuel Dreyfus (20 Haziran 2006). "Mach ve Darwin ikili uyumluluğu [sic] NetBSD / powerpc ve NetBSD / i386 için ". Alındı 18 Ekim 2013.
  4. ^ Emmanuel Dreyfus (Eylül 2004), NetBSD'de Mac OS X ikili uyumluluğu: zorluklar ve uygulama (PDF)
  5. ^ Shinichiro Hamaji, Linux için Mach-O yükleyici - yazdım ...
  6. ^ William Woodruff, Mach-O dosyalarını ayrıştırmak için saf Ruby kütüphanesi.

Dış bağlantılar