From WikiChip
< arm

v · d · e

ARMv2 is the second ARM instruction set version which was introduced by Acorn with the release of the ARM2 in 1986. The ARMv2 was the first instruction set to be used commercially.


The ARMv2 is the second iteration of the ARM instruction set which was introduced with Acorn's ARM2 in 1986. The ARMv2 added support for multiplication and a coprocessor communication interface. It also adds two additional status registers for a total of 27 registers.

New Instructions[edit]

ARMv2 adds a number of new instructions:

New ARMv2 ISA Instructions
Mnemonic Syntax Description Action
Movement Instructions
Movement instructions move data between registers and operands.
MCRMCR<cond> <copro>, <op1>, Rd, Cn, Cm {, <op2>}Move to Coprocessor registerCoprocessor <copro> = Rd
MRCMRC<cond> <copro>, <op1>, Rd, Cn, Cm , <op2>Move register from a CoprocessorRd = Coprocessor <copro>
Load Instructions
Load instructions move the content of memory addresses into registers.
LDCLDC<cond>{L} <copro>, Cd, [Rn {, #imm * 4}]{!}Load to CoprocessorCoprocessor <copro> = [Rn + imm]
If !: Rn = Rn + imm
LDCLDC<cond>{L} <copro>, Cd, [Rn], #{-}<immed8> * 4Load to CoprocessorCoprocessor <copro> = [Rn + imm]
Rn = Rn + imm
LDCLDC<cond>{L} <copro>, Cd, [Rn], <option>Load to CoprocessorCoprocessor <copro> = [Rn]
Store Instructions
Store instructions moves the values from registers into memory.
STCSTC<cond>{L} <copro>, Cd, [Rn {, #imm * 4}]{!}Store from Coprocessor[Rn + imm] = Coprocessor <copro>
If !: Rn = Rn + imm
STCSTC<cond>{L} <copro>, Cd, [Rn], #{-}<immed8> * 4Store from Coprocessor[Rn + imm] = Coprocessor <copro>
Rn = Rn + imm
STCSTC<cond>{L} <copro>, Cd, [Rn], <option>Store from Coprocessor[Rn] = Coprocessor <copro>
Coprocessor Instructions
Operates on a Coprocessor.
CDPCDP<cond> <copro>, <op1>, Cd, Cn, Cm, <op2>Coprocessor Data ProcessExecut OP Given on Coprocessor <copro>
Arithmetic Instructions
Arithmetic instructions perform basic mathematical operations on two operands.
MLAMLA<cond>{S} Rd, Rm, Rs, RnMultiply and accumulateRd = (Rm * Rs) + Rn
MULMUL<cond>{S} Rd, Rm, RsMultiplyRd = Rm * Rs