3. GNU-Syntax Arm Assembly Instructions¶
A description of the GNU-syntax for Arm assembly instructions is provided in the GNU-Syntax Arm Assembly Source Anatomy section.
For descriptions of the instructions available on each of the Arm processor variants that are supported in the tiarmclang toolchain, see the following reference documentation:
Cortex-M0: The Cortex-M0 Instruction Set (Cortex-M0 Devices Generic User Guide)
Cortex-M0+: The Cortex-M0+ Instruction Set (Cortex-M0+ Devices Generic User Guide)
Cortex-M3: The Cortex-M3 Instruction Set (Cortex-M3 Devices Generic User Guide)
Cortex-M4: The Cortex-M4 Instruction Set (Cortex-M4 Devices Generic User Guide: PDF)
Cortex-M33: The Cortex-M33 Instruction Set (Cortex-M33 Devices Generic User Guide)
Cortex-R4 and Cortex-R5: Both A32 (Arm) and T32 (Thumb) instructions are available on Cortex-R4 and R5 processors.
For Cortex-R4 and R5 (–mcpu=cortex-[r4|r5]), the compiler generates A32 instructions by default. If the --mthumb option is used, the compiler generates T32 instructions. In an assembly source file, the .arm and .thumb directives can be used to override this setting for individual functions. An application can contain both functions compiled in Arm mode and functions compiled in Thumb mode. Likewise, object modules compiled in Arm mode can be linked with modules compiled in Thumb mode. When generating object code for a call between any two functions, the linker detects the mode for both the caller and callee functions and generates the appropriate BL or BLX instruction depending on whether a code state transition is necessary.