IOS移动设备处理器指令集 armv6、armv7、armv7s及arm64
Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色。
Armv6、armv7、armv7s、arm64都是arm处理器的指令集,所有指令集原则上都是向下兼容的,如iPhone4S的CPU默认指令集为armv7指令集,但它同时也兼容armv6指令集,只是使用armv6指令集时无法充分发挥其性能,即无法使用armv7指令集中的新特性,同理,iPhone5的处理器标配armv7s指令集,同时也支持armv7指令集,只是无法进行相关的性能优化,从而导致程序的执行效率没那么高。
需要注意的是iOS模拟器没有运行arm指令集,编译运行的是x86指令集,所以,只有在iOS设备上,才会执行设备对应的arm指令集。
目前为止Apple移动设备默认指令集(2014.8.22)
-------------------------------------------------------------------------------------
armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7 设备: iPhone3GS, iPhone4, iPhone4S
iPad, iPad2, iPad3(The New iPad), iPad mini
iPod Touch 3G, iPod Touch4
armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)
-------------------------------------------------------------------------------------
XCode中与指令集相关的选项(Build Settings 面板下 Architectures):
Architectures:
指明选定Target要求被编译生成的二进制包所支持的指令集支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,从而会造成最终编译生成的包很大。
Valid Architectures:
指明可能支持的指令集并非Architectures列表中指明的指令集都会被支持,Valid Architectures限制可能被支持的指令集的范围,即Valid Architectures和Architectures列表的交集,才是XCode最终生成二进制包所支持的指令集。
比如,将Architectures支持arm指令集设置为:armv7,armv7s,对应的Valid Architectures的支持的指令集设置为:armv7s,arm64,那么此时,XCode生成二进制包所支持的指令集只有armv7s 。
Build Active Architecture Only:
指明是否只编译当前连接设备所支持的指令集
该选项起作用的条件有两个,必须同时满足才会起作用:
1. 其值设置为YES
2. XCode成功连接调试设备
假定我们将Build Active Architecture Only值设置为YES,同时XCode连接上手机iPhone5S(匹配指令集arm64)
1. 第一种情况
Architectures: armv7, armv7s, arm64
ValidArchitectures: armv6, armv7s, arm64
生成二进制包支持的指令集: arm64
2. 第二种情况
Architectures: armv6, armv7, armv7s
Valid Architectures: armv6, armv7s, arm64
生成二进制包支持的指令集: armv7s
3. 第三种情况
Architectures: armv6, armv7
Valid Architectures: armv6, armv7s, arm64
生成二进制包支持的指令集: armv7
4. 第四种情况
Architectures: armv6
Valid Architectures: armv6, armv7s, arm64
生成二进制包支持的指令集: 虽然编译成功了,但是并没有任何目标生成, 因为从XCode4.5开始,就不再支持armv6指令集,所以列表中写了也是白写。
5. 第五种情况
Architectures: armv7, armv7s, arm64
Valid Architectures: armv7,armv7s
生成二进制包支持的指令集: 编译出错信息
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)
可以看出:当Build Active Architecture Only起作用时:
连接的手机指令集匹配是由高到低(arm64 > armv7s > armv7)依次匹配的。
如连接手机为iPhone5S,其默认指令集为arm64,若Architectures列表为armv7, armv7s,则会选取armv7s指令集为目标指令集,如果此时Valid Architectures列表中包含该指令集,则成功生成的二进制包只支持armv7s指令集,若alid Architectures列表不包含此指令集,则编译将会出错:
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 arm64)
同样的,若Architectures列表为armv7,则会选取armv7作为目标指令集,若Valid Architectures列表中包含了armv7指令集,则能够成功生成二进制包,其支持的指令集只有armv7,若Valid Architectures列表中不包含armv7,则编译失败。
建议:通常Debug模式设置值为Yes,Release模式设置为No
摘自:http://www.cocoachina.com/ios/20140915/9620.html 感谢作者分享
IOS移动设备处理器指令集 armv6、armv7、armv7s及arm64的更多相关文章
- Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7s.arm64都是ar ...
- Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64-b
Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7s.arm64都是ar ...
- Xcode 中armv6 armv7 armv7s arm64 i386 x86_64 归纳 (Architectures, Valid Architectures, Build Active Architecture Only)
http://www.jianshu.com/p/09b445300d40 简介: armv7|armv7s|arm64都是ARM处理器的指令集 i386|x86_64 是Mac处理器的指令集 目前i ...
- iOS------苹果设备处理器指令集(iPhone初代到iPhone5s)
(via 雅香小筑) Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7 ...
- iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a
一.概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错:No architectures to compile for ( ...
- iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a以及 FrameWork 的创建
armv7,armv7s,arm64,i386,x86_64 详解 一.概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错 ...
- armv6, armv7, armv7s的区别
ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,几乎所有手机都是使用它的. armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是 ...
- xcode armv6 armv7 armv7s arm64
目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...
- iOS设备的硬件适配 (关于armv6, armv7, armv7s ) <转>
<转> http://blog.csdn.net/smking/article/details/8148702 1.OpenGL ES版本支持 iPhone:iPhone 3G以下(包 ...
随机推荐
- Java类加载
类的生命周期是: 在一个类编译完成之后,下一步就需要开始使用类,如果要使用一个类,肯定离不开JVM.在程序执行中JVM通过装载,链接,初始化这3个步骤完成. 类的装载是通过类加载器完成的,加载器将.c ...
- 04_Swift2基础之类型安全和类型推测+字面量+类型别名
1. 类型安全和类型推测 1> 类型安全 Swift 是一个 _类型安全(type safe)_ 的语言.类型安全的语言可以让你清楚地知道代码要处理的值的类型.如果你的代码需要一个`String ...
- BZOJ2758 : [SCOI2012]Blinker的噩梦
首先将包含关系建树. 方法是将每个图形拆成上半边和下半边,从左往右扫描线,用Splay从下到上维护扫描线上所有图形. 每次加入一个新的图形$x$的时候,看看它下方第一个图形$y$,如果$y$是上半边, ...
- 移动端H5页面之iphone6的适配(转)
iphone6 及 iphone 6 plus 已经出来一段时间了.很多移动端网站,以前写死body 为320px的,现在估计也忙着做适配了. 大屏幕手机其实一直有,只是以前大家没怎么重视,移动端的H ...
- VB远程访问MYSQL代码图解
首先需要安装MySQL Connector/ODBC 地址:http://dev.mysql.com/downloads/connector/odbc/ 根据自己的系统(运行环境: Win7/XP/W ...
- NOI 题库 1792
1792 迷宫 描述 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Exten ...
- 【BZOJ1968】【AHoi2005】COMMON约数研究
Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...
- 设置 tableview 的背景颜色,总是不生效
1.只设置了背景图片,却忘记了取消掉 cell 的背景颜色(可以通过层次结构来观察) UIImageView *bgView = [[UIImageView alloc]initWithFrame:s ...
- Java_过滤字符串中非汉子的内容
/** * 去除“第”之前的所有非汉字内容 */ private String clearNotChinese(String buff){ String tmpString =buff.replace ...
- sbt assembly build.sbt content
// import sbt._ // import sbt.Keys._ // import java.io.File // import AssemblyKeys._ name := "n ...