3.11 --cpu=name

Affects the way machine code is disassembled by options such as -c or --disassemble, so that it is disassembled in the same way that the specified processor or architecture interprets it.

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 the supported architectures. For a complete list of the supported architecture and processor names, specify the --cpu=list option.

Table 3-2 Supported ARM architectures

Architecture Description
4 ARMv4 without Thumb
4T ARMv4 with Thumb
5T ARMv5 with Thumb and interworking
5TE ARMv5 with Thumb, interworking, DSP multiply, and double-word instructions
5TEJ

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

Note:

fromelf cannot generate Java bytecodes.

6 ARMv6 with Thumb, interworking, DSP multiply, double-word instructions, unaligned and mixed-endian support, Jazelle, and media extensions.
6-M

ARMv6 microcontroller profile with Thumb only, plus processor state instructions.

6S-M

ARMv6 microcontroller profile with Thumb only, plus processor state instructions and OS extensions.

6K ARMv6 with SMP extensions.
6T2 ARMv6 with Thumb (Thumb-2 technology).
6Z ARMv6 with Security Extensions.
7 ARMv7 with Thumb (Thumb-2 technology) only, and without hardware divide.
7-A ARMv7 application profile.
7-A.security ARMv7-A architecture profile with the SMC instruction (formerly SMI).

7-R

ARMv7 real-time profile.

7-M ARMv7 microcontroller profile.
7E-M ARMv7-M architecture profile with DSP extension.

Note:

  • ARMv7 is not an actual ARM architecture. --cpu=7 denotes the features that are common to the ARMv7-A, ARMv7-R, and ARMv7-M architectures. By definition, any given feature used with --cpu=7 exists on the ARMv7-A, ARMv7-R, and ARMv7-M architectures.

  • 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.

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.

Architectures
  • If you specify an architecture name for the --cpu option, machine code is disassembled by options such as -c or --disassemble for that architecture. If you specify --disassemble, then the disassembly can be assembled for any processor supporting that architecture.

    For example, --cpu=7-A --disassemble produces disassembly that can be assembled for the Cortex®‑A7 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.

Default

If you do not specify a --cpu option, then fromelf disassembles machine instructions in an architecture-independent way. This means that fromelf disassembles anything that it recognizes as an instruction by some architecture.

Restrictions

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

Example

To specify the Cortex‑M4 processor, use:

--cpu=Cortex-M4

Non-ConfidentialPDF file icon PDF versionARM DUI0477M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.