Writing ARM and Thumb Assembly Language
2-6 Copyright © 2000, 20 01 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 Instruc tion 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 page2-7
Multiple register load and store instructions on page2-7
Status register access instructions on page2-7
Semaphore instructions on page2-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 regis ter. 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.