iOS_Apple 指令集

2022-07-20 14:44:44 浏览数 (1)

文章目录

  • Apple 指令集
    • ARM架构
    • 指令集对应设备
    • Architectures
    • Build Active Architecture Only
    • Valid Architectures

Apple 指令集

iOS测试分为模拟器测试和真机测试,处理器分为32位和64位。

ARM架构

​ ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作艾康精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。

参考维基百科

指令集对应设备

Architecture 指令集

对应设备

说明

armv6

iPhone、iPhone 3G、iPod 1G/2G

32位,09年之前出的iOS设备

armv7

iPhone 3GS、iPhone 4(S)、iPod 3G/4G/5G、iPad、iPad 2、iPad 3、iPad Mini

32位,A5X及更早版本

armv7s

iPhone 5、iPhone 5c、iPad 4

32位,A6和A6X芯片中使用。 (iOS6.0及更高版本中可用)

arm64

iPhone 5s、iPhone 6s(Plus)、iPhone 6(Plus)、iPhone 7(Plus)、iPhone 8(Plus)、iPhone X、iPad Air(2)、Retina iPad Mini(2,3)、Apple TV 4 20年末及之后推出的基于Apple Silicon的新型Mac使用的体系结构

64位,A7及更高版本开始使用。 (iOS7.0及更高版本中可用)

arm64e

iPhone XS/XR/XS Max/XR/11/11 Pro/11 Pro Max……

64位,A12处理器的新指令集

i386

iPhone5、iPhone5s及以下的模拟器。(macOS)

32位 Intel 处理器 iOS6.1及更低版本上的唯一选项

x86_64

iPhone6及以上的模拟器。(macOS) 05-21年间交付的所有Intel Mac的体系结构

64位 Intel 处理器 iOS7.0开始可用

iOS11放弃支持32位应用,Modern Objective-C Runtime未在32位上受支持,是ARC模式支持的先决条件

  • ARM处理器和Intel处理器的区别

ARM处理器:使用精简指令集(RISC)

Intel处理器:使用复杂指令集(CISC)

  • ARM处理器指令集

ARM指令集:计算机ARM操作指令系统

armv6、armv7、armv7s、arm64、arm64e 都是arm处理器的指令集,所有指令集原则上都是向下兼容的。

(比如:你的设备是armv7s指令集,那么它可以兼容运行比armv7s版本更低的指令集:armv7、armv6,只是使用armv6指令集时无法充分发挥其性能,即无法使用armv7指令集中的新特性)

Xcode4.5起不再支持armv6。

苹果的A7处理器支持两个不同的指令集:

  • 32位ARM指令集(armv6、armv7、armv7s)
  • 64位ARM指令集(arm64)

另外:

  • i386:通常被用来作为Intel 32位微处理器的统称。
  • x86_64:可在同一时间内处理64位的整数运算,并兼容x86_32架构,是针对x86架构的64位处理器。

注意:

​ iOS模拟器没有运行arm指令集,用到的是 i386 或 x86_64,所以只有在iOS设备上才会执行设备对应的arm指令集。

Architectures

​ 表示项目编译的时候支持的指令集的集合,如果设置多个architecture,则编译出的二进制数据包及ipa包 会包含多个指令集代码,体积会变大。

设置:Xcode -> Build Settings -> Architectures

默认是:$(ARCHS_STANDARD)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-huVqBf8u-1613575098536)(blob:file:///e6cddb72-6605-4ffb-943a-69f19f9ec675)]

参考值:Xcode构建设置参考

Build Active Architecture Only

​ 是否只编译当前连接设备所支持的指令集。这个设置主要用在Debug的时候,默认DebugYESReleaseNO

Debug模式为YES:编译时只编译连接设备的处理器版本,会大大缩短编译时间。

Release模式为NO:需要适配市面上大部分手机,这也是为什么Release编译时需要花费更多时间的原因。(如果为YES,那么生成的安装包只能安装在你当前连接设备的编译类型的手机上)

Valid Architectures

​ 表示项目所支持的处理器架构列表,ArchitecturesValid Architectures的交集 确定最终的数据包包含的指令集代码。

​ Xcode 12 已弃用,不再包含此设置,不鼓励使用它。而是有一个新的Excluded ArchitecturesEXCLUDED_ARCHS)代替。如果项目包含Valid ArchitecturesVALID_ARCHS),那么这个设置将显示在Build Settings -> User-Defined中。

参考:

CPU Architectures

iOS 指令集架构 armv6、armv7、armv7s、arm64、arm64e、x86_64、i386

Xcode 12 Release Notes

iOS 指令集架构Architectures armv6、armv7、armv7s、arm64、arm64e、x86_64、i386

iOS和iPadOS设备列表

0 人点赞