www.wikidata.de-de.nina.az
Universal Binaries auf deutsch in etwa universelle Binardateien oft abgekurzt mit UB sind im Apple Jargon ausfuhrbare Dateien d h Programme die nativ ausfuhrbare Maschinensprache fur mehr als eine Prozessorarchitektur enthalten Apple hat Universal Binaries bei der Umstellung von PowerPC auf Intel x86 Prozessoren ab 2005 verwendet Die Technik wurde zudem in Xcode integriert damit erstellte und entsprechend kompilierte Applikationen konnten nativ sowohl auf PowerPC als auch auf Intel Macs laufen Bei der Umstellung von Intel auf Arm seit 2020 wird mit Universal Binary 2 dieselbe Technik noch einmal verwendet und ebenfalls in Xcode integriert Apples Logo fur Universal Binary Inhaltsverzeichnis 1 Geschichte 2 Umsetzung 3 Technisches 4 Klassische Fat Binaries 5 Trivia 6 Weblinks 7 EinzelnachweiseGeschichte BearbeitenUniversal Binaries basieren auf dem mit MACH Mitte der 1980er Jahre entworfenen Mach O Binarformat Unter NeXTStep ab 1987 auf der Basis von Mach Version 2 entwickelt wurde das Format auf die vom Betriebssystem ab NeXTStep 3 1 von 1993 unterstutzten Architekturen m68k IA 32 i386 32 Bit x86 PA RISC und SPARC erweitert und Multi Architecture Binaries genannt Auch Apple hatte ab 1994 bereits eine Umstellung der Prozessorarchitektur unter dem Betriebssystem System 7 von der m68k auf die PowerPC Architektur durchgefuhrt und dabei mit Fat Binaries ein ahnliches Konzept umgesetzt Das verwendete Binarformat ist jedoch nicht mit dem von Mach O verwandt Apple erwarb 1997 NeXT samt dem von NeXTSTEP in OPENSTEP umbenannten Mach Betriebssystem und portierte es im Project Rhapsody auf die von Apple damals genutzte PowerPC Plattform Rhapsody hatte das klassische Mac OS vollstandig ersetzen sollen war jedoch ein vollkommen anderes Betriebssystem und mit bestehenden Mac OS Programmen nicht kompatibel Als Rhapsody von den Herstellern wichtiger Anwendungssoftware nicht angenommen wurde portierte Apple grosse Teile der Mac OS Programmierschnittstelle unter dem Namen Carbon auf das nun von Rhapsody in Mac OS X umbenannte neue Betriebssystem Das Mach O Format besteht seither mit Mac OS X weiter wurde anfangs jedoch nur mehr fur eine einzige Architektur verwendet die PowerPC Architektur 2005 mit der Umstellung von der PowerPC auf die IA 32 Architektur griff Apple die ohnehin noch vorhandene Technik der Multi Architecture Binaries wieder auf Auf der Worldwide Developers Conference WWDC wurde es umbenannt in Universal Binaries der Offentlichkeit vorgestellt Apple integrierte die Technik in die eigene Entwicklungsumgebung Xcode um es den Entwicklern von Anwendungsprogrammen zu erleichtern nativen Binarcode fur beide Architekturen in ihre Softwareprodukte zu integrieren In diesem Zuge war es auch moglich sowohl 32 als auch 64 Bit Binarcode fur dieselbe Architektur in einem Universal Binary unterzubringen also sowohl 32 Bit und 64 Bit x86 als auch 32 Bit und 64 Bit PowerPC Nach dem erfolgten Ubergang auf IA 32 32 Bit x86 bzw x64 64 Bit x86 wurde die Unterstutzung fur PowerPC x86 Universal Binaries wieder aus Xcode entfernt iOS unterstutzt Universal Binaries ebenfalls wodurch Mobile Apps fur verschiedene Arm Architekturen ermoglicht werden Umsetzung BearbeitenUm Universal Binaries zu verwenden muss der Kernel eines Betriebssystems mit dem von NeXT erweiterten Mach O Binarformat umgehen konnen Gegenuber dem einfachen Mach O Format sind Multi Architecture Binaries in einander gekapselte Mach O Dateien mit zusatzlichen Metadaten Die Header Struktur von Mach O selbst wurde dabei nicht verandert aber um zusatzliche Flags erweitert 1 Architektur Magic Nummern MH MAGIC reprasentiert Binarcode in Big Endian Byte Reihenfolge in 32 Bit MH CIGAM steht fur Binarcode in Little Endian Byte Reihenfolge in 32 Bit MH MAGIC 64 reprasentiert Binarcode in Big Endian Byte Reihenfolge in 64 Bit MH CIGAM 64 steht fur Binarcode in Little Endian Byte Reihenfolge in 64 Bit CPU Typ beispielsweise CPU TYPE POWERPC fur 32 Bit PowerPC CPU TYPE POWERPC64 fur 64 Bit PowerPC CPU TYPE I386 fur 32 Bit x86 bzw 32 Bit IA 32 ab dem Intel 80386 darum i386 CPU TYPE X86 64 fur 64 Bit x86 bzw x64 auch x86 64 64 Bit IA 32 Eine Universal Binary wird beim Ausfuhren vom Betriebssystem als solche an ihrem Header erkannt wodurch das Betriebssystem anschliessend anhand der vorhandenen Architektur den jeweiligen ausfuhrbaren Code abarbeiten kann Noch heute enthalten Open Source Bestandteile von macOS Hinweise auf m68k SPARC und weitere CPUs 2020 wurden 17 verschiedene Architekturen gezahlt 2 Dieser Vorgang ermoglicht es nun eine Anwendung sowohl auf einem Apple Computer mit PowerPC als auch mit Intel Architektur Universal Binary von 2005 oder mit Intel als auch mit ARM Architektur Universal Binary von 2020 ohne Geschwindigkeitsverlust auszufuhren Technisches BearbeitenRealisiert werden Universal Binaries uber das Binarformat Mach O das im Gegensatz zum ELF Format welches unter Linux und anderen unixahnlichen Betriebssystemen verbreitet ist Binarcode fur mehrere Architekturen enthalten kann Mit dem Tool lipo 3 aus Xcode und objdump 4 aus den GNU Binutils kann man die Binarcodes eines Universal Binaries auslesen Auch a href File html title File file a 5 gibt einen Uberblick uber die enthaltenen Architekturen Der universale Safari Webbrowser enthielt ca 2005 2006 sowohl Code fur Intel i386 als auch fur PowerPC powerpc common mach o le und mach o be stehen fur die Byte Reihenfolgen Little Endian und Big Endian objdump f Applications Safari app Contents MacOS Safari In archive Applications Safari app Contents MacOS Safari Applications Safari app Contents MacOS Safari file format mach o le architecture i386 flags 0x000001ff HAS RELOC EXEC P HAS LINENO HAS DEBUG HAS SYMS HAS LOCALS DYNAMIC WP TEXT D PAGED start address 0x0000000000000000 Applications Safari app Contents MacOS Safari file format mach o be architecture powerpc common flags 0x000001ff HAS RELOC EXEC P HAS LINENO HAS DEBUG HAS SYMS HAS LOCALS DYNAMIC WP TEXT D PAGED start address 0x0000000000061830 Es gibt auch Programme die in zwei getrennten Versionen Intel Binary und PPC Binary angeboten werden hier muss man sich sofern man nicht doppelt herunterladen mochte bereits beim Herunterladen fur die richtige Datei entscheiden was jedoch den Vorteil kleinerer Dateien hat Bei Programmen fur nur eine Architektur wird entsprechend nur ein Binarcode angezeigt objdump f Applications VLC app Contents MacOS VLC Applications VLC app Contents MacOS VLC file format mach o le architecture i386 flags 0x000001ff HAS RELOC EXEC P HAS LINENO HAS DEBUG HAS SYMS HAS LOCALS DYNAMIC WP TEXT D PAGED start address 0x0000000000000000 Ohne zusatzliche Programme lasst sich der Binarcode mit dem Befehl a href File html title File file a auslesen also fur das obige Beispiel Safari file Applications Safari app Contents MacOS Safari Klassische Fat Binaries BearbeitenSchon beim Wechsel von der Motorola 68k auf die PowerPC Prozessorarchitektur verwendete Apple das Konzept in derselben Datei Code fur mehrere Prozessoren unterzubringen Damals wurde der Begriff Fat Binary verwendet Realisiert wurde dies unter klassischem Mac OS jedoch nicht als Mach O Datei sondern als das eigentlich modernere PEF Dateiformat Preferred Executable Format Dabei lag der m68k Code in der resource fork und der PowerPC Code in der data fork Trivia BearbeitenTheoretisch ist es moglich weit mehr als zwei Architekturen in eine sogenannte Super Universal Binary zu packen sodass das resultierende Programm anschliessend auf zahlreichen Architekturen nativ lauffahig ist 2 Praktisch wurde das z B bei der Umstellung von PowerPC auf Intel fur bis zu vier Architekturen umgesetzt 6 Weblinks BearbeitenApple Universal Programme Einzelnachweise Bearbeiten William Woodruff Mach O Internals PDF 307 KB 10 Februar 2016 S 12 abgerufen am 14 Juli 2020 englisch a b Ben Schwan macOS Universal Binaries mit ARM Intel und PowerPC In Heise online 14 Juli 2020 Abgerufen am 14 Juli 2020 lipo 1 manpage im Quelltext englisch abgerufen am 21 Juli 2015 objdump 1 manpage englisch abgerufen am 21 Juli 2015 file 1 manpage englisch abgerufen am 21 Juli 2015 LAME 3 98 4 Universal for Mac OSX 10 5 englisch LAME als Beispiel fur eine Universal Binary fur vier Architekturen PowerPC PowerPC64 i386 und x86 64 Abgerufen von https de wikipedia org w index php title Universal Binary amp oldid 226694224