2007年08月06日

Universal Binary【ユニバーサルバイナリ】

【属性】Technology
【開発・提供】Apple(アップルジャパン)
【関連Link】
Created Date:07/08/06
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、アプリケーションバイナリインターフェイス)」のハンドリング
等、命令レベルにおける互換性はない(「Rosetta」によるバイナリ変換には、エンディアンを統一するプロセスが含まれる)。また「Cocoa」フレームワークはエンディアンの相違を透過的に吸収するが、許容限度が低いグラフィックAPI、及び「External C(外部C)」「C++」APIを使用する際には注意が必要。カスタムリソースを使用する「Carbon」フレームワークは、エンディアン処理を適切に行うべくして再編成する必要が生じるケースもある(「Metrowerks CodeWarrior」にて作成されたCarbonアプリケーションは「Xcode 2.1」以降に移行後に然るべき調整と再コンパイルが必要となる)。

タグ:apple Mac OS X
posted by Flipper at 21:00 | TrackBack(0) | 【U】
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/50501583

この記事へのトラックバック