Writing ARM and Thumb Assembly Language
2-6 Copyright © 2000, 2001 ARM Limited. All rights reserved. ARM DUI 0068B
2.2.5 ARM instruction set overview
All ARM instructions are 32 bits long. Instructions are stored word-aligned, so the least
significant two bits of instruction addresses are always zero in ARM state. Some
instructions use the least significant bit to determine whether the code being branched
to is Thumb code or ARM code.
See Chapter 4 ARM Instruction Reference for detailed information on the syntax of the
ARM instruction set.
ARM instructions can be classified into a number of functional groups:
• Branch instructions
• Data processing instructions
• Single register load and store instructions on page 2-7
• Multiple register load and store instructions on page 2-7
• Status register access instructions on page 2-7
• Semaphore instructions on page 2-7
• Coprocessor instructions on page 2-7.
Branch instructions
These instructions are used to:
• branch backwards to form loops
• branch forward in conditional structures
• branch to subroutines
• change the processor from ARM state to Thumb state.
Data processing instructions
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 a constant supplied within the instruction (an
immediate value).
Long multiply instructions (unavailable in some architectures) give a 64-bit result in
two registers.