什么是CPU架构

CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。

目前市面上的CPU分类主要分有两大阵营,一类是复杂指令集(CISC)CPU,另一类是精简指令集(RISC)CPU。我们今天要讨论的ARM指令集就属于精简指令集(RISC)CPU。

ARM处理器

ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。

ARM处理器因其低功耗和尺寸小而闻名,iPhone的处理器全部都基于ARM。我们经常见到的armv7 | armv7s | arm64都是ARM处理器的指令集。指令集应用于开发有如下特点:

  • 所有指令集原则上向下兼容。
  • Xcode的模拟器是运行在电脑上的,所以iPhone模拟器并没有使用ARM指令集,而是使用的X86(64为处理器)或者i386(32位处理器)。
  • 通过Xcode打包时,会为支持的所有的指令集编译出对应的指令集代码的数据包,所以工程支持的指令集越多,生成的二进制包就越大。
指令集对应的机型
  • 模拟器32位处理器测试需要i386架构。
  • 模拟器64位处理器测试需要x86_64架构。
  • 真机32位处理器需要armv7,或者armv7s架构。
  • 真机64位处理器需要arm64架构。

arm64e : iPhone 12 | iPhone 12 Mini | iPhone 12 Pro | iPhone 12 Pro Max arm64e : iPhone 11 | iPhone 11 Pro | iPhone 11 Pro Max arm64e : iPhone XS | iphone XS Max | iphoneXR arm64 : iPhone 8 | iPhone 8 Plus | and iPhone X arm64 : iPhone 7 | iPhone 7 Plus | iPad (2018) arm64 : iPhone 6S | iPhone 6S Plus arm64 : iPhone 6 | iPhone 6 Plus arm64 : iPhone 5S armv7s :iPhone5 | iPhone5C | iPad4(iPad with Retina Display) armv7 :iPhone4 | iPhone4S | iPad | iPad2 | iPad3(The New iPad) | iPad mini | iPod Touch 3G | iPod Touch4

相关的Build Setting

Build Settings中搜索Architecture,可以看到如下图的设置项:

苹果cpu是arm框架吗(iPhone的CPU架构和ARM指令集2)(1)

  • Architectures指定当前Target被编译时支持的指令集的列表,如果指定了多个架构,机会生成多个架构需要的二进制文件。
  • Build Active Architecture Only指定是否只编译当前连接设备所支持的指令集。默认Debug时为YES,Release时为NO。设置为YES时,编译后只生成当前连接设备所支持的指令集代码,编译速度更快。
  • Excluded Architectures指定当前Target被编译时拒绝接纳的指令集列表,编译后最终生成的二进制文件支持的指令集是Architectures减去Excluded Architectures。

其中Architecture的默认值是$(ARCHS_STANDARD),该值具体如下:

苹果cpu是arm框架吗(iPhone的CPU架构和ARM指令集2)(2)

请参照Xcode Build Settings Reference在iPhone上时支持armv7和arm64,模拟器上支持i386和x86_64,Mac上支持x86_64。

相关错误

No architectures to compile for (...)看到这样的异常,就是架构上的不支持了,我们需要根据括号内的提示排查问题。

作者:一纸苍白链接:https://www.jianshu.com/p/64069ab04e7d来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

,