3.2.1. Instruction set states

The processor has two instruction set states:

ARM state

The processor executes 32-bit, word-aligned ARM instructions in this state.

Thumb state

The processor executes 32-bit and 16-bit halfword-aligned Thumb instructions in this state.


Transition between ARM state and Thumb state does not affect the processor mode or the register contents.

Switching state

The instruction set state of the processor can be switched between ARM state and Thumb state:

  • Using the BX and BLX instructions, by a load to the PC, or with a data-processing instruction that does not set flags, with the PC as the destination register. Switching state is described in the ARM Architecture Reference Manual.


    When the BXJ instruction is used the processor invokes the BX instruction.

  • Automatically on an exception. You can write an exception handler routine in ARM or Thumb code. For more information, see Exceptions.

Interworking ARM and Thumb state

The processor enables you to mix ARM and Thumb code. For more information about interworking ARM and Thumb, see the RealView Compilation Tools Developer Guide.

Copyright © 2010-2011 ARM. All rights reserved.ARM DDI 0460C