bi t 3 1
23 19 15 11 7 3 22 18 14 10 6 2 21 17 13 9 5 1
bi t 0
20 16 12 8 4 0
bi t 3 1
20 16 12 8 21 17 13 9 5 1 22 18 14 10 6 2
bi t 0
23 19 15 11 7 3
w ord16 half -w ord14 half -w ord12 w ord8 byte6 half -w ord4 byte3 byte2 byte1 byte0 (a) Little-endian memory organization byte address
4 0
w ord16 half -w ord12 half -w ord14 w ord8 byte5 half -w ord6 byte0 byte1 byte2 byte3 (b) Big-endian memory organization byte address
Us e Normal user code Processing fast interrupts Processing standard interrupts Processing software interrupts (SWIs) Processing memory faults Handling undefined instruction traps Running privileged operating system tasks
Ex c e p t i o n Reset Undefined instruction Software interrupt (SWI) Prefetch abort (instruction fetch memory fault) Data abort (data access memory fault) IRQ (normal interrupt) FIQ (fast interrupt)
31
28 27
cond
31
28 27
25 24 23
cond
101 L
(1) BX|BLX Rm
31 28 27 6 5 4 3 0
0001001011111111111100
L 1
Rm
25 24 23
1111 101 H
31
28 27
24 23
cond
1111
cond
0 0 # opcode S
Rn
Rd
operand 2
destination register first operand register set condition codes arithmetic/logic function
25
11
8 7
1
immediate alignment
11
#rot
8-bit immediate
7 6 5 4 3
#shift
25
Sh 0
Rm
Rs
register shift length
0 Sh 1
Rm
31
28 27
24 23
21 20 19
16 15
12 11
8 7
4 3
cond
0000
mul
S Rd/RdHi Rn/RdLo
Rs
1001
Rm
Multiply instructions
Me an i n g Multiply (32-bit result) Multiply-accumulate (32-bit result) Unsigned multiply long Unsigned multiply-accumulate long Signed multiply long Signed multiply-accumulate long
Ef f e c t Rd := (Rm * Rs) [31:0] Rd := (Rm * Rs + Rn) [31:0] RdHi:RdLo := Rm * Rs RdHi:RdLo += Rm * Rs RdHi:RdLo := Rm * Rs RdHi:RdLo += Rm * Rs
31
28 27
16 15
12 11
4 3
cond
Rd
00 000 001
Rm
destination register
source register
Single word and unsigned byte data transfer instruction binary encoding
31 28 27 26 25 24 23 22 21 20 19 16 15 12 11 0
cond
01 # P U BW L
Rn
Rd
of fset
source /d esti nati on regi ste r ba se regi ste r l oad /sto re wri te -ba ck (au to -i nd ex) un si gne d byte /wo rd up /d own pre-/post-i nde x
25
11
12-bit immediate
25
11
7 6 5 4 3
1
i mmedi ate sh ift l en gth shi ft type offse t regi ster
#shift
Sh 0
Rm
cond
000 P U # W L
Rn
Rd
of fsetH 1 S H 1 of fsetL
source /d esti nati on regi ste r ba se regi ste r l oad /sto re wri te -ba ck (au to -i nd ex) up /d own pre-/post-i nde x
22
11
Imm[7:4]
Imm[3:0]
22
11
0
offse t regi ster
0000
Rm
S 1 0 1
H 0 1 1
31
28 27
25 24 23 22 21 20 19
16 15
cond
100 P U SW L
Rn
register list
ba se regi ste r l oad /sto re wri te -ba ck (au to -i nd ex) resto re PS R a nd force user bi t up /d own pre-/post-i nde x
31
28 27
23 22 21 20 19
16 15
12 11
4 3
cond
00010
B 00
Rn
Rd
00001001
Rm
de sti natio n re gi ster ba se regi ste r un si gne d byte /wo rd source reg iste r
31
28 27
23 22 21
16 15
12 11
cond
00010
R 001111
Rd
000000000000
de sti natio n re gi ster SPS R/CPSR
cond
00 # 10 R 10
field
1111
operand
1
immediate alignment
25 11
#rot
8-bit immediate
4 3
0
operand register
00000000
Rm
31
28 27
24 23
20 19
16 15
12 11
8 7
5 4 3
cond
1110
Cop1
CRn
CRd
CP#
Cop2 0
CRm
cond
1 1 0 P U NW L
Rn
CRd
CP#
source /d esti nati on regi ste r ba se regi ste r l oad /sto re wri te -ba ck (au to -i nd ex) da ta size (cop ro cesso r de pen den t) up /d own pre-/post-i nde x
31
28 27
24 23
21 20 19
16 15
12 11
8 7
5 4 3
cond
1110
Cop1 L
CRn
Rd
CP#
Cop2 1
CRm
31
28 27
20 19
16 15
12 11
8 7
4 3
111 0
00 010 010
xxxx
x xx x
xxxx
01 11
xxxx
31
28 27
22 21 20 19
16 15
12 11
8 7
4 3
cond
000001
op
Rn
Rd
Rs
1001
Rm
31
28 27
23 22 21 20 19
16 15
12 11
8 7 6
4 3
Rn Rn Rn
Rd Rd Rd
Rs Rs #rot
op2
Rm Rm
0 op2 1
8-bit immediate
31
28 27
25 24 23 22 21 20 19
16 15
12 11
8 7 6 5 4 3
cond
000 P U BW L
Rn
Rd
Rs
1 op1 1
Rm
31
28 27
25 24 23 22 21 20 19
16 15
12 11
8 7
cond
1100
op 0 X
Rn
CRd
CP#
of fset
31
28 27
25 24
5 4 3
cond
011
X X X XX X X X X X X XX X X X X X X X
1 XXXX