Aktuelle Beiträge

Die Grundlagen der Mach-O-Datei



Das primär ausführbare Dateiformat unter MacOS ist das Mach-O-Dateiformat. Fast jedes Programm, das auf einem Mac-Rechner ausführt, ist eine Mach-O-Datei, einschließlich Applications, die vom App Store heruntergeladen werden. Heute lernen wir, wie diese Dateien organisiert sind.

Wie so viele andere Dateiformate fangen Mach-O-Dateien mit einem Header an. Auf diesem Header stehen verschiedene Informationen über die Datei, darunter die Art des Prozessors, die Anzahl von Load-Commands und die gesamte Größe der Load-Commands. Das Format dieses Headers ist typisch, außer einem Merkmal: Die Byte-Reihenfolge passt zu der des Rechners, unter dem die Datei ausführen soll. Das heißt, die Zahlen sind auf x86 / 0x86_64 Prozessoren Little-Endian und auf PowerPC Prozessoren Big-Endian. Dazu gehört auch die magische Zahl. Die Struktur des Headers für 32-Bit Architekturen in C-Syntax ist hier angeführt:

MacOS Universal Binaries



Apple machte vor ein paar Jahren einen wagenden Zug: es stellte seine Laptops und Computer von Intel-x86_64 Prozessoren auf ARM Prozessoren um. Prozessorarchitektur-Änderungen sind eher schwer zu machen; jedes Programm, das auf dem Computer laufen soll, muss für die neue Architektur kompiliert werden. Dieses Verfahren ist für die Erstanbieterprogramme genug Arbeit, aber die Entwickler von Drittanbietern sind dafür bekannt, langsam zu sein. Es kann lang dauern, bis Drittanbieterprogramme auf der neuen Architektur funktionieren. Benutzer hassen es, wenn ihre Software nach einem einfachen Computerupgrade nicht mehr funktioniert.

Aber Apple machte diesen Zug zuvor. Apple hatte einmal seine Computer mit PowerPC Prozessoren ausgerüstet und stellte sie von 2005 bis 2006 auf Intel Prozessoren um. Deshalb hat Apple diesmal ein paar Asse im Ärmel. Eins davon ist «Universal Binaries» (auf Deutsch, universelle Binärdateien), Binärdateien, die auf mehreren Architekturen laufen können. Die meisten universelle …

Wähle eine Sprache:

Switch to English LanguageSwitch to German Language