You copied the Doc URL to your clipboard.

--cpu=name

Enables code generation for the selected ARM® processor or architecture.

Syntax

--cpu=name

Where name is the name of a processor or architecture:

Processor and architecture names are not case-sensitive.

Wildcard characters are not accepted.

The following table shows examples of supported processor names for each architecture. For a complete list of the supported architecture and processor names, specify the --cpu=list option.

Table 11-1 Supported ARM architectures

Processor and architecture name Description Example processor names
7 ARMv7 with Thumb (Thumb-2 technology) only, and without hardware divide -
7-A ARMv7 application profile supporting virtual MMU-based memory systems, with ARM, Thumb (Thumb-2 technology) and ThumbEE, DSP support, and 32-bit SIMD support Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17
7-A.security Enables the use of the SMC instruction (formerly SMI) when assembling for the v7-A architecture Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17
8-A.32 ARMv8, AArch32 state -
8-A.32.crypto ARMv8, AArch32 state with cryptographic instructions -
8-A.32.no_neon ARMv8, AArch32 state without Advanced SIMD instructions -
8-A.64 ARMv8, AArch64 state -
8-A.64.crypto ARMv8, AArch64 state with cryptographic instructions -
8-A.64.no_neon ARMv8, AArch64 state without Advanced SIMD instructions -

Note

  • 7-A.security is not an actual ARM architecture, but rather refers to 7-A plus Security Extensions.

  • The full list of supported architectures and processors depends on your license.

Default

There is no default option for --cpu.

Usage

The following general points apply to processor and architecture options:

Processors
  • Selecting the processor selects the appropriate architecture, Floating-Point Unit (FPU), and memory organization.

  • If you specify a processor for the --cpu option, the generated code is optimized for that processor. This enables the assembler to use specific coprocessors or instruction scheduling for optimum performance.

Architectures
  • If you specify an architecture name for the --cpu option, the generated code can run on any processor supporting that architecture. For example, --cpu=7-A produces code that can be used by the Cortex®‑A9 processor.

FPU
  • Some specifications of --cpu imply an --fpu selection.

    Note

    Any explicit FPU, set with --fpu on the command line, overrides an implicit FPU.
  • If no --fpu option is specified and no --cpu option is specified, --fpu=softvfp is used.

A32/T32
  • Specifying a processor or architecture that supports T32 instructions, such as --cpu=cortex-a9, does not make the assembler generate T32 code. It only enables features of the processor to be used, such as long multiply. Use the --thumb option to generate T32 code, unless the processor is a T32-only processor, for example Cortex‑M4. In this case, --thumb is not required.

    Note

    Specifying the target processor or architecture might make the generated object code incompatible with other ARM processors. For example, A32 code generated for architecture ARMv8 might not run on a Cortex‑A9 processor, if the generated object code includes instructions specific to ARMv8. Therefore, you must choose the lowest common denominator processor suited to your purpose.
  • If you build for T32, that is with the --thumb option on the command line, the assembler generates as much of the code as possible using the T32 instruction set. However, the assembler might generate A32 code for some parts of the compilation. For example, if you are generating code for a 16-bit T32 processor and using floating-point, any function containing floating-point operations is compiled for A32.

Restrictions

You cannot specify both a processor and an architecture on the same command-line.

Example

armasm --cpu=Cortex-A17 inputfile.s
Was this page helpful? Yes No