通用二進制
? ? 通用二進制(Universal binary)是蘋果電腦公司提出的一種程序代碼,使程序能以本地程序的形式運行在使用PowerPC或者英特爾微處理器(x86)的麥金塔電腦上,在同一個程序包中同時為兩種架構提供最理想的性能。硬件方面,蘋果電腦公司已經將其產品線上的所有麥金塔電腦在2006年內轉為英特爾處理器,相對應的軟件方面,蘋果最早是在2005年蘋果電腦全球研發者大會上就發布了通用二進制的內容來適應這種轉換。
? ? 當程序在操作系統中運行后,將自動檢測通用二進制代碼,然后根據使用的架構自動選擇合適的代碼來執行,因此實現無損的本地程序運行速度。
?
概要
? ? 通用二進制代碼有兩種基本類型。一種類型就是簡單提供兩種獨立的二進制代碼,一個用來對應x86架構,一個用來對應PowerPC架構。但是對于不熟悉代碼的普通軟件使用者來說,在購買和使用的時候,可能搞不清二者區別。另外一種類型就是只編寫一個架構的代碼,當另外一種處理環境時讓系統自動調用模擬器運行。這會導致運行速度下降,一般是作為“通用二進制”或者“特別連編二進制”出現之前暫時使用的折衷辦法。(參見Rosetta)
? ? 因為需要儲存多種代碼,通用二進制應用程序通常比單一平臺二進制的程序要大,但是由于兩種架構有共通的非執行資源,所以并不會達到單一版本的兩倍之多。而且由于執行中只調用一部分代碼,運行起來也不需要額外的內存。
? ? 在1990年代中期從68k處理器轉換到PowerPC的時候,蘋果電腦公司使用了一個類似的技術。當時這些雙平臺可執行程序被稱為 "胖二進制(fat binaries)",因為他們文件容量比原來要大。
? ? 目前,蘋果公司的Xcode是唯一一個可以編譯通用二進制代碼的GUI工具。一個使用processor-independence開發的簡單應用程序只需要改動很少的部分就可以實現通用二進制。但是對于那些基于要發揮一種架構特長的復雜程序來說,修改代碼通過連編就是一個比較復雜的工程。 使用其他開發工具制作的應用程序需要額外的修改。正因為這些原因,導致目前英特爾麥金塔電腦和那些第三方制作的通用二進制軟件不能同步的現象。而蘋果在硬件方面的轉換比預定計劃提前了好幾個月,也是造成這種差距的另外一個因素。
? ? 蘋果公司的Xcode 2.4版本將通用二進制的概念進一步推廣,支持創建四架構二進制(對應英特爾和PowerPC中32位和64位平臺),因此可以讓一個執行程序在所有Mac OS X機器上運行。
?
通用應用程序
? ? 2005年蘋果電腦全球研發者大會以來,很多軟件開發者都已經為其產品提供了通用二進制代碼。到2008年12月,蘋果官方網站列出了超過7500種通用應用程序。[1]
? ? 盡管如此,一些老舊的應用程式與遊戲還沒有通用二進制版本,如暴雪的星海爭霸。這些產品目前必須使用Rosetta編譯器在英特爾麥金塔電腦上運行。在Adobe Photoshop推出適用於英特爾麥金塔電腦運行的版本前,該軟體要比在PowerPC處理器的麥金塔電腦,甚至比視窗系統中運行還要緩慢。Adobe公司已經聲明,不會發布舊產品的通用二進制版本,而是轉而在未來發布的新版本中進行通用二進制化。[2] 微軟也發布了類似的聲明。[3]
? ? 2007年4月16日,Adobe發布了Adobe Creative Suite 3,該產品第一個使用通用二進制格式的版本[4]。
? ? 在2008年3月,許多Mac OS X的程序已經被轉換成了通用二進制格式,包括QuarkXPress,Apple的Final Cut Studio,Adobe Creative Suite,Microsoft Office 2008和Shockwave Player(11版以后)。其余只有PowerPC版本的程序在Intel處理器的Mac上運行時必須使用Rosetta。
? ? 隨著Mac OS X 10.6 Snow Leopard的發布,由于系統僅支持Intel處理器等原因,部分程序已經去除了對PowerPC處理器的支持。
?
參見
· 英特爾
· 蘋果電腦公司
?
注釋
1 ^ Macintosh Products Guide: Universal Applications. 蘋果公司 [2008-12-22].
2 ^ 基于 Intel 的 Mac支持(簡體中文). Adobe公司 [2006-10-14].
3 ^ Q&A: 在英特爾麥金塔電腦上使用微軟產品(英文). 微軟 [2006-10-14].
4 ^ http://www.adobe.com/aboutadobe/pressroom/pressreleases/200704/041607CS3Shipping.html
? 外部鏈接
· 蘋果網站:通用應用程序簡體中文
· 蘋果電腦網站: Universal 應用程式繁體中文
· 蘋果開發者關于通用二進制代碼編程指南的介紹簡體中文
?
原文鏈接:http://dictionnaire.sensagent.com/通用二進制/zh-zh/