You copied the Doc URL to your clipboard.

--cpu=name

Syntax

--cpu=name

Where name is the name of a processor or architecture:

  • If name is the name of a processor, enter it as shown on ARM data sheets, for example, ARM7TDMI, ARM1176JZ-S, MPCore.

  • If name is the name of an architecture, it must belong to the list of architectures shown in the following table.

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 10-2 Supported ARM architectures

Architecture Description Example processor names
4 ARMv4 without Thumb -
4T ARMv4 with Thumb ARM7TDMI, ARM9TDMI, ARM720T, ARM920T, ARM922T, SC100
5T ARMv5 with Thumb and interworking -
5TE ARMv5 with Thumb, interworking, DSP multiply, and double-word instructions ARM9E-S, ARM946E-S, ARM966E-S
5TEJ

ARMv5 with Thumb, interworking, DSP multiply, double-word instructions, and Jazelle® extensions

Note

armasm cannot generate Java bytecodes.

ARM926EJ-S, SC200
6 ARMv6 with Thumb, interworking, DSP multiply, double-word instructions, unaligned and mixed-endian support, Jazelle, and media extensions ARM1136J-S, ARM1136JF-S
6-M ARMv6 micro-controller profile with Thumb only, plus processor state instructions Cortex-M1.no_os_extension, Cortex-M0, SC000, Cortex-M0plus
6S-M ARMv6 micro-controller profile with Thumb only, plus processor state instructions and OS extensions Cortex-M1.os_extension
6K ARMv6 with SMP extensions MPCore
6T2 ARMv6 with Thumb (Thumb-2 technology) ARM1156T2-S
6Z ARMv6 with Security Extensions ARM1176JZF-S, ARM1176JZ-S
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
7-R ARMv7 real-time profile with ARM, Thumb (Thumb-2 technology), DSP support, and 32-bit SIMD support Cortex-R4, Cortex-R4F, Cortex-R5, Cortex-R5F, Cortex-R7
7-M ARMv7 micro-controller profile with Thumb (Thumb-2 technology) only and hardware divide Cortex-M3, SC300
7E-M ARMv7-M enhanced with DSP (saturating and 32-bit SIMD) instructions Cortex-M4, Cortex-M7

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

armasm assumes --cpu=ARM7TDMI if you do not specify a --cpu option.

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.

  • The supported --cpu values include all current ARM product names or architecture versions.

    Other ARM architecture-based processors, such as the Marvell Feroceon and the Marvell XScale, are also supported.

  • 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=5TE produces code that can be used by the ARM926EJ-S processor.

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

    For example, when building with the --arm option, --cpu=ARM1136JF-S implies --fpu=vfpv2. Similarly, --cpu=Cortex-R4F implies --fpu=vfpv3_d16.

    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.

ARM/Thumb
  • Specifying a processor or architecture that supports Thumb instructions, such as --cpu=ARM7TDMI, does not make the assembler generate Thumb code. It only enables features of the processor to be used, such as long multiply. Use the --thumb option to generate Thumb code, unless the processor is a Thumb-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, code generated for architecture ARMv6 might not run on an ARM920T processor, if the generated object code includes instructions specific to ARMv6. Therefore, you must choose the lowest common denominator processor suited to your purpose.
  • If you are building for mixed ARM/Thumb systems for processors that support ARMv4T or ARMv5T, then you must specify the interworking option --apcs=/interwork. By default, this is enabled for processors that support ARMv5T or above.

  • If you build for Thumb, that is with the --thumb option on the command line, the assembler generates as much of the code as possible using the Thumb instruction set. However, the assembler might generate ARM code for some parts of the compilation. For example, if you are generating code for a 16-bit Thumb processor and using VFP, any function containing floating-point operations is compiled for ARM.

  • If the architecture only supports Thumb, you do not have to specify --thumb on the command line. For example, if building for ARMv7-M with --cpu=7-M, you do not have to specify --thumb on the command line, because ARMv7-M only supports Thumb. Similarly, ARMv6-M and other Thumb-only architectures.

Restrictions

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

Example

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