The instruction set comprises ten basic instruction types:
Two of these make use of the on-chip arithmetic logic unit, barrel shifter and multiplier to perform high-speed operations on the data in a bank of 31 registers, each 32 bits wide.
Three classes of instruction control the data transfer between memory and the registers:
one optimized for flexibility of addressing
one for rapid context switching
one for swapping data
Two instructions control the flow and privilege level of execution.
Three types are dedicated to the control of external coprocessors which allow the functionality of the instruction set to be extended off-chip in an open and uniform way.
The ARM instruction set is a good target for compilers of many different high-level languages. Where required for critical code segments, assembly code programming is also straightforward, unlike some RISC processors which depend on sophisticated compiler technology to manage complicated instruction interdependencies.