Writing ARM and Thumb Assembly Language

2.2.5ARM 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.

2-6

Copyright © 2000, 2001 ARM Limited. All rights reserved.

ARM DUI 0068B

Page 18
Image 18
ARM VERSION 1.2 manual ARM instruction set overview, Branch instructions, Data processing instructions