2.1.19. --cpu=name

此选项为所选的 ARM 处理器或体系结构启用代码生成。

语法


--cpu=name

其中:

name

是处理器或体系结构的名称。

如果 name 是处理器的名称,则按 ARM 数据表中显示的形式输入该名称;例如,ARM7TDMIARM1176JZ-SMPCore

如果 name 是体系结构的名称,则该名称必须包含在Table 2.2 中显示的体系结构列表内。

处理器和体系结构名称都不区分大小写。

不接受通配符。

Table 2.2. 受支持的 ARM 体系结构 

体系结构 描述
4 没有 Thumb 的 ARMv4
4T 具有 Thumb 的 ARMv4
5T 具有 Thumb 和交互操作的 ARMv5
5TE 具有 Thumb、交互操作、DSP 乘法以及双字指令的 ARMv5
5TEJ 具有 Thumb、交互操作、DSP 乘法、双字指令以及 Jazelle® 扩展[1]的 ARMv5
6 具有 Thumb、交互操作、DSP 乘法、双字指令、未对齐和混合端支持、Jazelle 扩展以及多媒体扩展的 ARMv6
6-M ARMv6 微控制器规格,仅具有 Thumb 并增加了处理器状态指令
6K 具有 SMP 扩展的 ARMv6
6S-M ARMv6 微控制器规格,仅具有 Thumb 并增加了处理器状态指令和操作系统扩展
6T2 具有 Thumb-2 的 ARMv6
6Z 具有安全扩展的 ARMv6
7 仅具有 Thumb-2 且没有硬件除法器的 ARMv7[2]
7-A 支持基于虚拟 MMU 的内存系统的 ARMv7 应用程序规格,具有 ARM、Thumb、Thumb-2 和 Thumb-2EE 指令集、DSP 支持以及 32 位 SIMD 支持
7-R ARMv7 实时规格,具有 ARM、Thumb、Thumb-2、DSP 支持以及 32 位 SIMD 支持
7-M ARMv7 微控制器规格,仅具有 Thumb-2 且具有硬件除法器

[1] ARM 编译器不能生成 Java 字节代码。

[2] ARM v7 是不可识别的 ARM 体系结构。 它是体系结构 ARMv7-A、ARMv7-R 和 ARMv7-M 的公共子集。

缺省选项

如果未指定 --cpu 选项,编译器将采用 --cpu=ARM7TDMI

若要获取 CPU 体系结构和处理器的完整列表,请使用 --cpu=list 选项。

用法

以下主要的几点适用于处理器和体系结构选项:

处理器
  • 选择处理器时需要选择适当的体系结构、浮点单元 (FPU) 以及内存组织。

  • 受支持的 --cpu 值包括所有当前的 ARM 产品名称或体系结构版本。

    此外,还支持其他基于 ARM 体系结构的处理器,如 Marvell Feroceon 和 Intel XScale。

  • 如果为 --cpu 选项指定了处理器,则将针对该处理器优化已编译的代码。 这使得编译器可使用特定的协处理器或指令调度来优化性能。

体系结构
  • 如果为 --cpu 选项指定了体系结构名称,则会编译代码,使其可在支持该体系结构的任何处理器上运行。 例如,--cpu=5TE 所生成的代码可由 ARM926EJ-S® 使用。

FPU
  • 有些 --cpu 规范中隐含 --fpu 的选择。 例如,在用 --arm 选项进行编译时,--cpu=ARM1136JF-S 中将隐含 --fpu=vfpv2

    Note

    在命令行中用 --fpu 设置的任意显式 FPU 都将覆盖隐式 FPU。

  • 如果既未指定 --fpu 选项也未指定 --cpu 选项,则会使用 --fpu=softvfp

  • 如果选择了具有 FPU 的体系结构 v7 处理器,则缺省 FPU 类型为 --fpu=vfpv3。

ARM/Thumb
  • 指定支持 Thumb 指令的处理器或体系结构(如 --cpu=ARM7TDMI)时,并不会使编译器生成 Thumb 代码。 该操作只启用要使用的处理器的功能,如长乘法。 使用 --thumb 选项可生成 Thumb 代码。

    Note

    指定目标处理器或体系结构时,可能会导致编译器所生成的对象代码与其他 ARM 处理器不兼容。 例如,如果为体系结构 ARMv6 编译的代码包含 ARMv6 特有的指令,则这些代码可能无法在 ARM920T 处理器上运行。 因此,必须选择同时符合您各种需要的处理器。

  • 如果要为支持 ARMv4T 或 ARMv5T 的处理器编译专用于 ARM/Thumb 混合系统的代码,则必须指定交互操作选项 --apcs=/interwork。 缺省情况下,将为支持 ARMv5T 或更高版本的处理器启用此选项。

  • 如果要为 Thumb 编译代码(即在命令行中使用 --thumb 选项进行编译),则编译器会尽可能多地使用 Thumb 指令集编译代码。 但编译器可能会在编译过程中生成 ARM 代码。 例如,如果要为 Thumb-1 处理器编译代码并使用了 VFP,则将为 ARM 编译包含浮点运算的任何函数。

  • 如果要为 ARMv7-M(如 --cpu=Cortex-M3)编译代码,则无需在命令行中指定 --thumb,因为 ARMv7-M 仅支持 Thumb-2。

限制

不能在同一命令行中同时指定处理器和体系结构。

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential