【開発・提供】Apple(アップルジャパン)
【関連Link】
Created Date:07/08/06
Modified Date:
【解説】Modified Date:
MacintoshコンピュータにおけるPowerPC→Intelアーキテクチャへの移行に際して、Appleがデベロッパ各位に提唱した移行支援テクノロジの一つ。Mac OS Xアプリケーションにおける実行形式の一つで「IntelベースMacintosh(Mac OS X for Intel)」「PowerPCベースMacintosh(Mac OS X for PowerPC)」双方におけるネイティブ動作を実現する。単一のバイナリパッケージ(アプリケーションバンドル)中に両アーキテクチャにおいてネイティブ実行可能な命令セット(ネイティブコード)がバンドルされており、Mac OS Xが当該アプリケーション実行時に基盤プロセッサに適合する命令セットを選択実行する事となる。
「Universal Binary」をビルド可能なIDE(Integrated Development Environment、統合開発環境)は「Xcode 2.1」以降に限定されており(2007年8月現在)、「Metrowerks CodeWarrior」等の他環境にて構築されたアプリケーションは、既ソースコードを「Xcode 2.1」以降、「GCC 4.0(GNU Compiler Collection 4.0)」に移行する必要がある(GCCは「Xcode」においてアプリケーションをコンパイル、リンクするために用いるオープンソースのGNUコンパイラコレクション)。コンパイル時には「Architectures to build for:」チェックボックスを用いて「Universal Binary」、或いは「PowerPC」「Intel」の何れかを選択する事となり、Universal Binary生成後に各種リソースの節約等を主目的として不要プラットフォーム用途のコードを削除する事も可能だが、Appleを始めとする各メーカの保証外の作業となる。尚、「Universal Binary」アプリケーションは全ての構成要素がUniversal Binary化されていなければならない。
Mac OS X for Intelには「Rosseta」と称されるPowerPCバイナリの互換性維持を主目的としたPowerPCバイナリトランスレータ(PowerPC実行環境)が実装されており、既存のPowerPCアプリケーション(PowerPCに対するネイティブコードのみをバンドルするバイナリパッケージ)をIntelプロセッサ上にて実行可能な形式に迅速、且つ透過的に変換する役割を果たしている。「CFM(Code Fragment Manager)」「Mach-O」ABI(Application Binary Interface)によるPowerPCバイナリをIntel用コード(x86コード)に適宜変換すべくした「Dynamic Recompilation」と称される変換プロセスがアプリケーション起動時よりバックグラウンドにて自動的に実行されるため、ユーザはアーキテクチャの相違(或いは変換プロセス)等を意識する事なく既存のソフトウェアリソースをシームレスに利用可能となっている(エミュレーションではないため、機能的な制限を受ける事はない)。
尚、PowerPC、Intel、両アーキテクチャ間には、
- 命令アラインメントに関する各種のルール
- エンディアンの相違:「Big Endian(ビッグエンディアン)」「Little Endian(リトルエンディアン)」
- 整数型におけるゼロ除算
- C言語における「ABI(Application Binary Interface、アプリケーションバイナリインターフェイス)」のハンドリング