通用二进制
维基百科,自由的百科全书
通用二进制(Universal binary)是苹果电脑公司提出的一种程序代码,使程序能以本地程序的形式运行在使用PowerPC或者英特尔微处理器(x86)的麦金塔电脑上,在同一个程序包中同时为两种架构提供最理想的性能。硬件方面,苹果电脑公司已经将其产品线上的所有麦金塔电脑在2006年内转为英特尔处理器,相对应的软件方面,苹果最早是在2005年世界开发者大会(WWDC)上就发布了通用二进制的内容来适应这种转换。
当程序在操作系统中运行后,将自动检测通用二进制代码,然后根据使用的架构自动选择合适的代码来执行,因此实现无损的本地程序运行速度。
目录 |
[编辑] 概要
通用二进制代码有两种基本类型。一种类型就是简单提供两种独立的二进制代码,一个用来对应x86架构,一个用来对应PowerPC架构。但是对于不熟悉代码的普通软件使用者来说,在购买和使用的时候,可能搞不清二者区别。另外一种类型就是只编写一个架构的代码,当另外一种处理环境时让系统自动调用模拟器运行。这会导致运行速度下降,一般是作为“通用二进制”或者“特别连编二进制”出现之前暂时使用的折衷办法。(参见Rosetta.)
因为需要储存多种代码,通用二进制应用程序通常比单一平台二进制的程序要大,但是由于两种架构有共通的非执行资源,所以并不会达到单一版本的两倍之多。而且由于执行中只调用一部分代码,运行起来也不需要额外的内存。
在90年代中期从68k处理器转换到PowerPC的时候,苹果电脑公司使用了一个类似的技术。当时这些双平台可执行程序被称为 "胖二进制(fat binaries)",因为他们文件容量比原来要大。
目前,苹果公司的Xcode是唯一一个可以编译通用二进制代码的GUI工具。一个使用processor-independence开发的简单应用程序只需要改动很少的部分就可以实现通用二进制。但是对于那些基于要发挥一种架构特长的复杂程序来说,修改代码通过连编就是一个比较复杂的工程。 使用其他开发工具制作的应用程序需要额外的修改。正因为这些原因,导致目前英特尔麦金塔电脑和那些第三方制作的通用二进制软件不能同步的现象。而苹果在硬件方面的转换比预定计划提前了好几个月,也是造成这种差距的另外一个因素。
苹果公司的Xcode 2.4版本将通用二进制的概念进一步推广,支持创建四架构二进制(对应英特尔和PowerPC中32位和64位平台),因此可以让一个执行程序在所有Mac OS X机器上运行。
[编辑] 通用应用程序
2005年WWDC大会以来,很多软件开发者都已经为其产品提供了通用二进制代码。到2006年8月,苹果官方网站声称已经有三千多种通用应用程序。[1]
尽管如此,一些高端的常用应用程序还没有通用二进制版本,比如Adobe公司的Creative Suite软件套装,微软公司的Microsoft Office 2004等等。这些产品目前必须使用Rosetta编译器在英特尔麦金塔电脑上运行。结果导致目前的Adobe Photoshop版本在英特尔麦金塔电脑上运行,要比在PowerPC处理器的麦金塔电脑,甚至比视窗系统中运行还要缓慢。Adobe公司已经声明,不会发布现有产品的通用二进制版本,而是转而在未来发布的新版本中进行通用二进制化。[2] 微软也发布了类似的声明。[3]
[编辑] 参见
[编辑] 注释
- ↑ 麦金塔产品指南:通用应用程序(英文) 苹果电脑公司 - 於2006-10-14zh-tw:造;zh-cn:采訪。
- ↑ 基于 Intel 的 Mac支持(简体中文) Adobe公司 - 於2006-10-14zh-tw:造;zh-cn:采訪。
- ↑ Q&A: 在英特尔麦金塔电脑上使用微软产品(英文) 微软 - 於2006-10-14zh-tw:造;zh-cn:采訪。