iOS 指令集arm64、armv7s、armv7、i386、x86_64

ARM架构

ARM架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。

ARM和Intel处理器的第一个区别是,前者使用精简指令集(RISC),而后者使用复杂指令集(CISC)。

ARM处理器,特点是体积小、低功耗、低成本、高性能,所以几乎所有手机处理器都基于ARM,在嵌入式系统中应用广泛。

ARM指令集

ARM指令集是指计算机ARM操作指令系统。

armv6、armv7、armv7s、arm64、arm64e都是arm处理器的指令集,所有指令集原则上都是向下兼容的。比如,你的设备是armv7s指令集,那么它也可以兼容运行比armv7s版本低的指令集:armv7、armv6。Xcode4.5起不再支持armv6。

苹果A7处理器支持两个不同的指令集:32位ARM指令集(armv6|armv7|armv7s)和64位ARM指令集(arm64)。
i386|x86_64 是Mac处理器的指令集。

i386通常被用来作为对Intel 32位微处理器的统称。X86-64可在同一时间内处理64位的整数运算,并兼容X86-32架构,x86_64是针对x86架构的64位处理器。当使用iOS模拟器的时候会遇到i386|x86_64,iOS模拟器没有运行arm指令集,编译运行的是x86指令集,所以,只有在iOS设备上,才会执行设备对应的arm指令集。

arm64e:iPhone XS\XR\XS Max
arm64:iPhoneX | iPhone8 | iPhone7 | iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Pro | iPad Air2 | iPad Air|iPad mini4 | iPad mini3 | iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4


i386是针对intel通用微处理器32位处理器
x86_64是针对x86架构的64位处理器
 
模拟器32位处理器测试需要i386架构,
模拟器64位处理器测试需要x86_64架构,
真机32位处理器需要armv7,或者armv7s架构(iOS11放弃支持32位应用,苹果强调,2018年1月起所有32位应用都会被取缔。)
真机64位处理器需要arm64架构。

应用

Xcode中指令集相关选项(Build Setting中)

  • Architectures
    指定工程被编译成可支持哪些指令集类型,而支持的指令集越多,就会编译出包含多个指令集代码的数据包,对应生成二进制包就越大,也就是ipa包会变大。

  • Valid Architectures
    限制可能被支持的指令集的范围,也就是Xcode编译出来的二进制包类型最终从这些类型产生,而编译出哪种指令集的包,将由Architectures与Valid Architectures(因此这个不能为空)的交集来确定,比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包,默认为 Standard architectures(armv7,arm64),如果你想改的话,自己在other中更改。

  • Build Active Architecture Only
    指定是否只对当前连接设备所支持的指令集编译
    当其值设置为YES,这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本,而设置为no时,会编译所有的版本。 所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。

如果打包的时候指令集32位和64位的都有,那么在64位CPU上首先运行的是64位的指令集,只有在iPhone5s(iOS7)及其以上才可以使用同时包含32位和64位的

文章摘抄

Xcode中armv7,armv7s,arm64,i386,x86_64
iOS关于armv7,armv7s,arm64,i386,x86_64
iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什么
iOS 指令集架构 armv6、armv7、armv7s、arm64、arm64e、x86_64、i386

你可能感兴趣的:(iOS 指令集arm64、armv7s、armv7、i386、x86_64)