通用二进制

通用二进制

    通用二进制(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/

转载于:https://www.cnblogs.com/elta/articles/4766555.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python~win32com~Excel

import win32com.client#wwin32com.client.Dispatch("Word.Application") #w.Visible1owin32com.client.Dispatch("Excel.Application") o.Visible1 o.Workbooks.Add() o.Cells(1,1).Value"Hello"转载于:https://www.cnblogs.com/lynclynn/p/530…

linux显示光盘命令行,使用wodim在命令行下烧录光盘

使用wodim在命令行下烧录光盘发布时间:2009-02-27 16:23:11来源:红联作者:zhania作者:linuxtoy出自http://linuxtoy.org/archives/burning-cd-with-wodim.html我们以前介绍的 Linux 光盘烧录工具多为图形化的程序,今天来看看如何使用 wodim 在命令行下烧…

Android(java)学习笔记144:网络图片浏览器的实现(ANR)

1.我们在Android下,实现使用http协议进行网络通信,请求网络数据。这里是获取网络上的图片信息,让它可以显示在手机上; 但是我们这个手机连接网络是很费时间,如果我们在主线程(UI线程)中写这个网…

DLL导出函数名称改编的解决方法

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com *************************************************** 1.DLL编译后导出函数名称改变 在编写一个DLL后,为了能被别的程序调用&…

组合自定义控件的步骤详解

Android 步骤&#xff1a; 1 自定义组合控件的布局settint_view.xml<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"and…

linux如何建立隐藏目录,【Linux】文件与目录的默认权限与隐藏权限

01. 文件默认权限&#xff1a;umask文件的权限可以使用chmod来改变&#xff0c;但是我们默认创建文件的权限是什么&#xff1f;那就是与umask这个有关了。下来我们学习这个指令1.1 简单使用umask[rootiZbp13q6hd8z3xaagcmz6gZ /]# umask0022[rootiZbp13q6hd8z3xaagcmz6gZ /]# u…

Servlet和JSP学习指导与实践(二):Session追踪

前言&#xff1a; web应用中经常需要对某些有用的信息进行存储或者附加一些信息。本文主要介绍session&#xff0c;即“会话”跟踪的几种不同方式~ ----------------------------4种管理session的方式&#xff1a; 1.重写url 通过在请求的url后面追加参数信息进行会话跟踪。如&…

数据存储和界面展示(二)

#测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试&#xff1a;function test 单元测试&#xff1a;unit test 集成测试&#xff1a;integration test 系统测试&#xff1a;system test 根据测试暴力程度 冒烟测试&#xff1a;smoke test 压力测…

linux在A目录下创建B文件,Linux课程---5、常用文件命令和目录命令(创建文件命令)...

Linux课程---5、常用文件命令和目录命令(创建文件命令)一、总结一句话总结&#xff1a;touch file11、管道符|有什么用&#xff1f;将前一个命令的结果作为后一个命令的输入&#xff1a;比如查看文件前3行&#xff1a;cat file1 | head -32、linux下如何复制粘贴命令是什么&…

window 系统上传文件到linux 系统出现dos 格式换行符

Windows里的文件在Unix/Mac下打开的话&#xff0c;在每行的结尾可能会多出一个^M符号&#xff0c;Unix/Mac系统下的文件在Windows里打开的话&#xff0c;所有文字会变成一行&#xff0c;所以为了避免这种情况的发生&#xff0c;我们可以在linux系统内转换格式 Centos系列可以直…

#pragma once与 #ifndef的区别

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 为了避免同一个文件被include多次 1 #ifndef方式2 #pragma once方式 在能够支持这…

android学习者优秀网址推荐

非常漂亮的android UI库集合&#xff0c;别人整理的&#xff0c;如果感觉不错&#xff0c;赶快收藏吧&#xff01;&#xff01; https://github.com/wasabeef/awesome-android-ui https://github.com/Trinea/android-open-project android中文社区网 http://www.android-studio…

linux while read文件,linux shell脚本用while read逐行读取文本的问题

问题:我现在是想用一个脚本获取一定列表服务器的运行时间。首先我建立一个名字为ip.txt的IP列表(一个IP一行)&#xff0c;再建好密钥实现不用密码直接登录。然后写脚本如下&#xff1a;#!/bin/bashwhile read ips;doecho $ips;done < ip.txt脚本实现了逐行读取列表中的IP&am…

常用字符串处理函数汇总

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** (一)strcmp函数 strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是&…

兼容性记录-class属性

getAttribute获得class属性时,IE6,IE7的传參是className,IE7和现代游览器都是class全部游览器DOMElement均有的className属性,其在IE各版本号下的均表现良好返回属性class值的字符串此外html5中DOMElement有个classList属性,它返回一个类型为DOMTokenList的对象,它当中有非常多…

magenta内核与linux,谷歌将推出新操作系统Fuchsia:Magenta语言为内核

谷歌现在研发出来并且推出使用的系统有Chrome OS、Android和Chromecasts&#xff0c;这三者在操作系统的市场中占得份额很高&#xff0c;但是好像谷歌对此并不满意&#xff0c;因为有相关消息显示&#xff0c;谷歌正在研发新的操作系统Fuchsia&#xff0c;该系统采用Magenta语言…

BZOJ 1968: [Ahoi2005]COMMON 约数研究 水题

1968: [Ahoi2005]COMMON 约数研究 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id1968 Description Input 只有一行一个整数 N&#xff08;0 < N < 1000000&#xff09;。 Output 只有一行输出&#xff0c;为整数M…

VC内存对齐准则(Memory alignment)

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 本文所有内容在建立在一个前提下&#xff1a;使用VC编译器。着重点在于&#xff1a;VC…

[redis设计与实现][7]基本数据结构——对象

Redis对基础数据类型进行了封装&#xff0c;构建出上层的对象系统&#xff0c;这个系统包含&#xff1a;字符串对象、列表对象、哈希对象、集合对象和有序集合对象。 Redis对象结构&#xff1a; [cce lang”c”] typedef struct redisObject { //类型 unsigned type:4; //编码 …

Linux中samba的权限详解,活用三种权限 理解Samba的权限控制

在企业内网开发环境方面&#xff0c;文件服务器是一个非常重要的环节。在这当中&#xff0c;Samba服务器由于其权限控制的高度灵活性&#xff0c;在这里抚琴煮酒会进行一些列详细的说明。之前我们已经介绍了Samba服务器一些入门和基本的更换用户、端口监听、列表控制等技巧&…