You copied the Doc URL to your clipboard.

A32 instruction set overview

All A32 instructions are 32 bits long. Instructions are stored word-aligned, so the least significant two bits of instruction addresses are always zero in A32 state.

T32 instructions are either 16 or 32 bits long. Instructions are stored half-word aligned. Some instructions use the least significant bit of the address to determine whether the code being branched to is T32 or A32.

Before the introduction of 32-bit T32 instructions, the T32 instruction set was limited to a restricted subset of the functionality of the A32 instruction set. Almost all T32 instructions were 16-bit. Together, the 32-bit and 16-bit T32 instructions provide functionality that is almost identical to that of the A32 instruction set.

Table 4 describes some of the functional groupings of the available instructions.

Table 4. A32 instruction groups

Instruction group


Branch and control

These instructions do the following:

  • Branch to subroutines.

  • Branch backwards to form loops.

  • Branch forward in conditional structures.

  • Make the following instruction conditional without branching.

  • Change the processor between A32 state and T32 state.

Data processing

These instructions operate on the general-purpose registers. They can perform operations such as addition, subtraction, or bitwise logic on the contents of two registers and place the result in a third register. They can also operate on the value in a single register, or on a value in a register and an immediate value supplied within the instruction.

Long multiply instructions give a 64-bit result in two registers.

Register load and store

These instructions load or store the value of a single register from or to memory. They can load or store a 32-bit word, a 16-bit halfword, or an 8-bit unsigned byte. Byte and halfword loads can either be sign extended or zero extended to fill the 32-bit register.

A few instructions are also defined that can load or store 64-bit doubleword values into two 32-bit registers.

Multiple register load and store

These instructions load or store any subset of the general-purpose registers from or to memory.

Status register access

These instructions move the contents of a status register to or from a general-purpose register.