1 | /** @file
|
---|
2 | * Disassembler - Opcodes
|
---|
3 | */
|
---|
4 |
|
---|
5 | /*
|
---|
6 | * Copyright (C) 2023-2024 Oracle and/or its affiliates.
|
---|
7 | *
|
---|
8 | * This file is part of VirtualBox base platform packages, as
|
---|
9 | * available from https://www.virtualbox.org.
|
---|
10 | *
|
---|
11 | * This program is free software; you can redistribute it and/or
|
---|
12 | * modify it under the terms of the GNU General Public License
|
---|
13 | * as published by the Free Software Foundation, in version 3 of the
|
---|
14 | * License.
|
---|
15 | *
|
---|
16 | * This program is distributed in the hope that it will be useful, but
|
---|
17 | * WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
19 | * General Public License for more details.
|
---|
20 | *
|
---|
21 | * You should have received a copy of the GNU General Public License
|
---|
22 | * along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
23 | *
|
---|
24 | * The contents of this file may alternatively be used under the terms
|
---|
25 | * of the Common Development and Distribution License Version 1.0
|
---|
26 | * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
|
---|
27 | * in the VirtualBox distribution, in which case the provisions of the
|
---|
28 | * CDDL are applicable instead of those of the GPL.
|
---|
29 | *
|
---|
30 | * You may elect to license modified versions of this file under the
|
---|
31 | * terms and conditions of either the GPL or the CDDL or both.
|
---|
32 | *
|
---|
33 | * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
|
---|
34 | */
|
---|
35 |
|
---|
36 | #ifndef VBOX_INCLUDED_disopcode_armv8_h
|
---|
37 | #define VBOX_INCLUDED_disopcode_armv8_h
|
---|
38 | #ifndef RT_WITHOUT_PRAGMA_ONCE
|
---|
39 | # pragma once
|
---|
40 | #endif
|
---|
41 |
|
---|
42 | #include <iprt/assert.h>
|
---|
43 |
|
---|
44 | /** @defgroup grp_dis_opcodes_armv8 Opcodes (DISOPCODE::uOpCode)
|
---|
45 | * @ingroup grp_dis
|
---|
46 | * @{
|
---|
47 | */
|
---|
48 | enum OPCODESARMV8
|
---|
49 | {
|
---|
50 | /** @name Full ARMv8 AArch64 opcode list.
|
---|
51 | * @{ */
|
---|
52 | OP_ARMV8_INVALID = 0,
|
---|
53 | OP_ARMV8_A64_ABS,
|
---|
54 | OP_ARMV8_A64_ADC,
|
---|
55 | OP_ARMV8_A64_ADCS,
|
---|
56 | OP_ARMV8_A64_ADD,
|
---|
57 | OP_ARMV8_A64_ADDG,
|
---|
58 | OP_ARMV8_A64_ADDS,
|
---|
59 | OP_ARMV8_A64_ADR,
|
---|
60 | OP_ARMV8_A64_ADRP,
|
---|
61 | OP_ARMV8_A64_AND,
|
---|
62 | OP_ARMV8_A64_ANDS,
|
---|
63 | OP_ARMV8_A64_ASR,
|
---|
64 | OP_ARMV8_A64_ASRV,
|
---|
65 | OP_ARMV8_A64_AT,
|
---|
66 | OP_ARMV8_A64_AUTDA,
|
---|
67 | OP_ARMV8_A64_AUTDZA,
|
---|
68 | OP_ARMV8_A64_AUTDB,
|
---|
69 | OP_ARMV8_A64_AUTDZB,
|
---|
70 | OP_ARMV8_A64_AUTIA,
|
---|
71 | OP_ARMV8_A64_AUTIA1716,
|
---|
72 | OP_ARMV8_A64_AUTIASP,
|
---|
73 | OP_ARMV8_A64_AUTIAZ,
|
---|
74 | OP_ARMV8_A64_AUTIZA,
|
---|
75 | OP_ARMV8_A64_AUTIB,
|
---|
76 | OP_ARMV8_A64_AUTIB1716,
|
---|
77 | OP_ARMV8_A64_AUTIBSP,
|
---|
78 | OP_ARMV8_A64_AUTIBZ,
|
---|
79 | OP_ARMV8_A64_AUTIZB,
|
---|
80 | OP_ARMV8_A64_AXFLAG,
|
---|
81 | OP_ARMV8_A64_B,
|
---|
82 | OP_ARMV8_A64_BC,
|
---|
83 | OP_ARMV8_A64_BFC,
|
---|
84 | OP_ARMV8_A64_BFI,
|
---|
85 | OP_ARMV8_A64_BFM,
|
---|
86 | OP_ARMV8_A64_BFXIL,
|
---|
87 | OP_ARMV8_A64_BIC,
|
---|
88 | OP_ARMV8_A64_BICS,
|
---|
89 | OP_ARMV8_A64_BL,
|
---|
90 | OP_ARMV8_A64_BLR,
|
---|
91 | OP_ARMV8_A64_BLRAA,
|
---|
92 | OP_ARMV8_A64_BLRAAZ,
|
---|
93 | OP_ARMV8_A64_BLRAB,
|
---|
94 | OP_ARMV8_A64_BLRABZ,
|
---|
95 | OP_ARMV8_A64_BR,
|
---|
96 | OP_ARMV8_A64_BRAA,
|
---|
97 | OP_ARMV8_A64_BRAAZ,
|
---|
98 | OP_ARMV8_A64_BRAB,
|
---|
99 | OP_ARMV8_A64_BRABZ,
|
---|
100 | OP_ARMV8_A64_BRB,
|
---|
101 | OP_ARMV8_A64_BRK,
|
---|
102 | OP_ARMV8_A64_BTI,
|
---|
103 | OP_ARMV8_A64_BTI_C,
|
---|
104 | OP_ARMV8_A64_BTI_J,
|
---|
105 | OP_ARMV8_A64_BTI_JC,
|
---|
106 | OP_ARMV8_A64_CASB,
|
---|
107 | OP_ARMV8_A64_CASAB,
|
---|
108 | OP_ARMV8_A64_CASALB,
|
---|
109 | OP_ARMV8_A64_CASLB,
|
---|
110 | OP_ARMV8_A64_CASH,
|
---|
111 | OP_ARMV8_A64_CASAH,
|
---|
112 | OP_ARMV8_A64_CASALH,
|
---|
113 | OP_ARMV8_A64_CASLH,
|
---|
114 | OP_ARMV8_A64_CASP,
|
---|
115 | OP_ARMV8_A64_CASPA,
|
---|
116 | OP_ARMV8_A64_CASPAL,
|
---|
117 | OP_ARMV8_A64_CASPL,
|
---|
118 | OP_ARMV8_A64_CAS,
|
---|
119 | OP_ARMV8_A64_CASA,
|
---|
120 | OP_ARMV8_A64_CASAL,
|
---|
121 | OP_ARMV8_A64_CASL,
|
---|
122 | OP_ARMV8_A64_CBNZ,
|
---|
123 | OP_ARMV8_A64_CBZ,
|
---|
124 | OP_ARMV8_A64_CCMN,
|
---|
125 | OP_ARMV8_A64_CCMP,
|
---|
126 | OP_ARMV8_A64_CFINV,
|
---|
127 | OP_ARMV8_A64_CFP,
|
---|
128 | OP_ARMV8_A64_CHKFEAT,
|
---|
129 | OP_ARMV8_A64_CINC,
|
---|
130 | OP_ARMV8_A64_CINV,
|
---|
131 | OP_ARMV8_A64_CLRBHB,
|
---|
132 | OP_ARMV8_A64_CLREX,
|
---|
133 | OP_ARMV8_A64_CLS,
|
---|
134 | OP_ARMV8_A64_CLZ,
|
---|
135 | OP_ARMV8_A64_CMN,
|
---|
136 | OP_ARMV8_A64_CMP,
|
---|
137 | OP_ARMV8_A64_CMPP,
|
---|
138 | OP_ARMV8_A64_CNEG,
|
---|
139 | OP_ARMV8_A64_CNT,
|
---|
140 | OP_ARMV8_A64_CPP,
|
---|
141 | /** @todo FEAT_MOPS instructions (CPYFP and friends). */
|
---|
142 | OP_ARMV8_A64_CRC32B,
|
---|
143 | OP_ARMV8_A64_CRC32H,
|
---|
144 | OP_ARMV8_A64_CRC32W,
|
---|
145 | OP_ARMV8_A64_CRC32X,
|
---|
146 | OP_ARMV8_A64_CRC32CB,
|
---|
147 | OP_ARMV8_A64_CRC32CH,
|
---|
148 | OP_ARMV8_A64_CRC32CW,
|
---|
149 | OP_ARMV8_A64_CRC32CX,
|
---|
150 | OP_ARMV8_A64_CSDB,
|
---|
151 | OP_ARMV8_A64_CSEL,
|
---|
152 | OP_ARMV8_A64_CSET,
|
---|
153 | OP_ARMV8_A64_CSETM,
|
---|
154 | OP_ARMV8_A64_CSINC,
|
---|
155 | OP_ARMV8_A64_CSNEG,
|
---|
156 | OP_ARMV8_A64_CTZ,
|
---|
157 | OP_ARMV8_A64_DC,
|
---|
158 | OP_ARMV8_A64_DCPS1,
|
---|
159 | OP_ARMV8_A64_DCPS2,
|
---|
160 | OP_ARMV8_A64_DCPS3,
|
---|
161 | OP_ARMV8_A64_DGH,
|
---|
162 | OP_ARMV8_A64_DMB,
|
---|
163 | OP_ARMV8_A64_DRPS,
|
---|
164 | OP_ARMV8_A64_DSB,
|
---|
165 | OP_ARMV8_A64_DVP,
|
---|
166 | OP_ARMV8_A64_EON,
|
---|
167 | OP_ARMV8_A64_EOR,
|
---|
168 | OP_ARMV8_A64_ERET,
|
---|
169 | OP_ARMV8_A64_ERETAA,
|
---|
170 | OP_ARMV8_A64_ERETAB,
|
---|
171 | OP_ARMV8_A64_ESB,
|
---|
172 | OP_ARMV8_A64_EXTR,
|
---|
173 | OP_ARMV8_A64_FABS,
|
---|
174 | OP_ARMV8_A64_FADD,
|
---|
175 | OP_ARMV8_A64_FCCMP,
|
---|
176 | OP_ARMV8_A64_FCCMPE,
|
---|
177 | OP_ARMV8_A64_FCMP,
|
---|
178 | OP_ARMV8_A64_FCMPE,
|
---|
179 | OP_ARMV8_A64_FCSEL,
|
---|
180 | OP_ARMV8_A64_FCVT,
|
---|
181 | OP_ARMV8_A64_FCVTZS,
|
---|
182 | OP_ARMV8_A64_FCVTZU,
|
---|
183 | OP_ARMV8_A64_FDIV,
|
---|
184 | OP_ARMV8_A64_FMADD,
|
---|
185 | OP_ARMV8_A64_FMAX,
|
---|
186 | OP_ARMV8_A64_FMAXNM,
|
---|
187 | OP_ARMV8_A64_FMIN,
|
---|
188 | OP_ARMV8_A64_FMINNM,
|
---|
189 | OP_ARMV8_A64_FMOV,
|
---|
190 | OP_ARMV8_A64_FMSUB,
|
---|
191 | OP_ARMV8_A64_FMUL,
|
---|
192 | OP_ARMV8_A64_FNEG,
|
---|
193 | OP_ARMV8_A64_FNMADD,
|
---|
194 | OP_ARMV8_A64_FNMSUB,
|
---|
195 | OP_ARMV8_A64_FNMUL,
|
---|
196 | OP_ARMV8_A64_FRINT32X,
|
---|
197 | OP_ARMV8_A64_FRINT32Z,
|
---|
198 | OP_ARMV8_A64_FRINT64X,
|
---|
199 | OP_ARMV8_A64_FRINT64Z,
|
---|
200 | OP_ARMV8_A64_FRINTA,
|
---|
201 | OP_ARMV8_A64_FRINTI,
|
---|
202 | OP_ARMV8_A64_FRINTM,
|
---|
203 | OP_ARMV8_A64_FRINTN,
|
---|
204 | OP_ARMV8_A64_FRINTP,
|
---|
205 | OP_ARMV8_A64_FRINTX,
|
---|
206 | OP_ARMV8_A64_FRINTZ,
|
---|
207 | OP_ARMV8_A64_FSQRT,
|
---|
208 | OP_ARMV8_A64_FSUB,
|
---|
209 | OP_ARMV8_A64_GCSB,
|
---|
210 | OP_ARMV8_A64_GMI,
|
---|
211 | OP_ARMV8_A64_HINT,
|
---|
212 | OP_ARMV8_A64_HLT,
|
---|
213 | OP_ARMV8_A64_HVC,
|
---|
214 | OP_ARMV8_A64_IC,
|
---|
215 | OP_ARMV8_A64_IRG,
|
---|
216 | OP_ARMV8_A64_ISB,
|
---|
217 | OP_ARMV8_A64_LD1,
|
---|
218 | OP_ARMV8_A64_LD2,
|
---|
219 | OP_ARMV8_A64_LD3,
|
---|
220 | OP_ARMV8_A64_LD4,
|
---|
221 | OP_ARMV8_A64_LD64B,
|
---|
222 | OP_ARMV8_A64_LDADDB,
|
---|
223 | OP_ARMV8_A64_LDADDAB,
|
---|
224 | OP_ARMV8_A64_LDADDALB,
|
---|
225 | OP_ARMV8_A64_LDADDLB,
|
---|
226 | OP_ARMV8_A64_LDADDH,
|
---|
227 | OP_ARMV8_A64_LDADDAH,
|
---|
228 | OP_ARMV8_A64_LDADDALH,
|
---|
229 | OP_ARMV8_A64_LDADDLH,
|
---|
230 | OP_ARMV8_A64_LDADD,
|
---|
231 | OP_ARMV8_A64_LDADDA,
|
---|
232 | OP_ARMV8_A64_LDADDAL,
|
---|
233 | OP_ARMV8_A64_LDADDL,
|
---|
234 | OP_ARMV8_A64_LDAPR,
|
---|
235 | OP_ARMV8_A64_LDAPRB,
|
---|
236 | OP_ARMV8_A64_LDAPRH,
|
---|
237 | OP_ARMV8_A64_LDAPUR,
|
---|
238 | OP_ARMV8_A64_LDAPURB,
|
---|
239 | OP_ARMV8_A64_LDAPURH,
|
---|
240 | OP_ARMV8_A64_LDAPURSB,
|
---|
241 | OP_ARMV8_A64_LDAPURSH,
|
---|
242 | OP_ARMV8_A64_LDAPURSW,
|
---|
243 | OP_ARMV8_A64_LDAR,
|
---|
244 | OP_ARMV8_A64_LDARB,
|
---|
245 | OP_ARMV8_A64_LDARH,
|
---|
246 | OP_ARMV8_A64_LDAXP,
|
---|
247 | OP_ARMV8_A64_LDAXR,
|
---|
248 | OP_ARMV8_A64_LDAXRB,
|
---|
249 | OP_ARMV8_A64_LDAXRH,
|
---|
250 | OP_ARMV8_A64_LDCLRB,
|
---|
251 | OP_ARMV8_A64_LDCLRAB,
|
---|
252 | OP_ARMV8_A64_LDCLRALB,
|
---|
253 | OP_ARMV8_A64_LDCLRLB,
|
---|
254 | OP_ARMV8_A64_LDCLRH,
|
---|
255 | OP_ARMV8_A64_LDCLRAH,
|
---|
256 | OP_ARMV8_A64_LDCLRALH,
|
---|
257 | OP_ARMV8_A64_LDCLRLH,
|
---|
258 | OP_ARMV8_A64_LDCLR,
|
---|
259 | OP_ARMV8_A64_LDCLRA,
|
---|
260 | OP_ARMV8_A64_LDCLRAL,
|
---|
261 | OP_ARMV8_A64_LDCLRL,
|
---|
262 | OP_ARMV8_A64_LDEORB,
|
---|
263 | OP_ARMV8_A64_LDEORAB,
|
---|
264 | OP_ARMV8_A64_LDEORALB,
|
---|
265 | OP_ARMV8_A64_LDEORLB,
|
---|
266 | OP_ARMV8_A64_LDEORH,
|
---|
267 | OP_ARMV8_A64_LDEORAH,
|
---|
268 | OP_ARMV8_A64_LDEORALH,
|
---|
269 | OP_ARMV8_A64_LDEORLH,
|
---|
270 | OP_ARMV8_A64_LDEOR,
|
---|
271 | OP_ARMV8_A64_LDEORA,
|
---|
272 | OP_ARMV8_A64_LDEORAL,
|
---|
273 | OP_ARMV8_A64_LDEORL,
|
---|
274 | OP_ARMV8_A64_LDG,
|
---|
275 | OP_ARMV8_A64_LDGM,
|
---|
276 | OP_ARMV8_A64_LDLARB,
|
---|
277 | OP_ARMV8_A64_LDLARH,
|
---|
278 | OP_ARMV8_A64_LDLAR,
|
---|
279 | OP_ARMV8_A64_LDNP,
|
---|
280 | OP_ARMV8_A64_LDP,
|
---|
281 | OP_ARMV8_A64_LDPSW,
|
---|
282 | OP_ARMV8_A64_LDR,
|
---|
283 | OP_ARMV8_A64_LDRAA,
|
---|
284 | OP_ARMV8_A64_LDRAB,
|
---|
285 | OP_ARMV8_A64_LDRB,
|
---|
286 | OP_ARMV8_A64_LDRH,
|
---|
287 | OP_ARMV8_A64_LDRSB,
|
---|
288 | OP_ARMV8_A64_LDRSH,
|
---|
289 | OP_ARMV8_A64_LDRSW,
|
---|
290 | OP_ARMV8_A64_LDSETB,
|
---|
291 | OP_ARMV8_A64_LDSETAB,
|
---|
292 | OP_ARMV8_A64_LDSETALB,
|
---|
293 | OP_ARMV8_A64_LDSETLB,
|
---|
294 | OP_ARMV8_A64_LDSETH,
|
---|
295 | OP_ARMV8_A64_LDSETAH,
|
---|
296 | OP_ARMV8_A64_LDSETALH,
|
---|
297 | OP_ARMV8_A64_LDSETLH,
|
---|
298 | OP_ARMV8_A64_LDSET,
|
---|
299 | OP_ARMV8_A64_LDSETA,
|
---|
300 | OP_ARMV8_A64_LDSETAL,
|
---|
301 | OP_ARMV8_A64_LDSETL,
|
---|
302 | OP_ARMV8_A64_LDSMAB,
|
---|
303 | OP_ARMV8_A64_LDSMAXAB,
|
---|
304 | OP_ARMV8_A64_LDSMAXALB,
|
---|
305 | OP_ARMV8_A64_LDSMAXB,
|
---|
306 | OP_ARMV8_A64_LDSMAXLB,
|
---|
307 | OP_ARMV8_A64_LDSMAXH,
|
---|
308 | OP_ARMV8_A64_LDSMAXAH,
|
---|
309 | OP_ARMV8_A64_LDSMAXALH,
|
---|
310 | OP_ARMV8_A64_LDSMAXLH,
|
---|
311 | OP_ARMV8_A64_LDSMAX,
|
---|
312 | OP_ARMV8_A64_LDSMAXA,
|
---|
313 | OP_ARMV8_A64_LDSMAXAL,
|
---|
314 | OP_ARMV8_A64_LDSMAXL,
|
---|
315 | OP_ARMV8_A64_LDSMINB,
|
---|
316 | OP_ARMV8_A64_LDSMINAB,
|
---|
317 | OP_ARMV8_A64_LDSMINALB,
|
---|
318 | OP_ARMV8_A64_LDSMINLB,
|
---|
319 | OP_ARMV8_A64_LDSMINH,
|
---|
320 | OP_ARMV8_A64_LDSMINAH,
|
---|
321 | OP_ARMV8_A64_LDSMINALH,
|
---|
322 | OP_ARMV8_A64_LDSMINLH,
|
---|
323 | OP_ARMV8_A64_LDSMIN,
|
---|
324 | OP_ARMV8_A64_LDSMINA,
|
---|
325 | OP_ARMV8_A64_LDSMINAL,
|
---|
326 | OP_ARMV8_A64_LDSMINL,
|
---|
327 | OP_ARMV8_A64_LDTR,
|
---|
328 | OP_ARMV8_A64_LDTRB,
|
---|
329 | OP_ARMV8_A64_LDTRH,
|
---|
330 | OP_ARMV8_A64_LDTRSB,
|
---|
331 | OP_ARMV8_A64_LDTRSH,
|
---|
332 | OP_ARMV8_A64_LDTRSW,
|
---|
333 | OP_ARMV8_A64_LDUMAXB,
|
---|
334 | OP_ARMV8_A64_LDUMAXAB,
|
---|
335 | OP_ARMV8_A64_LDUMAXALB,
|
---|
336 | OP_ARMV8_A64_LDUMAXLB,
|
---|
337 | OP_ARMV8_A64_LDUMAXH,
|
---|
338 | OP_ARMV8_A64_LDUMAXAH,
|
---|
339 | OP_ARMV8_A64_LDUMAXALH,
|
---|
340 | OP_ARMV8_A64_LDUMAXLH,
|
---|
341 | OP_ARMV8_A64_LDUMAX,
|
---|
342 | OP_ARMV8_A64_LDUMAXA,
|
---|
343 | OP_ARMV8_A64_LDUMAXAL,
|
---|
344 | OP_ARMV8_A64_LDUMAXL,
|
---|
345 | OP_ARMV8_A64_LDUMINB,
|
---|
346 | OP_ARMV8_A64_LDUMINAB,
|
---|
347 | OP_ARMV8_A64_LDUMINALB,
|
---|
348 | OP_ARMV8_A64_LDUMINLB,
|
---|
349 | OP_ARMV8_A64_LDUMINH,
|
---|
350 | OP_ARMV8_A64_LDUMINAH,
|
---|
351 | OP_ARMV8_A64_LDUMINALH,
|
---|
352 | OP_ARMV8_A64_LDUMINLH,
|
---|
353 | OP_ARMV8_A64_LDUMIN,
|
---|
354 | OP_ARMV8_A64_LDUMINA,
|
---|
355 | OP_ARMV8_A64_LDUMINAL,
|
---|
356 | OP_ARMV8_A64_LDUMINL,
|
---|
357 | OP_ARMV8_A64_LDUR,
|
---|
358 | OP_ARMV8_A64_LDURB,
|
---|
359 | OP_ARMV8_A64_LDURH,
|
---|
360 | OP_ARMV8_A64_LDURSB,
|
---|
361 | OP_ARMV8_A64_LDURSH,
|
---|
362 | OP_ARMV8_A64_LDURSW,
|
---|
363 | OP_ARMV8_A64_LDXP,
|
---|
364 | OP_ARMV8_A64_LDXR,
|
---|
365 | OP_ARMV8_A64_LDXRB,
|
---|
366 | OP_ARMV8_A64_LDXRH,
|
---|
367 | OP_ARMV8_A64_LSL,
|
---|
368 | OP_ARMV8_A64_LSLV,
|
---|
369 | OP_ARMV8_A64_LSR,
|
---|
370 | OP_ARMV8_A64_LSRV,
|
---|
371 | OP_ARMV8_A64_MADD,
|
---|
372 | OP_ARMV8_A64_MNEG,
|
---|
373 | OP_ARMV8_A64_MOV,
|
---|
374 | OP_ARMV8_A64_MOVK,
|
---|
375 | OP_ARMV8_A64_MOVN,
|
---|
376 | OP_ARMV8_A64_MOVZ,
|
---|
377 | OP_ARMV8_A64_MRS,
|
---|
378 | OP_ARMV8_A64_MSR,
|
---|
379 | OP_ARMV8_A64_MSUB,
|
---|
380 | OP_ARMV8_A64_MUL,
|
---|
381 | OP_ARMV8_A64_MVN,
|
---|
382 | OP_ARMV8_A64_NEG,
|
---|
383 | OP_ARMV8_A64_NEGS,
|
---|
384 | OP_ARMV8_A64_NGC,
|
---|
385 | OP_ARMV8_A64_NGCS,
|
---|
386 | OP_ARMV8_A64_NOP,
|
---|
387 | OP_ARMV8_A64_ORR,
|
---|
388 | OP_ARMV8_A64_ORN,
|
---|
389 | OP_ARMV8_A64_PACDA,
|
---|
390 | OP_ARMV8_A64_PACDZA,
|
---|
391 | OP_ARMV8_A64_PACDB,
|
---|
392 | OP_ARMV8_A64_PACDZB,
|
---|
393 | OP_ARMV8_A64_PACGA,
|
---|
394 | OP_ARMV8_A64_PACIA,
|
---|
395 | OP_ARMV8_A64_PACIA1716,
|
---|
396 | OP_ARMV8_A64_PACIASP,
|
---|
397 | OP_ARMV8_A64_PACIAZ,
|
---|
398 | OP_ARMV8_A64_PACIZA,
|
---|
399 | OP_ARMV8_A64_PACIB,
|
---|
400 | OP_ARMV8_A64_PACIB1716,
|
---|
401 | OP_ARMV8_A64_PACIBSP,
|
---|
402 | OP_ARMV8_A64_PACIBZ,
|
---|
403 | OP_ARMV8_A64_PACIBZB,
|
---|
404 | OP_ARMV8_A64_PRFM,
|
---|
405 | OP_ARMV8_A64_PRFUM,
|
---|
406 | OP_ARMV8_A64_PSB,
|
---|
407 | OP_ARMV8_A64_PSBSYNC,
|
---|
408 | OP_ARMV8_A64_PSSBB,
|
---|
409 | OP_ARMV8_A64_RBIT,
|
---|
410 | OP_ARMV8_A64_RCWCAS,
|
---|
411 | OP_ARMV8_A64_RCWCASA,
|
---|
412 | OP_ARMV8_A64_RCWCASAL,
|
---|
413 | OP_ARMV8_A64_RCWCASL,
|
---|
414 | OP_ARMV8_A64_RCWCASP,
|
---|
415 | OP_ARMV8_A64_RCWCASPA,
|
---|
416 | OP_ARMV8_A64_RCWCASPAL,
|
---|
417 | OP_ARMV8_A64_RCWCASPL,
|
---|
418 | OP_ARMV8_A64_RCWCLR,
|
---|
419 | OP_ARMV8_A64_RCWCLRA,
|
---|
420 | OP_ARMV8_A64_RCWCLRAL,
|
---|
421 | OP_ARMV8_A64_RCWCLRL,
|
---|
422 | OP_ARMV8_A64_RCWSCAS,
|
---|
423 | OP_ARMV8_A64_RCWSCASA,
|
---|
424 | OP_ARMV8_A64_RCWSCASAL,
|
---|
425 | OP_ARMV8_A64_RCWSCASL,
|
---|
426 | OP_ARMV8_A64_RCWSCASP,
|
---|
427 | OP_ARMV8_A64_RCWSCASPA,
|
---|
428 | OP_ARMV8_A64_RCWSCASPAL,
|
---|
429 | OP_ARMV8_A64_RCWSCASPL,
|
---|
430 | OP_ARMV8_A64_RCWSCLR,
|
---|
431 | OP_ARMV8_A64_RCWSCLRA,
|
---|
432 | OP_ARMV8_A64_RCWSCLRAL,
|
---|
433 | OP_ARMV8_A64_RCWSCLRL,
|
---|
434 | OP_ARMV8_A64_RCWSET,
|
---|
435 | OP_ARMV8_A64_RCWSETA,
|
---|
436 | OP_ARMV8_A64_RCWSETAL,
|
---|
437 | OP_ARMV8_A64_RCWSETL,
|
---|
438 | OP_ARMV8_A64_RCWSSET,
|
---|
439 | OP_ARMV8_A64_RCWSSETA,
|
---|
440 | OP_ARMV8_A64_RCWSSETAL,
|
---|
441 | OP_ARMV8_A64_RCWSSETL,
|
---|
442 | OP_ARMV8_A64_RCWSSWP,
|
---|
443 | OP_ARMV8_A64_RCWSSWPA,
|
---|
444 | OP_ARMV8_A64_RCWSSWPAL,
|
---|
445 | OP_ARMV8_A64_RCWSSWPL,
|
---|
446 | OP_ARMV8_A64_RCWSWP,
|
---|
447 | OP_ARMV8_A64_RCWSWPA,
|
---|
448 | OP_ARMV8_A64_RCWSWPAL,
|
---|
449 | OP_ARMV8_A64_RCWSWPL,
|
---|
450 | OP_ARMV8_A64_RET,
|
---|
451 | OP_ARMV8_A64_RETAA,
|
---|
452 | OP_ARMV8_A64_RETAB,
|
---|
453 | OP_ARMV8_A64_REV,
|
---|
454 | OP_ARMV8_A64_REV16,
|
---|
455 | OP_ARMV8_A64_REV32,
|
---|
456 | OP_ARMV8_A64_RMIF,
|
---|
457 | OP_ARMV8_A64_ROR,
|
---|
458 | OP_ARMV8_A64_RORV,
|
---|
459 | OP_ARMV8_A64_SB,
|
---|
460 | OP_ARMV8_A64_SBC,
|
---|
461 | OP_ARMV8_A64_SBCS,
|
---|
462 | OP_ARMV8_A64_SBFIZ,
|
---|
463 | OP_ARMV8_A64_SBFM,
|
---|
464 | OP_ARMV8_A64_SBFX,
|
---|
465 | OP_ARMV8_A64_SCVTF,
|
---|
466 | OP_ARMV8_A64_SDIV,
|
---|
467 | OP_ARMV8_A64_SETF8,
|
---|
468 | OP_ARMV8_A64_SETF16,
|
---|
469 | OP_ARMV8_A64_SETGP,
|
---|
470 | OP_ARMV8_A64_SETGM,
|
---|
471 | OP_ARMV8_A64_SETGE,
|
---|
472 | OP_ARMV8_A64_SETGPN,
|
---|
473 | OP_ARMV8_A64_SETGMN,
|
---|
474 | OP_ARMV8_A64_SETGEN,
|
---|
475 | OP_ARMV8_A64_SETGPT,
|
---|
476 | OP_ARMV8_A64_SETGMT,
|
---|
477 | OP_ARMV8_A64_SETGET,
|
---|
478 | OP_ARMV8_A64_SETGPTN,
|
---|
479 | OP_ARMV8_A64_SETGMTN,
|
---|
480 | OP_ARMV8_A64_SETGETN,
|
---|
481 | OP_ARMV8_A64_SETP,
|
---|
482 | OP_ARMV8_A64_SETM,
|
---|
483 | OP_ARMV8_A64_SETE,
|
---|
484 | OP_ARMV8_A64_SETPN,
|
---|
485 | OP_ARMV8_A64_SETMNM,
|
---|
486 | OP_ARMV8_A64_SETEN,
|
---|
487 | OP_ARMV8_A64_SETPT,
|
---|
488 | OP_ARMV8_A64_SETMT,
|
---|
489 | OP_ARMV8_A64_SETET,
|
---|
490 | OP_ARMV8_A64_SETPTN,
|
---|
491 | OP_ARMV8_A64_SETMTN,
|
---|
492 | OP_ARMV8_A64_SETETN,
|
---|
493 | OP_ARMV8_A64_SEV,
|
---|
494 | OP_ARMV8_A64_SEVL,
|
---|
495 | OP_ARMV8_A64_SHL,
|
---|
496 | OP_ARMV8_A64_SMADDL,
|
---|
497 | OP_ARMV8_A64_SMAX,
|
---|
498 | OP_ARMV8_A64_SMC,
|
---|
499 | OP_ARMV8_A64_SMIN,
|
---|
500 | OP_ARMV8_A64_SMNEGL,
|
---|
501 | OP_ARMV8_A64_SMSTART,
|
---|
502 | OP_ARMV8_A64_SMSTOP,
|
---|
503 | OP_ARMV8_A64_SMSUBL,
|
---|
504 | OP_ARMV8_A64_SMULH,
|
---|
505 | OP_ARMV8_A64_SMULL,
|
---|
506 | OP_ARMV8_A64_SQRSHRN,
|
---|
507 | OP_ARMV8_A64_SQSHL,
|
---|
508 | OP_ARMV8_A64_SQSHRN,
|
---|
509 | OP_ARMV8_A64_SRSHR,
|
---|
510 | OP_ARMV8_A64_SRSRA,
|
---|
511 | OP_ARMV8_A64_SSBB,
|
---|
512 | OP_ARMV8_A64_SSHR,
|
---|
513 | OP_ARMV8_A64_SSRA,
|
---|
514 | OP_ARMV8_A64_ST1,
|
---|
515 | OP_ARMV8_A64_ST2,
|
---|
516 | OP_ARMV8_A64_ST2G,
|
---|
517 | OP_ARMV8_A64_ST3,
|
---|
518 | OP_ARMV8_A64_ST4,
|
---|
519 | OP_ARMV8_A64_ST64B,
|
---|
520 | OP_ARMV8_A64_ST64BV0,
|
---|
521 | OP_ARMV8_A64_STADDB,
|
---|
522 | OP_ARMV8_A64_STADDLB,
|
---|
523 | OP_ARMV8_A64_STADDH,
|
---|
524 | OP_ARMV8_A64_STADDLH,
|
---|
525 | OP_ARMV8_A64_STADD,
|
---|
526 | OP_ARMV8_A64_STADDL,
|
---|
527 | OP_ARMV8_A64_STCLRB,
|
---|
528 | OP_ARMV8_A64_STCLRLB,
|
---|
529 | OP_ARMV8_A64_STCLRH,
|
---|
530 | OP_ARMV8_A64_STCLRLH,
|
---|
531 | OP_ARMV8_A64_STCLR,
|
---|
532 | OP_ARMV8_A64_STCLRL,
|
---|
533 | OP_ARMV8_A64_STEORB,
|
---|
534 | OP_ARMV8_A64_STEROLB,
|
---|
535 | OP_ARMV8_A64_STEORH,
|
---|
536 | OP_ARMV8_A64_STEORLH,
|
---|
537 | OP_ARMV8_A64_STEOR,
|
---|
538 | OP_ARMV8_A64_STEORL,
|
---|
539 | OP_ARMV8_A64_STG,
|
---|
540 | OP_ARMV8_A64_STGM,
|
---|
541 | OP_ARMV8_A64_STGP,
|
---|
542 | OP_ARMV8_A64_STLLRB,
|
---|
543 | OP_ARMV8_A64_STLLRH,
|
---|
544 | OP_ARMV8_A64_STLLR,
|
---|
545 | OP_ARMV8_A64_STLR,
|
---|
546 | OP_ARMV8_A64_STLRB,
|
---|
547 | OP_ARMV8_A64_STLRH,
|
---|
548 | OP_ARMV8_A64_STLUR,
|
---|
549 | OP_ARMV8_A64_STLURB,
|
---|
550 | OP_ARMV8_A64_STLURH,
|
---|
551 | OP_ARMV8_A64_STLXP,
|
---|
552 | OP_ARMV8_A64_STLXR,
|
---|
553 | OP_ARMV8_A64_STLXRB,
|
---|
554 | OP_ARMV8_A64_STLXRH,
|
---|
555 | OP_ARMV8_A64_STNP,
|
---|
556 | OP_ARMV8_A64_STP,
|
---|
557 | OP_ARMV8_A64_STR,
|
---|
558 | OP_ARMV8_A64_STRB,
|
---|
559 | OP_ARMV8_A64_STRH,
|
---|
560 | OP_ARMV8_A64_STTR,
|
---|
561 | OP_ARMV8_A64_STTRB,
|
---|
562 | OP_ARMV8_A64_STTRH,
|
---|
563 | OP_ARMV8_A64_STUR,
|
---|
564 | OP_ARMV8_A64_STURB,
|
---|
565 | OP_ARMV8_A64_STURH,
|
---|
566 | OP_ARMV8_A64_STXP,
|
---|
567 | OP_ARMV8_A64_STXR,
|
---|
568 | OP_ARMV8_A64_STXRB,
|
---|
569 | OP_ARMV8_A64_STXRH,
|
---|
570 | OP_ARMV8_A64_STZ2G,
|
---|
571 | OP_ARMV8_A64_STZG,
|
---|
572 | OP_ARMV8_A64_STZGM,
|
---|
573 | OP_ARMV8_A64_SUB,
|
---|
574 | OP_ARMV8_A64_SUBG,
|
---|
575 | OP_ARMV8_A64_SUBPS,
|
---|
576 | OP_ARMV8_A64_SUBS,
|
---|
577 | OP_ARMV8_A64_SUBP,
|
---|
578 | OP_ARMV8_A64_SVC,
|
---|
579 | OP_ARMV8_A64_SWPB,
|
---|
580 | OP_ARMV8_A64_SWPAB,
|
---|
581 | OP_ARMV8_A64_SWPALB,
|
---|
582 | OP_ARMV8_A64_SWPLB,
|
---|
583 | OP_ARMV8_A64_SWPH,
|
---|
584 | OP_ARMV8_A64_SWPAH,
|
---|
585 | OP_ARMV8_A64_SWPALH,
|
---|
586 | OP_ARMV8_A64_SWPLH,
|
---|
587 | OP_ARMV8_A64_SWP,
|
---|
588 | OP_ARMV8_A64_SWPA,
|
---|
589 | OP_ARMV8_A64_SWPAL,
|
---|
590 | OP_ARMV8_A64_SWPL,
|
---|
591 | OP_ARMV8_A64_SXTB,
|
---|
592 | OP_ARMV8_A64_SXTH,
|
---|
593 | OP_ARMV8_A64_SXTW,
|
---|
594 | OP_ARMV8_A64_SYS,
|
---|
595 | OP_ARMV8_A64_SYSL,
|
---|
596 | OP_ARMV8_A64_TBNZ,
|
---|
597 | OP_ARMV8_A64_TBZ,
|
---|
598 | OP_ARMV8_A64_TCANCEL,
|
---|
599 | OP_ARMV8_A64_TCOMMIT,
|
---|
600 | OP_ARMV8_A64_TLBI,
|
---|
601 | OP_ARMV8_A64_TSB,
|
---|
602 | OP_ARMV8_A64_TSBCSYNC,
|
---|
603 | OP_ARMV8_A64_TST,
|
---|
604 | OP_ARMV8_A64_TSTART,
|
---|
605 | OP_ARMV8_A64_TTEST,
|
---|
606 | OP_ARMV8_A64_UBFIZ,
|
---|
607 | OP_ARMV8_A64_UBFM,
|
---|
608 | OP_ARMV8_A64_UBFX,
|
---|
609 | OP_ARMV8_A64_UCVTF,
|
---|
610 | OP_ARMV8_A64_UDF,
|
---|
611 | OP_ARMV8_A64_UDIV,
|
---|
612 | OP_ARMV8_A64_UMADDL,
|
---|
613 | OP_ARMV8_A64_UMAX,
|
---|
614 | OP_ARMV8_A64_UMIN,
|
---|
615 | OP_ARMV8_A64_UMNEGL,
|
---|
616 | OP_ARMV8_A64_UMSUBL,
|
---|
617 | OP_ARMV8_A64_UMULH,
|
---|
618 | OP_ARMV8_A64_UMULL,
|
---|
619 | OP_ARMV8_A64_UXTB,
|
---|
620 | OP_ARMV8_A64_UXTH,
|
---|
621 | OP_ARMV8_A64_WFE,
|
---|
622 | OP_ARMV8_A64_WFET,
|
---|
623 | OP_ARMV8_A64_WFI,
|
---|
624 | OP_ARMV8_A64_WFIT,
|
---|
625 | OP_ARMV8_A64_XAFLAG,
|
---|
626 | OP_ARMV8_A64_XPACD,
|
---|
627 | OP_ARMV8_A64_XPACI,
|
---|
628 | OP_ARMV8_A64_XPACLRI,
|
---|
629 | OP_ARMV8_A64_YIELD,
|
---|
630 | /** @} */
|
---|
631 |
|
---|
632 | OP_ARMV8_END_OF_OPCODES
|
---|
633 | };
|
---|
634 |
|
---|
635 |
|
---|
636 | /** Armv8 Condition codes. */
|
---|
637 | typedef enum DISARMV8INSTRCOND
|
---|
638 | {
|
---|
639 | kDisArmv8InstrCond_Eq = 0, /**< 0 - Equal - Zero set. */
|
---|
640 | kDisArmv8InstrCond_Ne, /**< 1 - Not equal - Zero clear. */
|
---|
641 |
|
---|
642 | kDisArmv8InstrCond_Cs, /**< 2 - Carry set (also known as 'HS'). */
|
---|
643 | kDisArmv8InstrCond_Hs = kDisArmv8InstrCond_Cs, /**< 2 - Unsigned higher or same. */
|
---|
644 | kDisArmv8InstrCond_Cc, /**< 3 - Carry clear (also known as 'LO'). */
|
---|
645 | kDisArmv8InstrCond_Lo = kDisArmv8InstrCond_Cc, /**< 3 - Unsigned lower. */
|
---|
646 |
|
---|
647 | kDisArmv8InstrCond_Mi, /**< 4 - Negative result (minus). */
|
---|
648 | kDisArmv8InstrCond_Pl, /**< 5 - Positive or zero result (plus). */
|
---|
649 |
|
---|
650 | kDisArmv8InstrCond_Vs, /**< 6 - Overflow set. */
|
---|
651 | kDisArmv8InstrCond_Vc, /**< 7 - Overflow clear. */
|
---|
652 |
|
---|
653 | kDisArmv8InstrCond_Hi, /**< 8 - Unsigned higher. */
|
---|
654 | kDisArmv8InstrCond_Ls, /**< 9 - Unsigned lower or same. */
|
---|
655 |
|
---|
656 | kDisArmv8InstrCond_Ge, /**< a - Signed greater or equal. */
|
---|
657 | kDisArmv8InstrCond_Lt, /**< b - Signed less than. */
|
---|
658 |
|
---|
659 | kDisArmv8InstrCond_Gt, /**< c - Signed greater than. */
|
---|
660 | kDisArmv8InstrCond_Le, /**< d - Signed less or equal. */
|
---|
661 |
|
---|
662 | kDisArmv8InstrCond_Al, /**< e - Condition is always true. */
|
---|
663 | kDisArmv8InstrCond_Al1 /**< f - Condition is always true. */
|
---|
664 | } DISARMV8INSTRCOND;
|
---|
665 |
|
---|
666 |
|
---|
667 | /** Armv8 PState fields. */
|
---|
668 | typedef enum DISARMV8INSTRPSTATE
|
---|
669 | {
|
---|
670 | kDisArmv8InstrPState_SPSel = 0,
|
---|
671 | kDisArmv8InstrPState_DAIFSet,
|
---|
672 | kDisArmv8InstrPState_DAIFClr,
|
---|
673 | kDisArmv8InstrPState_UAO,
|
---|
674 | kDisArmv8InstrPState_PAN,
|
---|
675 | kDisArmv8InstrPState_ALLINT,
|
---|
676 | kDisArmv8InstrPState_PM,
|
---|
677 | kDisArmv8InstrPState_SSBS,
|
---|
678 | kDisArmv8InstrPState_DIT,
|
---|
679 | kDisArmv8InstrPState_SVCRSM,
|
---|
680 | kDisArmv8InstrPState_SVCRZA,
|
---|
681 | kDisArmv8InstrPState_SVCRSMZA,
|
---|
682 | kDisArmv8InstrPState_TCO
|
---|
683 | } DISARMV8INSTRPSTATE;
|
---|
684 |
|
---|
685 |
|
---|
686 | /**
|
---|
687 | * Floating point types.
|
---|
688 | */
|
---|
689 | typedef enum DISARMV8INSTRFPTYPE
|
---|
690 | {
|
---|
691 | kDisArmv8InstrFpType_Invalid = 0,
|
---|
692 | kDisArmv8InstrFpType_Single,
|
---|
693 | kDisArmv8InstrFpType_Double,
|
---|
694 | kDisArmv8InstrFpType_Half
|
---|
695 | } DISARMV8INSTRFPTYPE;
|
---|
696 |
|
---|
697 |
|
---|
698 | /** @defgroup grp_dis_opparam_armv8 Opcode parameters (DISOPCODE::fParam1,
|
---|
699 | * DISOPCODE::fParam2, DISOPCODE::fParam3)
|
---|
700 | * @ingroup grp_dis
|
---|
701 | * @{
|
---|
702 | */
|
---|
703 |
|
---|
704 | /**
|
---|
705 | * Basic parameter type.
|
---|
706 | */
|
---|
707 | typedef enum DISARMV8OPPARM
|
---|
708 | {
|
---|
709 | /** Parameter is not used. */
|
---|
710 | kDisArmv8OpParmNone = 0,
|
---|
711 | /** Immediate value. */
|
---|
712 | kDisArmv8OpParmImm,
|
---|
713 | /** Relative address immediate. */
|
---|
714 | kDisArmv8OpParmImmRel,
|
---|
715 | /** Register. */
|
---|
716 | kDisArmv8OpParmReg,
|
---|
717 | /** System register. */
|
---|
718 | kDisArmv8OpParmSysReg,
|
---|
719 | /** Accessing memory from address in base register + potential offset. */
|
---|
720 | kDisArmv8OpParmAddrInGpr,
|
---|
721 | /** Conditional as parameter (CCMN/CCMP). */
|
---|
722 | kDisArmv8OpParmCond,
|
---|
723 | /** PSTATE field (specific to MSR). */
|
---|
724 | kDisArmv8OpParmPState
|
---|
725 | } DISARMV8OPPARM;
|
---|
726 |
|
---|
727 |
|
---|
728 | /**
|
---|
729 | * Extend types.
|
---|
730 | */
|
---|
731 | typedef enum DISARMV8OPPARMEXTEND
|
---|
732 | {
|
---|
733 | /** No shift applied. */
|
---|
734 | kDisArmv8OpParmExtendNone = 0,
|
---|
735 | /** Left shift applied. */
|
---|
736 | kDisArmv8OpParmExtendLsl,
|
---|
737 | /** Right shift applied. */
|
---|
738 | kDisArmv8OpParmExtendLsr,
|
---|
739 | /** Arithmetic right shift applied. */
|
---|
740 | kDisArmv8OpParmExtendAsr,
|
---|
741 | /** Rotation applied. */
|
---|
742 | kDisArmv8OpParmExtendRor,
|
---|
743 | /** @todo Document. */
|
---|
744 | kDisArmv8OpParmExtendUxtB,
|
---|
745 | kDisArmv8OpParmExtendUxtH,
|
---|
746 | kDisArmv8OpParmExtendUxtW,
|
---|
747 | kDisArmv8OpParmExtendUxtX,
|
---|
748 | kDisArmv8OpParmExtendSxtB,
|
---|
749 | kDisArmv8OpParmExtendSxtH,
|
---|
750 | kDisArmv8OpParmExtendSxtW,
|
---|
751 | kDisArmv8OpParmExtendSxtX
|
---|
752 | } DISARMV8OPPARMEXTEND;
|
---|
753 | /** @} */
|
---|
754 |
|
---|
755 | /** @} */
|
---|
756 |
|
---|
757 | #endif /* !VBOX_INCLUDED_disopcode_armv8_h */
|
---|
758 |
|
---|