Universal Binary

Universal Binary

Universal Binaries (auf deutsch in etwa universelle Binärdatei) sind im Apple-Jargon ausführbare Dateien (d. h. Programme), die nativ sowohl auf einem PowerPC-basierten Apple Computer als auch auf einem x86 (Intel)-basierenden Apple Computer lauffähig sind. Eine Universal Binary enthält somit zwei verschiedene Arten des ausführbaren Codes einer Anwendung; zum einen enthält sie den ausführbaren Code für PowerPC-Prozessoren und zum anderen den ausführbaren Code für Intel-Prozessoren (in derselben Programmdatei).

Eine Universal Binary wird beim Ausführen vom Betriebssystem als solche an ihrem Header erkannt, wodurch das Betriebssystem anschließend anhand der vorhandenen Architektur den jeweiligen ausführbaren Code abarbeiten kann.

Dieser Vorgang ermöglicht es nun, eine Anwendung sowohl auf einem Apple Computer mit PowerPC-Architektur als auch auf einem Apple Computer mit Intel-Architektur ohne Geschwindigkeitsverlust auszuführen.

Die Universal Binary wurde auf der Worldwide Developers Conference (WWDC) 2005 eingeführt, um den Übergang zwischen der bestehenden PowerPC-Architektur zu Intel-basierenden Systemen zu erleichtern. Der Ursprung der Universal Binaries geht aber auf das Mach-O-Fat-Format zurück, das bereits in NextStep und OpenStep verwendet wurde, da diese Betriebssysteme für unterschiedliche Architekturen portiert wurden. Noch heute enthalten OpenSource-Bestandteile von Mac OS X Hinweise auf M68k, SPARC und weitere CPUs.

Technisches

Realisiert werden Universal Binaries über das Binärformat Mach-O, das im Gegensatz zum ELF-Format, welches unter Linux und anderen unixähnlichen Betriebssystemen verbreitet ist, Binärcode für mehrere Architekturen enthalten kann. Mit dem Tool objdump aus den GNU Binutils kann man die Binärcodes eines Universal Binaries auslesen.

Das universale Safari enthält sowohl Code für Intel (i386) als auch für PowerPC (powerpc:common). „mach-o-le“ und „mach-o-be“ stehen für 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 bereits beim Download für die richtige Datei entscheiden, was jedoch den Vorteil kleinerer Dateien hat.

Bei Programmen für nur eine Architektur wird entsprechend nur ein Binärcode 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 zusätzliche Programme lässt sich der Binärcode mit dem Befehl file auslesen. Also für das obige Beispiel Safari: file /Applications/Safari.app/Contents/MacOS/Safari.

Hintergrund

Schon beim Wechsel von der Motorola-68k- auf die PowerPC-Prozessorarchitektur verwendete Apple das Konzept, in derselben Datei Code für mehrere Prozessoren unterzubringen. Damals wurde der Begriff Fat Binary verwendet. Realisiert wurde es jedoch nicht als Mach-O-Datei, sondern als das eigentlich modernere PEF-Dateiformat (Preferred Executable Format). Dabei lag der 68k-Code in der resource fork und der PPC-Code in der data fork.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Universal binary — A universal binary is, in Apple parlance, an executable file or application bundle that runs natively on either PowerPC or x86 (Intel) based Macintosh computers. It was introduced at the 2005 WWDC as a means to ease the transition from the… …   Wikipedia

  • Universal Binary — Universal binaries Pour les articles homonymes, voir Universal. Universal Binaries ou UB est la façon par laquelle Apple désigne un fichier binaire qui peut s exécuter nativement sur les processeurs Intel et PowerPC. Universal Binaries a été… …   Wikipédia en Français

  • Universal binary — Universal binaries Pour les articles homonymes, voir Universal. Universal Binaries ou UB est la façon par laquelle Apple désigne un fichier binaire qui peut s exécuter nativement sur les processeurs Intel et PowerPC. Universal Binaries a été… …   Wikipédia en Français

  • Universal — may refer to:* The Universe, defined as the summation of all particles and energy that exist and the space time in which all events occurAs a modifier* Universal (metaphysics) * Universal joint, a machine part consisting of a pair of hinges… …   Wikipedia

  • Universal Binaries — Apple Universal Binary Logo Universal Binaries (auf deutsch in etwa universelle Binärdatei) sind im Apple Jargon ausführbare Dateien (d. h. Programme), die nativ sowohl auf einem PowerPC basierten Apple Computer als auch auf einem x86… …   Deutsch Wikipedia

  • Universal algebra — (sometimes called general algebra) is the field of mathematics that studies algebraic structures themselves, not examples ( models ) of algebraic structures.For instance, rather than take particular groups as the object of study, in universal… …   Wikipedia

  • Binary economics — is a heterodox theory of economics that endorses both private property and a free market but proposes significant reforms to the banking system. The aim of binary economics is to ensure that all individuals receive income from their own… …   Wikipedia

  • Binary Research — Ltd was a company founded in Auckland, New Zealand by Murray Haszard in 1991 after the sale of his previous company, B32 Software.Binary Research initially considered developing competitors to the file transfer programs Blast and Laplink. The… …   Wikipedia

  • Universal Networking Language — (UNL) is a declarative formal language specifically designed to represent semantic data extracted from natural language texts. It can be used as a pivot language in interlingual machine translation systems or as a knowledge representation… …   Wikipedia

  • Universal code (data compression) — In data compression, a universal code for integers is a prefix code that maps the positive integers onto binary codewords, with the additional property that whatever the true probability distribution on integers, as long as the distribution is… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”