Project

General

Profile

Instruction Set Architecture » History » Version 3

Alexander Protsenko, 03/15/2023 07:22 PM

1 1 Alexander Protsenko
h1. Instruction Set Architecture
2
3 3 Alexander Protsenko
h2. Data processing - immediate
4
5 1 Alexander Protsenko
h3. Arithmetic (immediate)
6
7
### ADD (immediate). Add.
8
Specification: add, add_32
9
### SUB (immediate). Subtract.
10
Specification: sub, sub_32
11
### ADDS (immediate). Add and set flags.
12
Specification: adds, adds_32
13
### SUBS (immediate). Subtract and set flags.
14
Specification: subs, subs_32
15
### CMP (immediate). Compare.
16
Specification: cmp, cmp_32
17
### CMN (immediate). Compare negative.
18
Specification: cmn, cmn_32
19
20
[2]: mov_sp
21
[3]: mov_sp_32
22
23
h3. Logical (immediate)
24
25
### AND (immediate). Bitwise AND
26
Specification: and_bitmask, and_bitmask_32
27
### ANDS (immediate). Bitwise AND and set flags
28
Specification: ands_bitmask, ands_bitmask_32
29
### EOR (immediate). Bitwise exclusive OR
30
Specification: eor_bitmask, eor_bitmask_32
31
### ORR (immediate). Bitwise inclusive OR
32
Specification: orr_bitmask, orr_bitmask_32
33
### TST (immediate). TST Test bits
34
Specification: tst_bitmask, tst_bitmask_32
35
36
h3. Move (wide immediate)
37
38
### MOVZ. Move wide with zero
39
Specification: movz, movz_32
40
### MOVN. Move wide with NOT
41
Specification: movn, movn_32
42
### MOVK. Move wide with keep
43
Specification: movk, movk_32
44
45
h3. Move (immediate)
46
47
### MOV (wide immediate). Move (wide immediate)
48
Specification: mov_wide_imm, mov_wide_imm_32
49
### MOV (inverted wide immediate). Move (inverted wide immediate)
50
Specification: mov_inv_wide_imm, mov_inv_wide_imm_32
51 2 Alexander Protsenko
### MOV (bitmask immediate). Move (bitmask immediate)
52 1 Alexander Protsenko
Specification: mov_bitmask, mov_bitmask_32
53
54 3 Alexander Protsenko
h3. PC-relative address calculation
55
56
### ADRP. Compute address of 4KB page at a PC-relative offset
57
Specification: adrp
58
### ADR. Compute address of label at a PC-relative offset.
59
Specification: adr
60
61
h3. Extract register
62
63
### EXTR. Extract register from pair
64
Specification: extr, extr_32
65
66
h2. Data processing - register
67
68
h3. Arithmetic (shifted register)
69
70
### ADD (shifted register). Add
71
Specification: add_sh_reg, add_sh_reg_32
72
### ADDS (shifted register). Add and set flags
73
Specification: adds_sh_reg, adds_sh_reg_32
74
### SUB (shifted register). Subtract
75
Specification: sub_sh_reg, sub_sh_reg_32
76
### SUBS (shifted register). Subtract and set flags
77
Specification: subs_sh_reg, subs_sh_reg_32
78
### CMN (shifted register). Compare negative
79
Specification: cmn_sh_reg, cmn_sh_reg_32
80
### CMP (shifted register). Compare
81
Specification: cmp_sh_reg, cmp_sh_reg_32
82
83
h3. Arithmetic (extending register)
84
85
### ADD (extended register). Add
86
Specification: add_ex_reg, add_ex_reg_32
87
### ADDS (extended register). Add and set flags
88
Specification: adds_ex_reg, adds_ex_reg_32
89
### SUB (extended register). Subtract
90
Specification: sub_ex_reg, sub_ex_reg_32
91
### SUBS (extended register). Subtract and set flags
92
Specification: subs_ex_reg, subs_ex_reg_32
93
### CMN (extended register). Compare negative
94
Specification: cmn_ex_reg, cmn_ex_reg_32
95
### CMP (extended register). Compare
96
Specification: cmp_ex_reg, cmp_ex_reg_32
97
98
h3. Logical (shifted register)
99
100 1 Alexander Protsenko
[93]: and_bitwise
101
[94]: and_bitwise_32
102
[95]: ands_bitwise
103
[96]: ands_bitwise_32
104
[97]: bic_bitwise
105
[98]: bic_bitwise_32
106
[99]: bics_bitwise
107
[100]: bics_bitwise_32
108
[101]: eon_bitwise
109
[102]: eon_bitwise_32
110
[103]: eor_bitwise
111
[104]: eor_bitwise_32
112
[105]: orr_bitwise
113
[106]: orr_bitwise_32
114
[107]: orn_bitwise
115
[108]: orn_bitwise_32
116
[109]: mvn_bitwise
117
[110]: mvn_bitwise_32
118
[111]: mov_reg
119
[112]: mov_reg_32
120
[113]: tst_bitwise
121
[114]: tst_bitwise_32
122 3 Alexander Protsenko
123
[47]: madd
124
[48]: madd_32
125
[49]: msub
126
[50]: msub_32
127
[51]: mneg
128
[52]: mneg_32
129
[53]: mul
130
[54]: mul_32
131
[55]: smaddl
132
[56]: smsubl
133
[57]: smnegl
134
[58]: smull
135
[59]: smulh
136
[60]: umaddl
137
[61]: umsubl
138
[62]: umnegl
139
[63]: umull
140
[64]: umulh
141
[65]: sdiv
142
[66]: sdiv_32
143
[67]: udiv
144
[68]: udiv_32
145
146 1 Alexander Protsenko
[115]: b
147
[116]: cbnz
148
[117]: cbnz_32
149
[118]: cbz
150
[119]: cbz_32
151
[120]: tbnz
152
[121]: tbz
153
[122]: b_imm
154
[123]: bl
155
[124]: blr
156
[125]: br
157
[126]: ret
158
[127]: ldr_postindex
159
[128]: str_postindex
160
[129]: ldxr
161
[130]: ldxr_32
162
[131]: ldxrb_32
163
[132]: ldxrh_32
164
[133]: ldxp
165
[134]: ldxp_32
166
[135]: stxr
167
[136]: stxr_32
168
[137]: stxrb_32
169
[138]: stxrh_32
170
[139]: stxp
171
[140]: stxp_32
172
[141]: ldar
173
[142]: ldar_32
174
[143]: ldarb
175
[144]: ldarh
176
[145]: stlr
177
[146]: stlr_32
178
[147]: stlrb
179
[148]: stlrh
180
[149]: ldaxr
181
[150]: ldaxr_32
182
[151]: ldaxrb_32
183
[152]: ldaxrh_32
184
[153]: ldaxp
185
[154]: ldaxp_32
186
[155]: stlxr
187
[156]: stlxr_32
188
[157]: stlxrb_32
189
[158]: stlxrh_32
190
[159]: stlxp
191
[160]: stlxp_32
192
[161]: svc
193
[162]: hvc
194
[163]: smc
195
[164]: eret
196
[165]: brk
197
[166]: hlt
198
[167]: dcps1
199
[168]: dcps2
200
[169]: dcps3
201
[170]: drps
202
[171]: mrs
203
[172]: msr
204
[173]: msr_dc
205
[174]: msr_ds
206
[175]: msr_ss
207
[176]: msr_uao
208
[177]: sys
209
[178]: sysl
210
[179]: ic
211
[180]: ic_reg
212
[181]: dc
213
[182]: at
214
[183]: tlbi
215
[184]: tlbi_reg
216
[185]: hint
217
[186]: nop
218
[187]: yield_op
219
[188]: wfe
220
[189]: wfi
221
[190]: sev
222
[191]: sevl
223
[192]: clrex
224
[193]: dsb
225
[194]: dmb
226
[195]: isb
227
228
[200]: psldr
229
[201]: psldr32