1.34 -marm

Requests that the compiler targets the A32 or ARM® instruction sets.

Most ARMv7-A (and earlier) processors support two instruction sets: the ARM instruction set, and the Thumb instruction set. ARMv8-A AArch32 continues to support these two instruction sets, but they are renamed as A32 and T32 respectively. ARMv8-A additionally introduces the A64 instruction set, used in the AArch64 execution state.
Different architectures support different instruction sets:
  • ARMv8-A processors in AArch64 state execute A64 instructions.
  • ARMv8-A processors in AArch32 state, as well as ARMv7 and earlier A- and R- profile processors execute A32 (formerly ARM) and T32 (formerly Thumb) instructions.
  • M-profile processors execute T32 (formerly Thumb) instructions.
The -marm option targets the A32 (formerly ARM) instruction set.


This option is only valid for targets that support the A32 or ARM instruction sets. For example, the -marm option is not valid with AArch64 targets. The compiler ignores the -marm option and generates a warning with AArch64 targets.


The default for all targets that support ARM or A32 instructions is -marm.
Related reference
1.43 -mthumb
1.48 --target
1.37 -mcpu
Related information
Specifying a target architecture, processor, and instruction set
Non-ConfidentialPDF file icon PDF versionARM DUI0774E
Copyright © 2014-2016 ARM. All rights reserved.