[转帖]armv6、armv7、armv7s、armv8、armv64及其i386、x86_64区别
ARM处理器指令集
一. 苹果模拟器指令集:
| 指令集 | 分析 |
i386 |
针对intel通用微处理器32架构的 |
x86_64 |
针对x86架构的64位处理器 |
i386|x86_64 |
是Mac处理器的指令集,i386是针对intel通用微处理器32架构的。x86_64是针对x86架构的64位处理器。 |
模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。所以生成静态库时都是会先生成两个.a,一个是i386的用于在模拟器运行,另一个是在真实设备上运行的,然后再用命令将两个.a合并成一个(1+1=1)。
二.苹果设备指令集相关
| 位数 | 指令集 |
|---|---|
32位ARM |
armv6、armv7、armv7s |
64位ARM |
arm64、armv8 |
苹果A7处理器支持两个不同的指令集:32位ARM指令集(armv6|armv7|armv7s)和64位ARM指令集(`arm64 |
armv8`)。 |
| 指令集 | 支持设备 |
|---|---|
armv6 设备 |
第一代、第二代 iPod Touch |
armv7 设备 |
iPad, iPad2, iPad3(The New iPad), iPad mini; iPod Touch 3G, iPod Touch4 |
armv7s设备 |
iPad4(iPad with Retina Display) |
ARMv8/arm64设备 |
iPad Air, iPad mini2(iPad mini with Retina Display) |
三. 苹果模拟器、设备指令集总结
| 模拟器 | 设备 |
|---|---|
|
( |
( |
当使用iOS模拟器的时候会遇到i386|x86_64,iOS模拟器没有arm指令集,编译运行的是x86指令集,所以,只有在iOS设备上,才会执行设备对应的arm指令集。
四. XCode中与指令集相关
XCode中关于生成二进制包指令集相关的设置项有以下三个:
图.xcode设置
| Xcode设置项 | 定义 | 注意事项 |
|---|---|---|
Architecture |
指你想支持的指令集 |
该选项指定了工程 如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,从而会造成最终编译生成的 |
Valid architectures |
指即将编译的指令集 |
该选项指定
例如: |
Build Active Architecture Only |
该编译项用于设置是否只编译当前使用的设备对应的arm指令集。 |
使用条件: ①其值设置为 ② ①设置为 ②设置为 例如:当该选项设置成 |
假定:我们将Build Active Architecture Only值设置为YES,同时Xcode连接上手机iPhone5S匹配指令集arm64)。如下五种情况总结如下表:
| 情况 | Architectures | ValidArchitectures | 结果 | 分析 |
|---|---|---|---|---|
| 情况① | armv7、armv7s、arm64 |
armv6、armv7s、arm64 |
arm64 |
因为:取交集 所以:为 |
| 情况② | armv6、armv7、 armv7s |
armv6、armv7s、arm64 |
armv7s |
因为:取交集 所以:为 |
| 情况③ | armv6 armv7 |
armv6、 armv7s、 arm64 |
armv7 |
无交集。但是因为:ValidArchitectures支持armv7s则必然支持armv7,Architectures支持armv7,从XCode4.5开始,就不再支持armv6指令集。所以:最终生成二进制指令集armv7 |
| 情况④ | armv6 | armv6、 armv7s、 arm64 |
<br />无响应 |
虽然 因为从 |
| 情况⑤ | armv7、 armv7s、 arm64 |
armv7、 armv7s |
error报错 | 生成二进制包支持的指令集编译出错error信息:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 |
- 分析:
- 当
Build Active Architecture Only起作用时:连接的手机指令集匹配是由高到低(arm64 > armv7s > armv7)依次匹配的。 - 指令集都是可以
向下兼容的
比如,你的设备是armv7s指令集,那么它也可以兼容运行比armv7s版本低的指令集:armv7、armv6xcode对armv6指令集的支持 Xcode4.5起不再支持armv6。
如何选择支持的指令集?
如果你的软件对安装包大小非常敏感,你可以减少安装包中的指令集数据包,而且这能达到立竿见影的效果。
很久前xcode支持的指令集是armv7/armv7s,后来改成只支持armv7后,比原来小了10MB左右。目前AppStore上的一些知名应用,比如百度地图、腾讯地图通过反汇编工具查看后,也都只支持armv7指令集。
根据向下兼容原则,armv7指令集的应用是可以正常在支持armv7s/arm64指令集的机器上运行的。
不过对于armv7s/arm64指令集设备来说,使用运行armv7应用是会有一定的性能损失,不过这种损失有多大缺乏权威统计数据,不会影响用户体验的。
建议:Valid Architectures通常Debug模式设置值为Yes,Release模式设置为No
参考链接:
1.armv6, armv7, armv7s的区别
2.Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
3.Xcode设置项之Architectures和Valid Architectures
4.iOS工程如何支持64-bit
</article>
[转帖]armv6、armv7、armv7s、armv8、armv64及其i386、x86_64区别的更多相关文章
- armv6, armv7, armv7s的区别
ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,几乎所有手机都是使用它的. armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是 ...
- 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 ...
- 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以下(包 ...
- iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a
一.概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错:No architectures to compile for ( ...
- armv7 armv7s arm64
arm处理器以其低功耗和小尺寸而闻名,几乎所有的手机处理器都是基于arm,在嵌入式系统中应用非常广泛. armv6, armv7, armv7s, arm64指的是arm处理器的指令集. i386 ...
- ios开发之--armv7,armv7s,arm64,i386,x86_64详解
有时候在运行的时候,经常出现诸如i386的错误,最新一些可能会出现 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch ...
- iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a以及 FrameWork 的创建
armv7,armv7s,arm64,i386,x86_64 详解 一.概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错 ...
- xcode5.1 armv7 armv7s arm64 类型, 区分, 概念等
官方: https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/In ...
- 关于No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s)使用百度地图的解决办法
出现的原因:armv7s是应用在iPhone 5 A6 的架构上的解决的方式:1,在Project target里“Architectures”设置为“Standard (armv7,armv7s)” ...
随机推荐
- HDU 4641 K string 后缀自动机
原题链接 题意 每个测试点,一开始给我们n,m,k然后是一个长度为n的字符串. 之后m次操作,1 c是往字符串后面添加一个字符c,2是查询字符串中出现k次以及以上的子串个数,m为2e5 思路 首先可以 ...
- 27、flutter Dialog 弹窗
AlertDialog //放在State<>之下 void _alertDialog() async { var result = await showDialog( barrierDi ...
- 网络地图服务(WMS)详解
目录 1.概述 2.GetCapabilities 3.GetMap 4.GetFeatureInfo 阅读本文之前可参考前文:<地图服务器GeoServer的安装与配置>与<Geo ...
- 一图看懂CodeArts Deploy 5大特性,带你玩转部署服务
摘要:华为云自动化部署服务,助力企业安全.高效生产! 华为云持续部署服务CodeArts Deploy,通过模块化自由编排部署流程,实现软件的自动化部署,基于其易入门.功能全.集成度高.自动化.可靠的 ...
- 全量通过,华为云GaussDB首批完成信通院全密态数据库评测
摘要:100%全量通过!基于全栈创新计算架构的全密态数据库华为云GaussDB,完成了中国信通院组织的首批"全密态数据库"产品能力评测. 本文分享自华为云社区<全量通过!华为 ...
- 开抢| 华为开发者大会2021(Cloud)早鸟票来了!
他们,是技术的引领者 他们,是科学的追随者 他们用代码守护蓝色星球的生态 破解宇宙深处的密码 化解城市生活的不畅 捉摸自然气候的脾性 ...... 这些改变世界的成果背后 每一个开发者都了不起 --那 ...
- AUC/ROC:面试中80%都会问的知识点
摘要:ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到) 本文分享自华为云社区<技术干货 | 解决面试中80%问题,基于MindSpore实现AUC/ROC ...
- 云图说丨每个成功的业务系统离不开API网关(APIG)的保驾护航
摘要:华为云API网关(APIG)是为企业开发者及合作伙伴提供的高性能.高可用.高安全的API托管服务, 帮助企业轻松构建.管理和部署不同规模的API. 本文分享自华为云社区<[云图说]第243 ...
- 10倍!BoostKit鲲鹏全局缓存3大创新技术助力Ceph性能提升
摘要:本文从四个方面阐述了BoostKit鲲鹏全局缓存技术,该技术针对Ceph开源存储方案存在的痛点,采用三大创新技术,有效的提高了Ceph的性能,最高可以将Ceph性能提升10倍. 本文分享自华为云 ...
- nginx 限制ip访问,禁止非法域名指向本机ip——防止被别人绑定域名到自己IP的方法
网站从国内迁移到国外,镜像主机没有配置域名(等配置好了,再配置域名),然后迁移完成了后,网站被不知道哪家的域名指向了本站服务器(很可能是某些人和组织,养域名卖的--具体是何套路,请哪位道友指教) 今天 ...