Rizin
unix-like reverse engineering framework and cli tools
AArch64Mapping.c
Go to the documentation of this file.
1 /* Capstone Disassembly Engine */
2 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
3 
4 #ifdef CAPSTONE_HAS_ARM64
5 
6 #include <stdio.h> // debug
7 #include <string.h>
8 
9 #include "../../utils.h"
10 
11 #include "AArch64Mapping.h"
12 
13 #define GET_INSTRINFO_ENUM
14 #include "AArch64GenInstrInfo.inc"
15 
16 #ifndef CAPSTONE_DIET
17 static const name_map reg_name_maps[] = {
19 
20  { ARM64_REG_X29, "x29"},
21  { ARM64_REG_X30, "x30"},
22  { ARM64_REG_NZCV, "nzcv"},
23  { ARM64_REG_SP, "sp"},
24  { ARM64_REG_WSP, "wsp"},
25  { ARM64_REG_WZR, "wzr"},
26  { ARM64_REG_XZR, "xzr"},
27  { ARM64_REG_B0, "b0"},
28  { ARM64_REG_B1, "b1"},
29  { ARM64_REG_B2, "b2"},
30  { ARM64_REG_B3, "b3"},
31  { ARM64_REG_B4, "b4"},
32  { ARM64_REG_B5, "b5"},
33  { ARM64_REG_B6, "b6"},
34  { ARM64_REG_B7, "b7"},
35  { ARM64_REG_B8, "b8"},
36  { ARM64_REG_B9, "b9"},
37  { ARM64_REG_B10, "b10"},
38  { ARM64_REG_B11, "b11"},
39  { ARM64_REG_B12, "b12"},
40  { ARM64_REG_B13, "b13"},
41  { ARM64_REG_B14, "b14"},
42  { ARM64_REG_B15, "b15"},
43  { ARM64_REG_B16, "b16"},
44  { ARM64_REG_B17, "b17"},
45  { ARM64_REG_B18, "b18"},
46  { ARM64_REG_B19, "b19"},
47  { ARM64_REG_B20, "b20"},
48  { ARM64_REG_B21, "b21"},
49  { ARM64_REG_B22, "b22"},
50  { ARM64_REG_B23, "b23"},
51  { ARM64_REG_B24, "b24"},
52  { ARM64_REG_B25, "b25"},
53  { ARM64_REG_B26, "b26"},
54  { ARM64_REG_B27, "b27"},
55  { ARM64_REG_B28, "b28"},
56  { ARM64_REG_B29, "b29"},
57  { ARM64_REG_B30, "b30"},
58  { ARM64_REG_B31, "b31"},
59  { ARM64_REG_D0, "d0"},
60  { ARM64_REG_D1, "d1"},
61  { ARM64_REG_D2, "d2"},
62  { ARM64_REG_D3, "d3"},
63  { ARM64_REG_D4, "d4"},
64  { ARM64_REG_D5, "d5"},
65  { ARM64_REG_D6, "d6"},
66  { ARM64_REG_D7, "d7"},
67  { ARM64_REG_D8, "d8"},
68  { ARM64_REG_D9, "d9"},
69  { ARM64_REG_D10, "d10"},
70  { ARM64_REG_D11, "d11"},
71  { ARM64_REG_D12, "d12"},
72  { ARM64_REG_D13, "d13"},
73  { ARM64_REG_D14, "d14"},
74  { ARM64_REG_D15, "d15"},
75  { ARM64_REG_D16, "d16"},
76  { ARM64_REG_D17, "d17"},
77  { ARM64_REG_D18, "d18"},
78  { ARM64_REG_D19, "d19"},
79  { ARM64_REG_D20, "d20"},
80  { ARM64_REG_D21, "d21"},
81  { ARM64_REG_D22, "d22"},
82  { ARM64_REG_D23, "d23"},
83  { ARM64_REG_D24, "d24"},
84  { ARM64_REG_D25, "d25"},
85  { ARM64_REG_D26, "d26"},
86  { ARM64_REG_D27, "d27"},
87  { ARM64_REG_D28, "d28"},
88  { ARM64_REG_D29, "d29"},
89  { ARM64_REG_D30, "d30"},
90  { ARM64_REG_D31, "d31"},
91  { ARM64_REG_H0, "h0"},
92  { ARM64_REG_H1, "h1"},
93  { ARM64_REG_H2, "h2"},
94  { ARM64_REG_H3, "h3"},
95  { ARM64_REG_H4, "h4"},
96  { ARM64_REG_H5, "h5"},
97  { ARM64_REG_H6, "h6"},
98  { ARM64_REG_H7, "h7"},
99  { ARM64_REG_H8, "h8"},
100  { ARM64_REG_H9, "h9"},
101  { ARM64_REG_H10, "h10"},
102  { ARM64_REG_H11, "h11"},
103  { ARM64_REG_H12, "h12"},
104  { ARM64_REG_H13, "h13"},
105  { ARM64_REG_H14, "h14"},
106  { ARM64_REG_H15, "h15"},
107  { ARM64_REG_H16, "h16"},
108  { ARM64_REG_H17, "h17"},
109  { ARM64_REG_H18, "h18"},
110  { ARM64_REG_H19, "h19"},
111  { ARM64_REG_H20, "h20"},
112  { ARM64_REG_H21, "h21"},
113  { ARM64_REG_H22, "h22"},
114  { ARM64_REG_H23, "h23"},
115  { ARM64_REG_H24, "h24"},
116  { ARM64_REG_H25, "h25"},
117  { ARM64_REG_H26, "h26"},
118  { ARM64_REG_H27, "h27"},
119  { ARM64_REG_H28, "h28"},
120  { ARM64_REG_H29, "h29"},
121  { ARM64_REG_H30, "h30"},
122  { ARM64_REG_H31, "h31"},
123  { ARM64_REG_Q0, "q0"},
124  { ARM64_REG_Q1, "q1"},
125  { ARM64_REG_Q2, "q2"},
126  { ARM64_REG_Q3, "q3"},
127  { ARM64_REG_Q4, "q4"},
128  { ARM64_REG_Q5, "q5"},
129  { ARM64_REG_Q6, "q6"},
130  { ARM64_REG_Q7, "q7"},
131  { ARM64_REG_Q8, "q8"},
132  { ARM64_REG_Q9, "q9"},
133  { ARM64_REG_Q10, "q10"},
134  { ARM64_REG_Q11, "q11"},
135  { ARM64_REG_Q12, "q12"},
136  { ARM64_REG_Q13, "q13"},
137  { ARM64_REG_Q14, "q14"},
138  { ARM64_REG_Q15, "q15"},
139  { ARM64_REG_Q16, "q16"},
140  { ARM64_REG_Q17, "q17"},
141  { ARM64_REG_Q18, "q18"},
142  { ARM64_REG_Q19, "q19"},
143  { ARM64_REG_Q20, "q20"},
144  { ARM64_REG_Q21, "q21"},
145  { ARM64_REG_Q22, "q22"},
146  { ARM64_REG_Q23, "q23"},
147  { ARM64_REG_Q24, "q24"},
148  { ARM64_REG_Q25, "q25"},
149  { ARM64_REG_Q26, "q26"},
150  { ARM64_REG_Q27, "q27"},
151  { ARM64_REG_Q28, "q28"},
152  { ARM64_REG_Q29, "q29"},
153  { ARM64_REG_Q30, "q30"},
154  { ARM64_REG_Q31, "q31"},
155  { ARM64_REG_S0, "s0"},
156  { ARM64_REG_S1, "s1"},
157  { ARM64_REG_S2, "s2"},
158  { ARM64_REG_S3, "s3"},
159  { ARM64_REG_S4, "s4"},
160  { ARM64_REG_S5, "s5"},
161  { ARM64_REG_S6, "s6"},
162  { ARM64_REG_S7, "s7"},
163  { ARM64_REG_S8, "s8"},
164  { ARM64_REG_S9, "s9"},
165  { ARM64_REG_S10, "s10"},
166  { ARM64_REG_S11, "s11"},
167  { ARM64_REG_S12, "s12"},
168  { ARM64_REG_S13, "s13"},
169  { ARM64_REG_S14, "s14"},
170  { ARM64_REG_S15, "s15"},
171  { ARM64_REG_S16, "s16"},
172  { ARM64_REG_S17, "s17"},
173  { ARM64_REG_S18, "s18"},
174  { ARM64_REG_S19, "s19"},
175  { ARM64_REG_S20, "s20"},
176  { ARM64_REG_S21, "s21"},
177  { ARM64_REG_S22, "s22"},
178  { ARM64_REG_S23, "s23"},
179  { ARM64_REG_S24, "s24"},
180  { ARM64_REG_S25, "s25"},
181  { ARM64_REG_S26, "s26"},
182  { ARM64_REG_S27, "s27"},
183  { ARM64_REG_S28, "s28"},
184  { ARM64_REG_S29, "s29"},
185  { ARM64_REG_S30, "s30"},
186  { ARM64_REG_S31, "s31"},
187  { ARM64_REG_W0, "w0"},
188  { ARM64_REG_W1, "w1"},
189  { ARM64_REG_W2, "w2"},
190  { ARM64_REG_W3, "w3"},
191  { ARM64_REG_W4, "w4"},
192  { ARM64_REG_W5, "w5"},
193  { ARM64_REG_W6, "w6"},
194  { ARM64_REG_W7, "w7"},
195  { ARM64_REG_W8, "w8"},
196  { ARM64_REG_W9, "w9"},
197  { ARM64_REG_W10, "w10"},
198  { ARM64_REG_W11, "w11"},
199  { ARM64_REG_W12, "w12"},
200  { ARM64_REG_W13, "w13"},
201  { ARM64_REG_W14, "w14"},
202  { ARM64_REG_W15, "w15"},
203  { ARM64_REG_W16, "w16"},
204  { ARM64_REG_W17, "w17"},
205  { ARM64_REG_W18, "w18"},
206  { ARM64_REG_W19, "w19"},
207  { ARM64_REG_W20, "w20"},
208  { ARM64_REG_W21, "w21"},
209  { ARM64_REG_W22, "w22"},
210  { ARM64_REG_W23, "w23"},
211  { ARM64_REG_W24, "w24"},
212  { ARM64_REG_W25, "w25"},
213  { ARM64_REG_W26, "w26"},
214  { ARM64_REG_W27, "w27"},
215  { ARM64_REG_W28, "w28"},
216  { ARM64_REG_W29, "w29"},
217  { ARM64_REG_W30, "w30"},
218  { ARM64_REG_X0, "x0"},
219  { ARM64_REG_X1, "x1"},
220  { ARM64_REG_X2, "x2"},
221  { ARM64_REG_X3, "x3"},
222  { ARM64_REG_X4, "x4"},
223  { ARM64_REG_X5, "x5"},
224  { ARM64_REG_X6, "x6"},
225  { ARM64_REG_X7, "x7"},
226  { ARM64_REG_X8, "x8"},
227  { ARM64_REG_X9, "x9"},
228  { ARM64_REG_X10, "x10"},
229  { ARM64_REG_X11, "x11"},
230  { ARM64_REG_X12, "x12"},
231  { ARM64_REG_X13, "x13"},
232  { ARM64_REG_X14, "x14"},
233  { ARM64_REG_X15, "x15"},
234  { ARM64_REG_X16, "x16"},
235  { ARM64_REG_X17, "x17"},
236  { ARM64_REG_X18, "x18"},
237  { ARM64_REG_X19, "x19"},
238  { ARM64_REG_X20, "x20"},
239  { ARM64_REG_X21, "x21"},
240  { ARM64_REG_X22, "x22"},
241  { ARM64_REG_X23, "x23"},
242  { ARM64_REG_X24, "x24"},
243  { ARM64_REG_X25, "x25"},
244  { ARM64_REG_X26, "x26"},
245  { ARM64_REG_X27, "x27"},
246  { ARM64_REG_X28, "x28"},
247 
248  { ARM64_REG_V0, "v0"},
249  { ARM64_REG_V1, "v1"},
250  { ARM64_REG_V2, "v2"},
251  { ARM64_REG_V3, "v3"},
252  { ARM64_REG_V4, "v4"},
253  { ARM64_REG_V5, "v5"},
254  { ARM64_REG_V6, "v6"},
255  { ARM64_REG_V7, "v7"},
256  { ARM64_REG_V8, "v8"},
257  { ARM64_REG_V9, "v9"},
258  { ARM64_REG_V10, "v10"},
259  { ARM64_REG_V11, "v11"},
260  { ARM64_REG_V12, "v12"},
261  { ARM64_REG_V13, "v13"},
262  { ARM64_REG_V14, "v14"},
263  { ARM64_REG_V15, "v15"},
264  { ARM64_REG_V16, "v16"},
265  { ARM64_REG_V17, "v17"},
266  { ARM64_REG_V18, "v18"},
267  { ARM64_REG_V19, "v19"},
268  { ARM64_REG_V20, "v20"},
269  { ARM64_REG_V21, "v21"},
270  { ARM64_REG_V22, "v22"},
271  { ARM64_REG_V23, "v23"},
272  { ARM64_REG_V24, "v24"},
273  { ARM64_REG_V25, "v25"},
274  { ARM64_REG_V26, "v26"},
275  { ARM64_REG_V27, "v27"},
276  { ARM64_REG_V28, "v28"},
277  { ARM64_REG_V29, "v29"},
278  { ARM64_REG_V30, "v30"},
279  { ARM64_REG_V31, "v31"},
280 };
281 #endif
282 
283 const char *AArch64_reg_name(csh handle, unsigned int reg)
284 {
285 #ifndef CAPSTONE_DIET
286  if (reg >= ARR_SIZE(reg_name_maps))
287  return NULL;
288 
289  return reg_name_maps[reg].name;
290 #else
291  return NULL;
292 #endif
293 }
294 
295 static const insn_map insns[] = {
296  // dummy item
297  {
298  0, 0,
299 #ifndef CAPSTONE_DIET
300  { 0 }, { 0 }, { 0 }, 0, 0
301 #endif
302  },
303 
304 #include "AArch64MappingInsn.inc"
305 };
306 
307 // given internal insn id, return public instruction info
308 void AArch64_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
309 {
310  int i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);
311  if (i != 0) {
312  insn->id = insns[i].mapid;
313 
314  if (h->detail) {
315 #ifndef CAPSTONE_DIET
317  handle.detail = h->detail;
318 
319  memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
320  insn->detail->regs_read_count = (uint8_t)count_positive(insns[i].regs_use);
321 
322  memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
323  insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);
324 
325  memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
326  insn->detail->groups_count = (uint8_t)count_positive8(insns[i].groups);
327 
328  insn->detail->arm64.update_flags = cs_reg_write((csh)&handle, insn, ARM64_REG_NZCV);
329 #endif
330  }
331  }
332 }
333 
334 static const name_map insn_name_maps[] = {
335  { ARM64_INS_INVALID, NULL },
336 
337  { ARM64_INS_ABS, "abs" },
338  { ARM64_INS_ADC, "adc" },
339  { ARM64_INS_ADDHN, "addhn" },
340  { ARM64_INS_ADDHN2, "addhn2" },
341  { ARM64_INS_ADDP, "addp" },
342  { ARM64_INS_ADD, "add" },
343  { ARM64_INS_ADDV, "addv" },
344  { ARM64_INS_ADR, "adr" },
345  { ARM64_INS_ADRP, "adrp" },
346  { ARM64_INS_AESD, "aesd" },
347  { ARM64_INS_AESE, "aese" },
348  { ARM64_INS_AESIMC, "aesimc" },
349  { ARM64_INS_AESMC, "aesmc" },
350  { ARM64_INS_AND, "and" },
351  { ARM64_INS_ASR, "asr" },
352  { ARM64_INS_B, "b" },
353  { ARM64_INS_BFM, "bfm" },
354  { ARM64_INS_BIC, "bic" },
355  { ARM64_INS_BIF, "bif" },
356  { ARM64_INS_BIT, "bit" },
357  { ARM64_INS_BL, "bl" },
358  { ARM64_INS_BLR, "blr" },
359  { ARM64_INS_BR, "br" },
360  { ARM64_INS_BRK, "brk" },
361  { ARM64_INS_BSL, "bsl" },
362  { ARM64_INS_CBNZ, "cbnz" },
363  { ARM64_INS_CBZ, "cbz" },
364  { ARM64_INS_CCMN, "ccmn" },
365  { ARM64_INS_CCMP, "ccmp" },
366  { ARM64_INS_CLREX, "clrex" },
367  { ARM64_INS_CLS, "cls" },
368  { ARM64_INS_CLZ, "clz" },
369  { ARM64_INS_CMEQ, "cmeq" },
370  { ARM64_INS_CMGE, "cmge" },
371  { ARM64_INS_CMGT, "cmgt" },
372  { ARM64_INS_CMHI, "cmhi" },
373  { ARM64_INS_CMHS, "cmhs" },
374  { ARM64_INS_CMLE, "cmle" },
375  { ARM64_INS_CMLT, "cmlt" },
376  { ARM64_INS_CMTST, "cmtst" },
377  { ARM64_INS_CNT, "cnt" },
378  { ARM64_INS_MOV, "mov" },
379  { ARM64_INS_CRC32B, "crc32b" },
380  { ARM64_INS_CRC32CB, "crc32cb" },
381  { ARM64_INS_CRC32CH, "crc32ch" },
382  { ARM64_INS_CRC32CW, "crc32cw" },
383  { ARM64_INS_CRC32CX, "crc32cx" },
384  { ARM64_INS_CRC32H, "crc32h" },
385  { ARM64_INS_CRC32W, "crc32w" },
386  { ARM64_INS_CRC32X, "crc32x" },
387  { ARM64_INS_CSEL, "csel" },
388  { ARM64_INS_CSINC, "csinc" },
389  { ARM64_INS_CSINV, "csinv" },
390  { ARM64_INS_CSNEG, "csneg" },
391  { ARM64_INS_DCPS1, "dcps1" },
392  { ARM64_INS_DCPS2, "dcps2" },
393  { ARM64_INS_DCPS3, "dcps3" },
394  { ARM64_INS_DMB, "dmb" },
395  { ARM64_INS_DRPS, "drps" },
396  { ARM64_INS_DSB, "dsb" },
397  { ARM64_INS_DUP, "dup" },
398  { ARM64_INS_EON, "eon" },
399  { ARM64_INS_EOR, "eor" },
400  { ARM64_INS_ERET, "eret" },
401  { ARM64_INS_EXTR, "extr" },
402  { ARM64_INS_EXT, "ext" },
403  { ARM64_INS_FABD, "fabd" },
404  { ARM64_INS_FABS, "fabs" },
405  { ARM64_INS_FACGE, "facge" },
406  { ARM64_INS_FACGT, "facgt" },
407  { ARM64_INS_FADD, "fadd" },
408  { ARM64_INS_FADDP, "faddp" },
409  { ARM64_INS_FCCMP, "fccmp" },
410  { ARM64_INS_FCCMPE, "fccmpe" },
411  { ARM64_INS_FCMEQ, "fcmeq" },
412  { ARM64_INS_FCMGE, "fcmge" },
413  { ARM64_INS_FCMGT, "fcmgt" },
414  { ARM64_INS_FCMLE, "fcmle" },
415  { ARM64_INS_FCMLT, "fcmlt" },
416  { ARM64_INS_FCMP, "fcmp" },
417  { ARM64_INS_FCMPE, "fcmpe" },
418  { ARM64_INS_FCSEL, "fcsel" },
419  { ARM64_INS_FCVTAS, "fcvtas" },
420  { ARM64_INS_FCVTAU, "fcvtau" },
421  { ARM64_INS_FCVT, "fcvt" },
422  { ARM64_INS_FCVTL, "fcvtl" },
423  { ARM64_INS_FCVTL2, "fcvtl2" },
424  { ARM64_INS_FCVTMS, "fcvtms" },
425  { ARM64_INS_FCVTMU, "fcvtmu" },
426  { ARM64_INS_FCVTNS, "fcvtns" },
427  { ARM64_INS_FCVTNU, "fcvtnu" },
428  { ARM64_INS_FCVTN, "fcvtn" },
429  { ARM64_INS_FCVTN2, "fcvtn2" },
430  { ARM64_INS_FCVTPS, "fcvtps" },
431  { ARM64_INS_FCVTPU, "fcvtpu" },
432  { ARM64_INS_FCVTXN, "fcvtxn" },
433  { ARM64_INS_FCVTXN2, "fcvtxn2" },
434  { ARM64_INS_FCVTZS, "fcvtzs" },
435  { ARM64_INS_FCVTZU, "fcvtzu" },
436  { ARM64_INS_FDIV, "fdiv" },
437  { ARM64_INS_FMADD, "fmadd" },
438  { ARM64_INS_FMAX, "fmax" },
439  { ARM64_INS_FMAXNM, "fmaxnm" },
440  { ARM64_INS_FMAXNMP, "fmaxnmp" },
441  { ARM64_INS_FMAXNMV, "fmaxnmv" },
442  { ARM64_INS_FMAXP, "fmaxp" },
443  { ARM64_INS_FMAXV, "fmaxv" },
444  { ARM64_INS_FMIN, "fmin" },
445  { ARM64_INS_FMINNM, "fminnm" },
446  { ARM64_INS_FMINNMP, "fminnmp" },
447  { ARM64_INS_FMINNMV, "fminnmv" },
448  { ARM64_INS_FMINP, "fminp" },
449  { ARM64_INS_FMINV, "fminv" },
450  { ARM64_INS_FMLA, "fmla" },
451  { ARM64_INS_FMLS, "fmls" },
452  { ARM64_INS_FMOV, "fmov" },
453  { ARM64_INS_FMSUB, "fmsub" },
454  { ARM64_INS_FMUL, "fmul" },
455  { ARM64_INS_FMULX, "fmulx" },
456  { ARM64_INS_FNEG, "fneg" },
457  { ARM64_INS_FNMADD, "fnmadd" },
458  { ARM64_INS_FNMSUB, "fnmsub" },
459  { ARM64_INS_FNMUL, "fnmul" },
460  { ARM64_INS_FRECPE, "frecpe" },
461  { ARM64_INS_FRECPS, "frecps" },
462  { ARM64_INS_FRECPX, "frecpx" },
463  { ARM64_INS_FRINTA, "frinta" },
464  { ARM64_INS_FRINTI, "frinti" },
465  { ARM64_INS_FRINTM, "frintm" },
466  { ARM64_INS_FRINTN, "frintn" },
467  { ARM64_INS_FRINTP, "frintp" },
468  { ARM64_INS_FRINTX, "frintx" },
469  { ARM64_INS_FRINTZ, "frintz" },
470  { ARM64_INS_FRSQRTE, "frsqrte" },
471  { ARM64_INS_FRSQRTS, "frsqrts" },
472  { ARM64_INS_FSQRT, "fsqrt" },
473  { ARM64_INS_FSUB, "fsub" },
474  { ARM64_INS_HINT, "hint" },
475  { ARM64_INS_HLT, "hlt" },
476  { ARM64_INS_HVC, "hvc" },
477  { ARM64_INS_INS, "ins" },
478  { ARM64_INS_ISB, "isb" },
479  { ARM64_INS_LD1, "ld1" },
480  { ARM64_INS_LD1R, "ld1r" },
481  { ARM64_INS_LD2R, "ld2r" },
482  { ARM64_INS_LD2, "ld2" },
483  { ARM64_INS_LD3R, "ld3r" },
484  { ARM64_INS_LD3, "ld3" },
485  { ARM64_INS_LD4, "ld4" },
486  { ARM64_INS_LD4R, "ld4r" },
487  { ARM64_INS_LDARB, "ldarb" },
488  { ARM64_INS_LDARH, "ldarh" },
489  { ARM64_INS_LDAR, "ldar" },
490  { ARM64_INS_LDAXP, "ldaxp" },
491  { ARM64_INS_LDAXRB, "ldaxrb" },
492  { ARM64_INS_LDAXRH, "ldaxrh" },
493  { ARM64_INS_LDAXR, "ldaxr" },
494  { ARM64_INS_LDNP, "ldnp" },
495  { ARM64_INS_LDP, "ldp" },
496  { ARM64_INS_LDPSW, "ldpsw" },
497  { ARM64_INS_LDRB, "ldrb" },
498  { ARM64_INS_LDR, "ldr" },
499  { ARM64_INS_LDRH, "ldrh" },
500  { ARM64_INS_LDRSB, "ldrsb" },
501  { ARM64_INS_LDRSH, "ldrsh" },
502  { ARM64_INS_LDRSW, "ldrsw" },
503  { ARM64_INS_LDTRB, "ldtrb" },
504  { ARM64_INS_LDTRH, "ldtrh" },
505  { ARM64_INS_LDTRSB, "ldtrsb" },
506  { ARM64_INS_LDTRSH, "ldtrsh" },
507  { ARM64_INS_LDTRSW, "ldtrsw" },
508  { ARM64_INS_LDTR, "ldtr" },
509  { ARM64_INS_LDURB, "ldurb" },
510  { ARM64_INS_LDUR, "ldur" },
511  { ARM64_INS_LDURH, "ldurh" },
512  { ARM64_INS_LDURSB, "ldursb" },
513  { ARM64_INS_LDURSH, "ldursh" },
514  { ARM64_INS_LDURSW, "ldursw" },
515  { ARM64_INS_LDXP, "ldxp" },
516  { ARM64_INS_LDXRB, "ldxrb" },
517  { ARM64_INS_LDXRH, "ldxrh" },
518  { ARM64_INS_LDXR, "ldxr" },
519  { ARM64_INS_LSL, "lsl" },
520  { ARM64_INS_LSR, "lsr" },
521  { ARM64_INS_MADD, "madd" },
522  { ARM64_INS_MLA, "mla" },
523  { ARM64_INS_MLS, "mls" },
524  { ARM64_INS_MOVI, "movi" },
525  { ARM64_INS_MOVK, "movk" },
526  { ARM64_INS_MOVN, "movn" },
527  { ARM64_INS_MOVZ, "movz" },
528  { ARM64_INS_MRS, "mrs" },
529  { ARM64_INS_MSR, "msr" },
530  { ARM64_INS_MSUB, "msub" },
531  { ARM64_INS_MUL, "mul" },
532  { ARM64_INS_MVNI, "mvni" },
533  { ARM64_INS_NEG, "neg" },
534  { ARM64_INS_NOT, "not" },
535  { ARM64_INS_ORN, "orn" },
536  { ARM64_INS_ORR, "orr" },
537  { ARM64_INS_PMULL2, "pmull2" },
538  { ARM64_INS_PMULL, "pmull" },
539  { ARM64_INS_PMUL, "pmul" },
540  { ARM64_INS_PRFM, "prfm" },
541  { ARM64_INS_PRFUM, "prfum" },
542  { ARM64_INS_RADDHN, "raddhn" },
543  { ARM64_INS_RADDHN2, "raddhn2" },
544  { ARM64_INS_RBIT, "rbit" },
545  { ARM64_INS_RET, "ret" },
546  { ARM64_INS_REV16, "rev16" },
547  { ARM64_INS_REV32, "rev32" },
548  { ARM64_INS_REV64, "rev64" },
549  { ARM64_INS_REV, "rev" },
550  { ARM64_INS_ROR, "ror" },
551  { ARM64_INS_RSHRN2, "rshrn2" },
552  { ARM64_INS_RSHRN, "rshrn" },
553  { ARM64_INS_RSUBHN, "rsubhn" },
554  { ARM64_INS_RSUBHN2, "rsubhn2" },
555  { ARM64_INS_SABAL2, "sabal2" },
556  { ARM64_INS_SABAL, "sabal" },
557  { ARM64_INS_SABA, "saba" },
558  { ARM64_INS_SABDL2, "sabdl2" },
559  { ARM64_INS_SABDL, "sabdl" },
560  { ARM64_INS_SABD, "sabd" },
561  { ARM64_INS_SADALP, "sadalp" },
562  { ARM64_INS_SADDLP, "saddlp" },
563  { ARM64_INS_SADDLV, "saddlv" },
564  { ARM64_INS_SADDL2, "saddl2" },
565  { ARM64_INS_SADDL, "saddl" },
566  { ARM64_INS_SADDW2, "saddw2" },
567  { ARM64_INS_SADDW, "saddw" },
568  { ARM64_INS_SBC, "sbc" },
569  { ARM64_INS_SBFM, "sbfm" },
570  { ARM64_INS_SCVTF, "scvtf" },
571  { ARM64_INS_SDIV, "sdiv" },
572  { ARM64_INS_SHA1C, "sha1c" },
573  { ARM64_INS_SHA1H, "sha1h" },
574  { ARM64_INS_SHA1M, "sha1m" },
575  { ARM64_INS_SHA1P, "sha1p" },
576  { ARM64_INS_SHA1SU0, "sha1su0" },
577  { ARM64_INS_SHA1SU1, "sha1su1" },
578  { ARM64_INS_SHA256H2, "sha256h2" },
579  { ARM64_INS_SHA256H, "sha256h" },
580  { ARM64_INS_SHA256SU0, "sha256su0" },
581  { ARM64_INS_SHA256SU1, "sha256su1" },
582  { ARM64_INS_SHADD, "shadd" },
583  { ARM64_INS_SHLL2, "shll2" },
584  { ARM64_INS_SHLL, "shll" },
585  { ARM64_INS_SHL, "shl" },
586  { ARM64_INS_SHRN2, "shrn2" },
587  { ARM64_INS_SHRN, "shrn" },
588  { ARM64_INS_SHSUB, "shsub" },
589  { ARM64_INS_SLI, "sli" },
590  { ARM64_INS_SMADDL, "smaddl" },
591  { ARM64_INS_SMAXP, "smaxp" },
592  { ARM64_INS_SMAXV, "smaxv" },
593  { ARM64_INS_SMAX, "smax" },
594  { ARM64_INS_SMC, "smc" },
595  { ARM64_INS_SMINP, "sminp" },
596  { ARM64_INS_SMINV, "sminv" },
597  { ARM64_INS_SMIN, "smin" },
598  { ARM64_INS_SMLAL2, "smlal2" },
599  { ARM64_INS_SMLAL, "smlal" },
600  { ARM64_INS_SMLSL2, "smlsl2" },
601  { ARM64_INS_SMLSL, "smlsl" },
602  { ARM64_INS_SMOV, "smov" },
603  { ARM64_INS_SMSUBL, "smsubl" },
604  { ARM64_INS_SMULH, "smulh" },
605  { ARM64_INS_SMULL2, "smull2" },
606  { ARM64_INS_SMULL, "smull" },
607  { ARM64_INS_SQABS, "sqabs" },
608  { ARM64_INS_SQADD, "sqadd" },
609  { ARM64_INS_SQDMLAL, "sqdmlal" },
610  { ARM64_INS_SQDMLAL2, "sqdmlal2" },
611  { ARM64_INS_SQDMLSL, "sqdmlsl" },
612  { ARM64_INS_SQDMLSL2, "sqdmlsl2" },
613  { ARM64_INS_SQDMULH, "sqdmulh" },
614  { ARM64_INS_SQDMULL, "sqdmull" },
615  { ARM64_INS_SQDMULL2, "sqdmull2" },
616  { ARM64_INS_SQNEG, "sqneg" },
617  { ARM64_INS_SQRDMULH, "sqrdmulh" },
618  { ARM64_INS_SQRSHL, "sqrshl" },
619  { ARM64_INS_SQRSHRN, "sqrshrn" },
620  { ARM64_INS_SQRSHRN2, "sqrshrn2" },
621  { ARM64_INS_SQRSHRUN, "sqrshrun" },
622  { ARM64_INS_SQRSHRUN2, "sqrshrun2" },
623  { ARM64_INS_SQSHLU, "sqshlu" },
624  { ARM64_INS_SQSHL, "sqshl" },
625  { ARM64_INS_SQSHRN, "sqshrn" },
626  { ARM64_INS_SQSHRN2, "sqshrn2" },
627  { ARM64_INS_SQSHRUN, "sqshrun" },
628  { ARM64_INS_SQSHRUN2, "sqshrun2" },
629  { ARM64_INS_SQSUB, "sqsub" },
630  { ARM64_INS_SQXTN2, "sqxtn2" },
631  { ARM64_INS_SQXTN, "sqxtn" },
632  { ARM64_INS_SQXTUN2, "sqxtun2" },
633  { ARM64_INS_SQXTUN, "sqxtun" },
634  { ARM64_INS_SRHADD, "srhadd" },
635  { ARM64_INS_SRI, "sri" },
636  { ARM64_INS_SRSHL, "srshl" },
637  { ARM64_INS_SRSHR, "srshr" },
638  { ARM64_INS_SRSRA, "srsra" },
639  { ARM64_INS_SSHLL2, "sshll2" },
640  { ARM64_INS_SSHLL, "sshll" },
641  { ARM64_INS_SSHL, "sshl" },
642  { ARM64_INS_SSHR, "sshr" },
643  { ARM64_INS_SSRA, "ssra" },
644  { ARM64_INS_SSUBL2, "ssubl2" },
645  { ARM64_INS_SSUBL, "ssubl" },
646  { ARM64_INS_SSUBW2, "ssubw2" },
647  { ARM64_INS_SSUBW, "ssubw" },
648  { ARM64_INS_ST1, "st1" },
649  { ARM64_INS_ST2, "st2" },
650  { ARM64_INS_ST3, "st3" },
651  { ARM64_INS_ST4, "st4" },
652  { ARM64_INS_STLRB, "stlrb" },
653  { ARM64_INS_STLRH, "stlrh" },
654  { ARM64_INS_STLR, "stlr" },
655  { ARM64_INS_STLXP, "stlxp" },
656  { ARM64_INS_STLXRB, "stlxrb" },
657  { ARM64_INS_STLXRH, "stlxrh" },
658  { ARM64_INS_STLXR, "stlxr" },
659  { ARM64_INS_STNP, "stnp" },
660  { ARM64_INS_STP, "stp" },
661  { ARM64_INS_STRB, "strb" },
662  { ARM64_INS_STR, "str" },
663  { ARM64_INS_STRH, "strh" },
664  { ARM64_INS_STTRB, "sttrb" },
665  { ARM64_INS_STTRH, "sttrh" },
666  { ARM64_INS_STTR, "sttr" },
667  { ARM64_INS_STURB, "sturb" },
668  { ARM64_INS_STUR, "stur" },
669  { ARM64_INS_STURH, "sturh" },
670  { ARM64_INS_STXP, "stxp" },
671  { ARM64_INS_STXRB, "stxrb" },
672  { ARM64_INS_STXRH, "stxrh" },
673  { ARM64_INS_STXR, "stxr" },
674  { ARM64_INS_SUBHN, "subhn" },
675  { ARM64_INS_SUBHN2, "subhn2" },
676  { ARM64_INS_SUB, "sub" },
677  { ARM64_INS_SUQADD, "suqadd" },
678  { ARM64_INS_SVC, "svc" },
679  { ARM64_INS_SYSL, "sysl" },
680  { ARM64_INS_SYS, "sys" },
681  { ARM64_INS_TBL, "tbl" },
682  { ARM64_INS_TBNZ, "tbnz" },
683  { ARM64_INS_TBX, "tbx" },
684  { ARM64_INS_TBZ, "tbz" },
685  { ARM64_INS_TRN1, "trn1" },
686  { ARM64_INS_TRN2, "trn2" },
687  { ARM64_INS_UABAL2, "uabal2" },
688  { ARM64_INS_UABAL, "uabal" },
689  { ARM64_INS_UABA, "uaba" },
690  { ARM64_INS_UABDL2, "uabdl2" },
691  { ARM64_INS_UABDL, "uabdl" },
692  { ARM64_INS_UABD, "uabd" },
693  { ARM64_INS_UADALP, "uadalp" },
694  { ARM64_INS_UADDLP, "uaddlp" },
695  { ARM64_INS_UADDLV, "uaddlv" },
696  { ARM64_INS_UADDL2, "uaddl2" },
697  { ARM64_INS_UADDL, "uaddl" },
698  { ARM64_INS_UADDW2, "uaddw2" },
699  { ARM64_INS_UADDW, "uaddw" },
700  { ARM64_INS_UBFM, "ubfm" },
701  { ARM64_INS_UCVTF, "ucvtf" },
702  { ARM64_INS_UDIV, "udiv" },
703  { ARM64_INS_UHADD, "uhadd" },
704  { ARM64_INS_UHSUB, "uhsub" },
705  { ARM64_INS_UMADDL, "umaddl" },
706  { ARM64_INS_UMAXP, "umaxp" },
707  { ARM64_INS_UMAXV, "umaxv" },
708  { ARM64_INS_UMAX, "umax" },
709  { ARM64_INS_UMINP, "uminp" },
710  { ARM64_INS_UMINV, "uminv" },
711  { ARM64_INS_UMIN, "umin" },
712  { ARM64_INS_UMLAL2, "umlal2" },
713  { ARM64_INS_UMLAL, "umlal" },
714  { ARM64_INS_UMLSL2, "umlsl2" },
715  { ARM64_INS_UMLSL, "umlsl" },
716  { ARM64_INS_UMOV, "umov" },
717  { ARM64_INS_UMSUBL, "umsubl" },
718  { ARM64_INS_UMULH, "umulh" },
719  { ARM64_INS_UMULL2, "umull2" },
720  { ARM64_INS_UMULL, "umull" },
721  { ARM64_INS_UQADD, "uqadd" },
722  { ARM64_INS_UQRSHL, "uqrshl" },
723  { ARM64_INS_UQRSHRN, "uqrshrn" },
724  { ARM64_INS_UQRSHRN2, "uqrshrn2" },
725  { ARM64_INS_UQSHL, "uqshl" },
726  { ARM64_INS_UQSHRN, "uqshrn" },
727  { ARM64_INS_UQSHRN2, "uqshrn2" },
728  { ARM64_INS_UQSUB, "uqsub" },
729  { ARM64_INS_UQXTN2, "uqxtn2" },
730  { ARM64_INS_UQXTN, "uqxtn" },
731  { ARM64_INS_URECPE, "urecpe" },
732  { ARM64_INS_URHADD, "urhadd" },
733  { ARM64_INS_URSHL, "urshl" },
734  { ARM64_INS_URSHR, "urshr" },
735  { ARM64_INS_URSQRTE, "ursqrte" },
736  { ARM64_INS_URSRA, "ursra" },
737  { ARM64_INS_USHLL2, "ushll2" },
738  { ARM64_INS_USHLL, "ushll" },
739  { ARM64_INS_USHL, "ushl" },
740  { ARM64_INS_USHR, "ushr" },
741  { ARM64_INS_USQADD, "usqadd" },
742  { ARM64_INS_USRA, "usra" },
743  { ARM64_INS_USUBL2, "usubl2" },
744  { ARM64_INS_USUBL, "usubl" },
745  { ARM64_INS_USUBW2, "usubw2" },
746  { ARM64_INS_USUBW, "usubw" },
747  { ARM64_INS_UZP1, "uzp1" },
748  { ARM64_INS_UZP2, "uzp2" },
749  { ARM64_INS_XTN2, "xtn2" },
750  { ARM64_INS_XTN, "xtn" },
751  { ARM64_INS_ZIP1, "zip1" },
752  { ARM64_INS_ZIP2, "zip2" },
753 };
754 
755 // map *S & alias instructions back to original id
756 static const name_map alias_insn_name_maps[] = {
757  { ARM64_INS_ADC, "adcs" },
758  { ARM64_INS_AND, "ands" },
759  { ARM64_INS_ADD, "adds" },
760  { ARM64_INS_BIC, "bics" },
761  { ARM64_INS_SBC, "sbcs" },
762  { ARM64_INS_SUB, "subs" },
763 
764  // alias insn
765  { ARM64_INS_MNEG, "mneg" },
766  { ARM64_INS_UMNEGL, "umnegl" },
767  { ARM64_INS_SMNEGL, "smnegl" },
768  { ARM64_INS_NOP, "nop" },
769  { ARM64_INS_YIELD, "yield" },
770  { ARM64_INS_WFE, "wfe" },
771  { ARM64_INS_WFI, "wfi" },
772  { ARM64_INS_SEV, "sev" },
773  { ARM64_INS_SEVL, "sevl" },
774  { ARM64_INS_NGC, "ngc" },
775  { ARM64_INS_NGCS, "ngcs" },
776  { ARM64_INS_NEGS, "negs" },
777 
778  { ARM64_INS_SBFIZ, "sbfiz" },
779  { ARM64_INS_UBFIZ, "ubfiz" },
780  { ARM64_INS_SBFX, "sbfx" },
781  { ARM64_INS_UBFX, "ubfx" },
782  { ARM64_INS_BFI, "bfi" },
783  { ARM64_INS_BFXIL, "bfxil" },
784  { ARM64_INS_CMN, "cmn" },
785  { ARM64_INS_MVN, "mvn" },
786  { ARM64_INS_TST, "tst" },
787  { ARM64_INS_CSET, "cset" },
788  { ARM64_INS_CINC, "cinc" },
789  { ARM64_INS_CSETM, "csetm" },
790  { ARM64_INS_CINV, "cinv" },
791  { ARM64_INS_CNEG, "cneg" },
792  { ARM64_INS_SXTB, "sxtb" },
793  { ARM64_INS_SXTH, "sxth" },
794  { ARM64_INS_SXTW, "sxtw" },
795  { ARM64_INS_CMP, "cmp" },
796  { ARM64_INS_UXTB, "uxtb" },
797  { ARM64_INS_UXTH, "uxth" },
798  { ARM64_INS_UXTW, "uxtw" },
799 
800  { ARM64_INS_IC, "ic" },
801  { ARM64_INS_DC, "dc" },
802  { ARM64_INS_AT, "at" },
803  { ARM64_INS_TLBI, "tlbi" },
804 };
805 
806 const char *AArch64_insn_name(csh handle, unsigned int id)
807 {
808 #ifndef CAPSTONE_DIET
809  unsigned int i;
810 
811  if (id >= ARM64_INS_ENDING)
812  return NULL;
813 
814  if (id < ARR_SIZE(insn_name_maps))
815  return insn_name_maps[id].name;
816 
817  // then find alias insn
818  for (i = 0; i < ARR_SIZE(alias_insn_name_maps); i++) {
819  if (alias_insn_name_maps[i].id == id)
820  return alias_insn_name_maps[i].name;
821  }
822 
823  // not found
824  return NULL;
825 #else
826  return NULL;
827 #endif
828 }
829 
830 #ifndef CAPSTONE_DIET
831 static const name_map group_name_maps[] = {
832  // generic groups
833  { ARM64_GRP_INVALID, NULL },
834  { ARM64_GRP_JUMP, "jump" },
835  { ARM64_GRP_CALL, "call" },
836  { ARM64_GRP_RET, "return" },
837  { ARM64_GRP_PRIVILEGE, "privilege" },
838  { ARM64_GRP_INT, "int" },
839  { ARM64_GRP_BRANCH_RELATIVE, "branch_relative" },
840 
841  // architecture-specific groups
842  { ARM64_GRP_CRYPTO, "crypto" },
843  { ARM64_GRP_FPARMV8, "fparmv8" },
844  { ARM64_GRP_NEON, "neon" },
845  { ARM64_GRP_CRC, "crc" },
846 };
847 #endif
848 
849 const char *AArch64_group_name(csh handle, unsigned int id)
850 {
851 #ifndef CAPSTONE_DIET
853 #else
854  return NULL;
855 #endif
856 }
857 
858 // map instruction name to public instruction ID
859 arm64_reg AArch64_map_insn(const char *name)
860 {
861  // NOTE: skip first NULL name in insn_name_maps
862  int i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
863 
864  if (i == -1)
865  // try again with 'special' insn that is not available in insn_name_maps
866  i = name2id(alias_insn_name_maps, ARR_SIZE(alias_insn_name_maps), name);
867 
868  return (i != -1)? i : ARM64_REG_INVALID;
869 }
870 
871 // map internal raw vregister to 'public' register
872 arm64_reg AArch64_map_vregister(unsigned int r)
873 {
874  // for some reasons different Arm64 can map different register number to
875  // the same register. this function handles the issue for exposing Mips
876  // operands by mapping internal registers to 'public' register.
877  static const unsigned int map[] = { 0,
878  0, 0, 0, 0, 0,
879  0, 0, 0, 0, 0,
880  0, 0, 0, 0, 0,
881  0, 0, 0, 0, 0,
882  0, 0, 0, 0, 0,
883  0, 0, 0, 0, 0,
884  0, 0, 0, 0, 0,
885  0, 0, 0, 0, ARM64_REG_V0,
892  ARM64_REG_V31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
893  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
894  0, 0, 0, ARM64_REG_V0, ARM64_REG_V1,
901  0, 0, 0, 0, 0,
902  0, 0, 0, 0, 0,
903  0, 0, 0, 0, 0,
904  0, 0, 0, 0, 0,
905  0, 0, 0, 0, 0,
906  0, 0, 0, 0, 0,
907  0, 0, 0, 0, 0,
908  0, 0, 0, 0, 0,
909  0, 0, 0, 0, 0,
910  0, 0, 0, 0, 0,
911  0, 0, 0, 0, 0,
912  0, 0, 0, 0, 0,
913  0, 0, 0, 0, 0,
914  0, 0, 0, 0, 0,
915  0, 0, 0, 0, 0,
916  0, 0, 0, 0, 0,
917  0, 0, 0, 0, 0,
918  0, 0, 0, 0, 0,
958 
959  if (r < ARR_SIZE(map))
960  return map[r];
961 
962  // cannot find this register
963  return 0;
964 }
965 
967 {
968  if (MI->csh->detail) {
969  MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count - 1].vas = sp;
970  }
971 }
972 
974 {
975  if (MI->csh->detail) {
976  MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count - 1].vess = sp;
977  }
978 }
979 
980 void arm64_op_addFP(MCInst *MI, float fp)
981 {
982  if (MI->csh->detail) {
983  MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].type = ARM64_OP_FP;
984  MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].fp = fp;
985  MI->flat_insn->detail->arm64.op_count++;
986  }
987 }
988 
990 {
991  if (MI->csh->detail) {
992  MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].type = ARM64_OP_IMM;
993  MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].imm = (int)imm;
994  MI->flat_insn->detail->arm64.op_count++;
995  }
996 }
997 
998 #ifndef CAPSTONE_DIET
999 
1000 // map instruction to its characteristics
1001 typedef struct insn_op {
1002  unsigned int eflags_update; // how this instruction update status flags
1003  uint8_t access[5];
1004 } insn_op;
1005 
1006 static insn_op insn_ops[] = {
1007  {
1008  /* NULL item */
1009  0, { 0 }
1010  },
1011 
1012 #include "AArch64MappingInsnOp.inc"
1013 };
1014 
1015 // given internal insn id, return operand access info
1016 uint8_t *AArch64_get_op_access(cs_struct *h, unsigned int id)
1017 {
1018  int i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);
1019  if (i != 0) {
1020  return insn_ops[i].access;
1021  }
1022 
1023  return NULL;
1024 }
1025 
1026 void AArch64_reg_access(const cs_insn *insn,
1027  cs_regs regs_read, uint8_t *regs_read_count,
1028  cs_regs regs_write, uint8_t *regs_write_count)
1029 {
1030  uint8_t i;
1031  uint8_t read_count, write_count;
1032  cs_arm64 *arm64 = &(insn->detail->arm64);
1033 
1034  read_count = insn->detail->regs_read_count;
1035  write_count = insn->detail->regs_write_count;
1036 
1037  // implicit registers
1038  memcpy(regs_read, insn->detail->regs_read, read_count * sizeof(insn->detail->regs_read[0]));
1039  memcpy(regs_write, insn->detail->regs_write, write_count * sizeof(insn->detail->regs_write[0]));
1040 
1041  // explicit registers
1042  for (i = 0; i < arm64->op_count; i++) {
1043  cs_arm64_op *op = &(arm64->operands[i]);
1044  switch((int)op->type) {
1045  case ARM64_OP_REG:
1046  if ((op->access & CS_AC_READ) && !arr_exist(regs_read, read_count, op->reg)) {
1047  regs_read[read_count] = (uint16_t)op->reg;
1048  read_count++;
1049  }
1050  if ((op->access & CS_AC_WRITE) && !arr_exist(regs_write, write_count, op->reg)) {
1051  regs_write[write_count] = (uint16_t)op->reg;
1052  write_count++;
1053  }
1054  break;
1055  case ARM_OP_MEM:
1056  // registers appeared in memory references always being read
1057  if ((op->mem.base != ARM64_REG_INVALID) && !arr_exist(regs_read, read_count, op->mem.base)) {
1058  regs_read[read_count] = (uint16_t)op->mem.base;
1059  read_count++;
1060  }
1061  if ((op->mem.index != ARM64_REG_INVALID) && !arr_exist(regs_read, read_count, op->mem.index)) {
1062  regs_read[read_count] = (uint16_t)op->mem.index;
1063  read_count++;
1064  }
1065  if ((arm64->writeback) && (op->mem.base != ARM64_REG_INVALID) && !arr_exist(regs_write, write_count, op->mem.base)) {
1066  regs_write[write_count] = (uint16_t)op->mem.base;
1067  write_count++;
1068  }
1069  default:
1070  break;
1071  }
1072  }
1073 
1074  *regs_read_count = read_count;
1075  *regs_write_count = write_count;
1076 }
1077 #endif
1078 
1079 #endif
void arm64_op_addFP(MCInst *MI, float fp)
const char * AArch64_insn_name(csh handle, unsigned int id)
uint8_t * AArch64_get_op_access(cs_struct *h, unsigned int id)
arm64_reg AArch64_map_insn(const char *name)
void arm64_op_addImm(MCInst *MI, int64_t imm)
void arm64_op_addVectorElementSizeSpecifier(MCInst *MI, int sp)
void arm64_op_addVectorArrSpecifier(MCInst *MI, int sp)
void AArch64_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
void AArch64_reg_access(const cs_insn *insn, cs_regs regs_read, uint8_t *regs_read_count, cs_regs regs_write, uint8_t *regs_write_count)
arm64_reg AArch64_map_vregister(unsigned int r)
const char * AArch64_reg_name(csh handle, unsigned int reg)
const char * AArch64_group_name(csh handle, unsigned int id)
static name_map group_name_maps[]
#define imm
lzma_index ** i
Definition: index.h:629
static mcore_handle handle
Definition: asm_mcore.c:8
@ ARM64_OP_FP
= CS_OP_FP (Floating-Point operand).
Definition: arm64.h:238
@ ARM64_OP_REG
= CS_OP_REG (Register operand).
Definition: arm64.h:235
@ ARM64_OP_IMM
= CS_OP_IMM (Immediate operand).
Definition: arm64.h:236
@ ARM64_GRP_INVALID
= CS_GRP_INVALID
Definition: arm64.h:1140
@ ARM64_GRP_BRANCH_RELATIVE
= CS_GRP_BRANCH_RELATIVE
Definition: arm64.h:1149
@ ARM64_GRP_CRC
Definition: arm64.h:1155
@ ARM64_GRP_PRIVILEGE
= CS_GRP_PRIVILEGE
Definition: arm64.h:1148
@ ARM64_GRP_CRYPTO
Definition: arm64.h:1152
@ ARM64_GRP_FPARMV8
Definition: arm64.h:1153
@ ARM64_GRP_CALL
Definition: arm64.h:1145
@ ARM64_GRP_INT
Definition: arm64.h:1147
@ ARM64_GRP_NEON
Definition: arm64.h:1154
@ ARM64_GRP_JUMP
= CS_GRP_JUMP
Definition: arm64.h:1144
@ ARM64_GRP_RET
Definition: arm64.h:1146
arm64_reg
ARM64 registers.
Definition: arm64.h:347
@ ARM64_REG_Q29
Definition: arm64.h:482
@ ARM64_REG_W21
Definition: arm64.h:538
@ ARM64_REG_X19
Definition: arm64.h:567
@ ARM64_REG_Q17
Definition: arm64.h:470
@ ARM64_REG_H16
Definition: arm64.h:437
@ ARM64_REG_H20
Definition: arm64.h:441
@ ARM64_REG_W29
Definition: arm64.h:546
@ ARM64_REG_W17
Definition: arm64.h:534
@ ARM64_REG_W2
Definition: arm64.h:519
@ ARM64_REG_D3
Definition: arm64.h:392
@ ARM64_REG_X4
Definition: arm64.h:552
@ ARM64_REG_H23
Definition: arm64.h:444
@ ARM64_REG_S9
Definition: arm64.h:494
@ ARM64_REG_B4
Definition: arm64.h:361
@ ARM64_REG_D31
Definition: arm64.h:420
@ ARM64_REG_D29
Definition: arm64.h:418
@ ARM64_REG_B10
Definition: arm64.h:367
@ ARM64_REG_W0
Definition: arm64.h:517
@ ARM64_REG_H28
Definition: arm64.h:449
@ ARM64_REG_B2
Definition: arm64.h:359
@ ARM64_REG_W11
Definition: arm64.h:528
@ ARM64_REG_X12
Definition: arm64.h:560
@ ARM64_REG_B17
Definition: arm64.h:374
@ ARM64_REG_X6
Definition: arm64.h:554
@ ARM64_REG_W5
Definition: arm64.h:522
@ ARM64_REG_B13
Definition: arm64.h:370
@ ARM64_REG_S2
Definition: arm64.h:487
@ ARM64_REG_D19
Definition: arm64.h:408
@ ARM64_REG_S8
Definition: arm64.h:493
@ ARM64_REG_H3
Definition: arm64.h:424
@ ARM64_REG_D14
Definition: arm64.h:403
@ ARM64_REG_D10
Definition: arm64.h:399
@ ARM64_REG_B0
Definition: arm64.h:357
@ ARM64_REG_V11
Definition: arm64.h:589
@ ARM64_REG_H1
Definition: arm64.h:422
@ ARM64_REG_B20
Definition: arm64.h:377
@ ARM64_REG_V0
Definition: arm64.h:578
@ ARM64_REG_X14
Definition: arm64.h:562
@ ARM64_REG_X8
Definition: arm64.h:556
@ ARM64_REG_D25
Definition: arm64.h:414
@ ARM64_REG_Q25
Definition: arm64.h:478
@ ARM64_REG_H8
Definition: arm64.h:429
@ ARM64_REG_H4
Definition: arm64.h:425
@ ARM64_REG_Q3
Definition: arm64.h:456
@ ARM64_REG_WSP
Definition: arm64.h:354
@ ARM64_REG_SP
Definition: arm64.h:353
@ ARM64_REG_B27
Definition: arm64.h:384
@ ARM64_REG_H24
Definition: arm64.h:445
@ ARM64_REG_B11
Definition: arm64.h:368
@ ARM64_REG_H30
Definition: arm64.h:451
@ ARM64_REG_X1
Definition: arm64.h:549
@ ARM64_REG_V12
Definition: arm64.h:590
@ ARM64_REG_D6
Definition: arm64.h:395
@ ARM64_REG_D30
Definition: arm64.h:419
@ ARM64_REG_B16
Definition: arm64.h:373
@ ARM64_REG_B1
Definition: arm64.h:358
@ ARM64_REG_D20
Definition: arm64.h:409
@ ARM64_REG_S7
Definition: arm64.h:492
@ ARM64_REG_W12
Definition: arm64.h:529
@ ARM64_REG_S1
Definition: arm64.h:486
@ ARM64_REG_S24
Definition: arm64.h:509
@ ARM64_REG_D11
Definition: arm64.h:400
@ ARM64_REG_S19
Definition: arm64.h:504
@ ARM64_REG_X24
Definition: arm64.h:572
@ ARM64_REG_X28
Definition: arm64.h:576
@ ARM64_REG_D27
Definition: arm64.h:416
@ ARM64_REG_H29
Definition: arm64.h:450
@ ARM64_REG_W7
Definition: arm64.h:524
@ ARM64_REG_S26
Definition: arm64.h:511
@ ARM64_REG_H26
Definition: arm64.h:447
@ ARM64_REG_S27
Definition: arm64.h:512
@ ARM64_REG_S10
Definition: arm64.h:495
@ ARM64_REG_D16
Definition: arm64.h:405
@ ARM64_REG_Q15
Definition: arm64.h:468
@ ARM64_REG_Q12
Definition: arm64.h:465
@ ARM64_REG_Q20
Definition: arm64.h:473
@ ARM64_REG_D4
Definition: arm64.h:393
@ ARM64_REG_H6
Definition: arm64.h:427
@ ARM64_REG_Q16
Definition: arm64.h:469
@ ARM64_REG_S13
Definition: arm64.h:498
@ ARM64_REG_H5
Definition: arm64.h:426
@ ARM64_REG_V2
Definition: arm64.h:580
@ ARM64_REG_H31
Definition: arm64.h:452
@ ARM64_REG_D9
Definition: arm64.h:398
@ ARM64_REG_X16
Definition: arm64.h:564
@ ARM64_REG_W20
Definition: arm64.h:537
@ ARM64_REG_B25
Definition: arm64.h:382
@ ARM64_REG_V5
Definition: arm64.h:583
@ ARM64_REG_B8
Definition: arm64.h:365
@ ARM64_REG_B21
Definition: arm64.h:378
@ ARM64_REG_X2
Definition: arm64.h:550
@ ARM64_REG_H27
Definition: arm64.h:448
@ ARM64_REG_W15
Definition: arm64.h:532
@ ARM64_REG_H18
Definition: arm64.h:439
@ ARM64_REG_X15
Definition: arm64.h:563
@ ARM64_REG_Q6
Definition: arm64.h:459
@ ARM64_REG_S0
Definition: arm64.h:485
@ ARM64_REG_V30
Definition: arm64.h:608
@ ARM64_REG_H9
Definition: arm64.h:430
@ ARM64_REG_V24
Definition: arm64.h:602
@ ARM64_REG_X22
Definition: arm64.h:570
@ ARM64_REG_B22
Definition: arm64.h:379
@ ARM64_REG_D24
Definition: arm64.h:413
@ ARM64_REG_D22
Definition: arm64.h:411
@ ARM64_REG_W9
Definition: arm64.h:526
@ ARM64_REG_V17
Definition: arm64.h:595
@ ARM64_REG_S14
Definition: arm64.h:499
@ ARM64_REG_W14
Definition: arm64.h:531
@ ARM64_REG_S25
Definition: arm64.h:510
@ ARM64_REG_B5
Definition: arm64.h:362
@ ARM64_REG_X26
Definition: arm64.h:574
@ ARM64_REG_B28
Definition: arm64.h:385
@ ARM64_REG_XZR
Definition: arm64.h:356
@ ARM64_REG_V10
Definition: arm64.h:588
@ ARM64_REG_X13
Definition: arm64.h:561
@ ARM64_REG_X30
Definition: arm64.h:351
@ ARM64_REG_S12
Definition: arm64.h:497
@ ARM64_REG_H17
Definition: arm64.h:438
@ ARM64_REG_X11
Definition: arm64.h:559
@ ARM64_REG_V20
Definition: arm64.h:598
@ ARM64_REG_Q18
Definition: arm64.h:471
@ ARM64_REG_X0
Definition: arm64.h:548
@ ARM64_REG_B26
Definition: arm64.h:383
@ ARM64_REG_V3
Definition: arm64.h:581
@ ARM64_REG_B31
Definition: arm64.h:388
@ ARM64_REG_V8
Definition: arm64.h:586
@ ARM64_REG_Q24
Definition: arm64.h:477
@ ARM64_REG_W23
Definition: arm64.h:540
@ ARM64_REG_X9
Definition: arm64.h:557
@ ARM64_REG_Q1
Definition: arm64.h:454
@ ARM64_REG_H25
Definition: arm64.h:446
@ ARM64_REG_D15
Definition: arm64.h:404
@ ARM64_REG_X3
Definition: arm64.h:551
@ ARM64_REG_X21
Definition: arm64.h:569
@ ARM64_REG_V25
Definition: arm64.h:603
@ ARM64_REG_B9
Definition: arm64.h:366
@ ARM64_REG_H0
Definition: arm64.h:421
@ ARM64_REG_W8
Definition: arm64.h:525
@ ARM64_REG_D23
Definition: arm64.h:412
@ ARM64_REG_H14
Definition: arm64.h:435
@ ARM64_REG_W16
Definition: arm64.h:533
@ ARM64_REG_S31
Definition: arm64.h:516
@ ARM64_REG_NZCV
Definition: arm64.h:352
@ ARM64_REG_Q9
Definition: arm64.h:462
@ ARM64_REG_Q28
Definition: arm64.h:481
@ ARM64_REG_V21
Definition: arm64.h:599
@ ARM64_REG_H10
Definition: arm64.h:431
@ ARM64_REG_V23
Definition: arm64.h:601
@ ARM64_REG_X27
Definition: arm64.h:575
@ ARM64_REG_S3
Definition: arm64.h:488
@ ARM64_REG_X23
Definition: arm64.h:571
@ ARM64_REG_V16
Definition: arm64.h:594
@ ARM64_REG_S20
Definition: arm64.h:505
@ ARM64_REG_S4
Definition: arm64.h:489
@ ARM64_REG_Q21
Definition: arm64.h:474
@ ARM64_REG_V31
Definition: arm64.h:609
@ ARM64_REG_Q26
Definition: arm64.h:479
@ ARM64_REG_X5
Definition: arm64.h:553
@ ARM64_REG_W24
Definition: arm64.h:541
@ ARM64_REG_X25
Definition: arm64.h:573
@ ARM64_REG_W3
Definition: arm64.h:520
@ ARM64_REG_H15
Definition: arm64.h:436
@ ARM64_REG_B24
Definition: arm64.h:381
@ ARM64_REG_V27
Definition: arm64.h:605
@ ARM64_REG_W30
Definition: arm64.h:547
@ ARM64_REG_D13
Definition: arm64.h:402
@ ARM64_REG_S22
Definition: arm64.h:507
@ ARM64_REG_Q31
Definition: arm64.h:484
@ ARM64_REG_H12
Definition: arm64.h:433
@ ARM64_REG_Q19
Definition: arm64.h:472
@ ARM64_REG_S18
Definition: arm64.h:503
@ ARM64_REG_V15
Definition: arm64.h:593
@ ARM64_REG_W10
Definition: arm64.h:527
@ ARM64_REG_V13
Definition: arm64.h:591
@ ARM64_REG_H11
Definition: arm64.h:432
@ ARM64_REG_D28
Definition: arm64.h:417
@ ARM64_REG_W1
Definition: arm64.h:518
@ ARM64_REG_Q0
Definition: arm64.h:453
@ ARM64_REG_S15
Definition: arm64.h:500
@ ARM64_REG_WZR
Definition: arm64.h:355
@ ARM64_REG_D8
Definition: arm64.h:397
@ ARM64_REG_S30
Definition: arm64.h:515
@ ARM64_REG_INVALID
Definition: arm64.h:348
@ ARM64_REG_V29
Definition: arm64.h:607
@ ARM64_REG_V9
Definition: arm64.h:587
@ ARM64_REG_Q4
Definition: arm64.h:457
@ ARM64_REG_W6
Definition: arm64.h:523
@ ARM64_REG_D12
Definition: arm64.h:401
@ ARM64_REG_V14
Definition: arm64.h:592
@ ARM64_REG_Q23
Definition: arm64.h:476
@ ARM64_REG_V19
Definition: arm64.h:597
@ ARM64_REG_Q27
Definition: arm64.h:480
@ ARM64_REG_W25
Definition: arm64.h:542
@ ARM64_REG_B7
Definition: arm64.h:364
@ ARM64_REG_Q14
Definition: arm64.h:467
@ ARM64_REG_H22
Definition: arm64.h:443
@ ARM64_REG_Q5
Definition: arm64.h:458
@ ARM64_REG_D18
Definition: arm64.h:407
@ ARM64_REG_W4
Definition: arm64.h:521
@ ARM64_REG_D2
Definition: arm64.h:391
@ ARM64_REG_S6
Definition: arm64.h:491
@ ARM64_REG_X18
Definition: arm64.h:566
@ ARM64_REG_V4
Definition: arm64.h:582
@ ARM64_REG_S16
Definition: arm64.h:501
@ ARM64_REG_W28
Definition: arm64.h:545
@ ARM64_REG_X10
Definition: arm64.h:558
@ ARM64_REG_W27
Definition: arm64.h:544
@ ARM64_REG_H7
Definition: arm64.h:428
@ ARM64_REG_Q11
Definition: arm64.h:464
@ ARM64_REG_V1
Definition: arm64.h:579
@ ARM64_REG_D1
Definition: arm64.h:390
@ ARM64_REG_Q2
Definition: arm64.h:455
@ ARM64_REG_X29
Definition: arm64.h:350
@ ARM64_REG_V22
Definition: arm64.h:600
@ ARM64_REG_Q30
Definition: arm64.h:483
@ ARM64_REG_D0
Definition: arm64.h:389
@ ARM64_REG_W22
Definition: arm64.h:539
@ ARM64_REG_S28
Definition: arm64.h:513
@ ARM64_REG_W26
Definition: arm64.h:543
@ ARM64_REG_H19
Definition: arm64.h:440
@ ARM64_REG_B14
Definition: arm64.h:371
@ ARM64_REG_V6
Definition: arm64.h:584
@ ARM64_REG_B18
Definition: arm64.h:375
@ ARM64_REG_X17
Definition: arm64.h:565
@ ARM64_REG_B29
Definition: arm64.h:386
@ ARM64_REG_Q10
Definition: arm64.h:463
@ ARM64_REG_X20
Definition: arm64.h:568
@ ARM64_REG_S11
Definition: arm64.h:496
@ ARM64_REG_Q7
Definition: arm64.h:460
@ ARM64_REG_B23
Definition: arm64.h:380
@ ARM64_REG_D26
Definition: arm64.h:415
@ ARM64_REG_B6
Definition: arm64.h:363
@ ARM64_REG_S29
Definition: arm64.h:514
@ ARM64_REG_V28
Definition: arm64.h:606
@ ARM64_REG_D21
Definition: arm64.h:410
@ ARM64_REG_D5
Definition: arm64.h:394
@ ARM64_REG_W19
Definition: arm64.h:536
@ ARM64_REG_S21
Definition: arm64.h:506
@ ARM64_REG_B12
Definition: arm64.h:369
@ ARM64_REG_X7
Definition: arm64.h:555
@ ARM64_REG_W18
Definition: arm64.h:535
@ ARM64_REG_H21
Definition: arm64.h:442
@ ARM64_REG_B19
Definition: arm64.h:376
@ ARM64_REG_Q22
Definition: arm64.h:475
@ ARM64_REG_B3
Definition: arm64.h:360
@ ARM64_REG_W13
Definition: arm64.h:530
@ ARM64_REG_V26
Definition: arm64.h:604
@ ARM64_REG_S5
Definition: arm64.h:490
@ ARM64_REG_V7
Definition: arm64.h:585
@ ARM64_REG_S17
Definition: arm64.h:502
@ ARM64_REG_Q8
Definition: arm64.h:461
@ ARM64_REG_V18
Definition: arm64.h:596
@ ARM64_REG_H13
Definition: arm64.h:434
@ ARM64_REG_D17
Definition: arm64.h:406
@ ARM64_REG_D7
Definition: arm64.h:396
@ ARM64_REG_Q13
Definition: arm64.h:466
@ ARM64_REG_B15
Definition: arm64.h:372
@ ARM64_REG_B30
Definition: arm64.h:387
@ ARM64_REG_H2
Definition: arm64.h:423
@ ARM64_REG_S23
Definition: arm64.h:508
@ ARM64_INS_SRSRA
Definition: arm64.h:979
@ ARM64_INS_SMLAL2
Definition: arm64.h:939
@ ARM64_INS_RSHRN
Definition: arm64.h:892
@ ARM64_INS_SMSUBL
Definition: arm64.h:944
@ ARM64_INS_BFI
Definition: arm64.h:1110
@ ARM64_INS_PMULL
Definition: arm64.h:878
@ ARM64_INS_UMAXP
Definition: arm64.h:1047
@ ARM64_INS_FNMSUB
Definition: arm64.h:795
@ ARM64_INS_LDAR
Definition: arm64.h:828
@ ARM64_INS_STNP
Definition: arm64.h:1000
@ ARM64_INS_FCVTNS
Definition: arm64.h:763
@ ARM64_INS_TBL
Definition: arm64.h:1022
@ ARM64_INS_SQSHRUN
Definition: arm64.h:968
@ ARM64_INS_AND
Definition: arm64.h:687
@ ARM64_INS_SQXTN
Definition: arm64.h:972
@ ARM64_INS_UMIN
Definition: arm64.h:1052
@ ARM64_INS_CSINC
Definition: arm64.h:725
@ ARM64_INS_NOP
Definition: arm64.h:1099
@ ARM64_INS_UMLSL
Definition: arm64.h:1056
@ ARM64_INS_SHRN2
Definition: arm64.h:927
@ ARM64_INS_SMAXV
Definition: arm64.h:933
@ ARM64_INS_RADDHN2
Definition: arm64.h:883
@ ARM64_INS_USUBL
Definition: arm64.h:1085
@ ARM64_INS_FNEG
Definition: arm64.h:793
@ ARM64_INS_SSUBW2
Definition: arm64.h:987
@ ARM64_INS_SEV
Definition: arm64.h:1103
@ ARM64_INS_LDTRH
Definition: arm64.h:843
@ ARM64_INS_SABAL
Definition: arm64.h:896
@ ARM64_INS_UXTW
Definition: arm64.h:1126
@ ARM64_INS_FACGE
Definition: arm64.h:742
@ ARM64_INS_SMLAL
Definition: arm64.h:940
@ ARM64_INS_UABDL2
Definition: arm64.h:1031
@ ARM64_INS_SADDW2
Definition: arm64.h:907
@ ARM64_INS_SEVL
Definition: arm64.h:1104
@ ARM64_INS_MVN
Definition: arm64.h:1113
@ ARM64_INS_ST1
Definition: arm64.h:989
@ ARM64_INS_FMLS
Definition: arm64.h:788
@ ARM64_INS_LDURH
Definition: arm64.h:851
@ ARM64_INS_RBIT
Definition: arm64.h:884
@ ARM64_INS_TLBI
Definition: arm64.h:1130
@ ARM64_INS_CCMN
Definition: arm64.h:701
@ ARM64_INS_CRC32H
Definition: arm64.h:721
@ ARM64_INS_BIF
Definition: arm64.h:692
@ ARM64_INS_RADDHN
Definition: arm64.h:882
@ ARM64_INS_FMINNMV
Definition: arm64.h:784
@ ARM64_INS_SQDMULH
Definition: arm64.h:954
@ ARM64_INS_TBNZ
Definition: arm64.h:1023
@ ARM64_INS_SMAXP
Definition: arm64.h:932
@ ARM64_INS_FCVTL2
Definition: arm64.h:760
@ ARM64_INS_FSQRT
Definition: arm64.h:809
@ ARM64_INS_ORN
Definition: arm64.h:875
@ ARM64_INS_INVALID
Definition: arm64.h:672
@ ARM64_INS_CMLT
Definition: arm64.h:712
@ ARM64_INS_LDPSW
Definition: arm64.h:835
@ ARM64_INS_UADDW
Definition: arm64.h:1040
@ ARM64_INS_SHA1SU1
Definition: arm64.h:918
@ ARM64_INS_CSNEG
Definition: arm64.h:727
@ ARM64_INS_SADALP
Definition: arm64.h:902
@ ARM64_INS_DSB
Definition: arm64.h:733
@ ARM64_INS_STUR
Definition: arm64.h:1009
@ ARM64_INS_FCVT
Definition: arm64.h:758
@ ARM64_INS_CSETM
Definition: arm64.h:1117
@ ARM64_INS_FCCMP
Definition: arm64.h:746
@ ARM64_INS_UADALP
Definition: arm64.h:1034
@ ARM64_INS_FCVTN2
Definition: arm64.h:766
@ ARM64_INS_CRC32B
Definition: arm64.h:716
@ ARM64_INS_LDRH
Definition: arm64.h:838
@ ARM64_INS_SSHR
Definition: arm64.h:983
@ ARM64_INS_LDARH
Definition: arm64.h:827
@ ARM64_INS_WFE
Definition: arm64.h:1101
@ ARM64_INS_SADDLV
Definition: arm64.h:904
@ ARM64_INS_ADC
Definition: arm64.h:675
@ ARM64_INS_FCMLT
Definition: arm64.h:752
@ ARM64_INS_ERET
Definition: arm64.h:737
@ ARM64_INS_SXTH
Definition: arm64.h:1121
@ ARM64_INS_UMINV
Definition: arm64.h:1051
@ ARM64_INS_SVC
Definition: arm64.h:1019
@ ARM64_INS_CSINV
Definition: arm64.h:726
@ ARM64_INS_SQSHRUN2
Definition: arm64.h:969
@ ARM64_INS_TBX
Definition: arm64.h:1024
@ ARM64_INS_CMHS
Definition: arm64.h:710
@ ARM64_INS_LD1R
Definition: arm64.h:818
@ ARM64_INS_DUP
Definition: arm64.h:734
@ ARM64_INS_HLT
Definition: arm64.h:812
@ ARM64_INS_LDAXRB
Definition: arm64.h:830
@ ARM64_INS_SMINP
Definition: arm64.h:936
@ ARM64_INS_UZP2
Definition: arm64.h:1089
@ ARM64_INS_NOT
Definition: arm64.h:874
@ ARM64_INS_SABDL2
Definition: arm64.h:899
@ ARM64_INS_USUBL2
Definition: arm64.h:1084
@ ARM64_INS_UHSUB
Definition: arm64.h:1045
@ ARM64_INS_CMTST
Definition: arm64.h:713
@ ARM64_INS_SABAL2
Definition: arm64.h:895
@ ARM64_INS_FMAXNMV
Definition: arm64.h:778
@ ARM64_INS_LD2
Definition: arm64.h:820
@ ARM64_INS_UABA
Definition: arm64.h:1030
@ ARM64_INS_SHA1M
Definition: arm64.h:915
@ ARM64_INS_STLXR
Definition: arm64.h:999
@ ARM64_INS_FCVTXN
Definition: arm64.h:769
@ ARM64_INS_CMN
Definition: arm64.h:1112
@ ARM64_INS_LDXP
Definition: arm64.h:855
@ ARM64_INS_ST4
Definition: arm64.h:992
@ ARM64_INS_EON
Definition: arm64.h:735
@ ARM64_INS_FADD
Definition: arm64.h:744
@ ARM64_INS_UADDW2
Definition: arm64.h:1039
@ ARM64_INS_AESD
Definition: arm64.h:683
@ ARM64_INS_CSEL
Definition: arm64.h:724
@ ARM64_INS_UQXTN
Definition: arm64.h:1071
@ ARM64_INS_REV32
Definition: arm64.h:887
@ ARM64_INS_SQADD
Definition: arm64.h:949
@ ARM64_INS_RSUBHN
Definition: arm64.h:893
@ ARM64_INS_MOVI
Definition: arm64.h:864
@ ARM64_INS_UQRSHRN
Definition: arm64.h:1064
@ ARM64_INS_CCMP
Definition: arm64.h:702
@ ARM64_INS_RSHRN2
Definition: arm64.h:891
@ ARM64_INS_UMADDL
Definition: arm64.h:1046
@ ARM64_INS_ADDV
Definition: arm64.h:680
@ ARM64_INS_SQDMLSL
Definition: arm64.h:952
@ ARM64_INS_ADDHN2
Definition: arm64.h:677
@ ARM64_INS_ISB
Definition: arm64.h:816
@ ARM64_INS_RET
Definition: arm64.h:885
@ ARM64_INS_TBZ
Definition: arm64.h:1025
@ ARM64_INS_SMLSL2
Definition: arm64.h:941
@ ARM64_INS_LDXRH
Definition: arm64.h:857
@ ARM64_INS_URSHR
Definition: arm64.h:1075
@ ARM64_INS_FCMEQ
Definition: arm64.h:748
@ ARM64_INS_LDTRSB
Definition: arm64.h:844
@ ARM64_INS_PRFM
Definition: arm64.h:880
@ ARM64_INS_FMINNM
Definition: arm64.h:782
@ ARM64_INS_FMADD
Definition: arm64.h:774
@ ARM64_INS_LDTR
Definition: arm64.h:848
@ ARM64_INS_SQDMLAL2
Definition: arm64.h:951
@ ARM64_INS_BRK
Definition: arm64.h:697
@ ARM64_INS_SHA1C
Definition: arm64.h:913
@ ARM64_INS_AESIMC
Definition: arm64.h:685
@ ARM64_INS_SQXTUN2
Definition: arm64.h:973
@ ARM64_INS_LDNP
Definition: arm64.h:833
@ ARM64_INS_SHA256SU1
Definition: arm64.h:922
@ ARM64_INS_SABA
Definition: arm64.h:898
@ ARM64_INS_LDRSW
Definition: arm64.h:841
@ ARM64_INS_UMAXV
Definition: arm64.h:1048
@ ARM64_INS_LDAXRH
Definition: arm64.h:831
@ ARM64_INS_SRSHR
Definition: arm64.h:978
@ ARM64_INS_UCVTF
Definition: arm64.h:1042
@ ARM64_INS_STXR
Definition: arm64.h:1014
@ ARM64_INS_USHR
Definition: arm64.h:1081
@ ARM64_INS_LDARB
Definition: arm64.h:826
@ ARM64_INS_STXRB
Definition: arm64.h:1012
@ ARM64_INS_CINC
Definition: arm64.h:1116
@ ARM64_INS_LD3
Definition: arm64.h:822
@ ARM64_INS_MOVK
Definition: arm64.h:865
@ ARM64_INS_EXT
Definition: arm64.h:739
@ ARM64_INS_MRS
Definition: arm64.h:868
@ ARM64_INS_AESE
Definition: arm64.h:684
@ ARM64_INS_SSUBL
Definition: arm64.h:986
@ ARM64_INS_USHLL2
Definition: arm64.h:1078
@ ARM64_INS_SADDL2
Definition: arm64.h:905
@ ARM64_INS_SABDL
Definition: arm64.h:900
@ ARM64_INS_FACGT
Definition: arm64.h:743
@ ARM64_INS_MOVN
Definition: arm64.h:866
@ ARM64_INS_STXP
Definition: arm64.h:1011
@ ARM64_INS_FCVTXN2
Definition: arm64.h:770
@ ARM64_INS_FCVTZU
Definition: arm64.h:772
@ ARM64_INS_URSQRTE
Definition: arm64.h:1076
@ ARM64_INS_AT
Definition: arm64.h:1129
@ ARM64_INS_SHADD
Definition: arm64.h:923
@ ARM64_INS_LD4R
Definition: arm64.h:824
@ ARM64_INS_FCMGE
Definition: arm64.h:749
@ ARM64_INS_FMLA
Definition: arm64.h:787
@ ARM64_INS_CRC32CX
Definition: arm64.h:720
@ ARM64_INS_SRHADD
Definition: arm64.h:975
@ ARM64_INS_PMULL2
Definition: arm64.h:877
@ ARM64_INS_STURH
Definition: arm64.h:1010
@ ARM64_INS_SSHLL
Definition: arm64.h:981
@ ARM64_INS_FRSQRTE
Definition: arm64.h:807
@ ARM64_INS_FCVTL
Definition: arm64.h:759
@ ARM64_INS_FMAX
Definition: arm64.h:775
@ ARM64_INS_INS
Definition: arm64.h:814
@ ARM64_INS_SQRSHRN
Definition: arm64.h:960
@ ARM64_INS_SLI
Definition: arm64.h:930
@ ARM64_INS_UMULL
Definition: arm64.h:1061
@ ARM64_INS_ZIP1
Definition: arm64.h:1092
@ ARM64_INS_FMSUB
Definition: arm64.h:790
@ ARM64_INS_SXTW
Definition: arm64.h:1122
@ ARM64_INS_SCVTF
Definition: arm64.h:911
@ ARM64_INS_SMAX
Definition: arm64.h:934
@ ARM64_INS_ROR
Definition: arm64.h:890
@ ARM64_INS_CSET
Definition: arm64.h:1115
@ ARM64_INS_FCVTN
Definition: arm64.h:765
@ ARM64_INS_DCPS3
Definition: arm64.h:730
@ ARM64_INS_UXTH
Definition: arm64.h:1125
@ ARM64_INS_LDTRSW
Definition: arm64.h:847
@ ARM64_INS_LDURB
Definition: arm64.h:849
@ ARM64_INS_UADDL2
Definition: arm64.h:1037
@ ARM64_INS_FDIV
Definition: arm64.h:773
@ ARM64_INS_BFXIL
Definition: arm64.h:1111
@ ARM64_INS_LDURSB
Definition: arm64.h:852
@ ARM64_INS_FRINTN
Definition: arm64.h:803
@ ARM64_INS_SMULL2
Definition: arm64.h:946
@ ARM64_INS_REV
Definition: arm64.h:889
@ ARM64_INS_SQNEG
Definition: arm64.h:957
@ ARM64_INS_FNMUL
Definition: arm64.h:796
@ ARM64_INS_STLXRH
Definition: arm64.h:998
@ ARM64_INS_LDAXR
Definition: arm64.h:832
@ ARM64_INS_LDUR
Definition: arm64.h:850
@ ARM64_INS_REV64
Definition: arm64.h:888
@ ARM64_INS_HVC
Definition: arm64.h:813
@ ARM64_INS_UQRSHRN2
Definition: arm64.h:1065
@ ARM64_INS_BFM
Definition: arm64.h:690
@ ARM64_INS_XTN
Definition: arm64.h:1091
@ ARM64_INS_PMUL
Definition: arm64.h:879
@ ARM64_INS_SBFM
Definition: arm64.h:910
@ ARM64_INS_STLXRB
Definition: arm64.h:997
@ ARM64_INS_SHA1H
Definition: arm64.h:914
@ ARM64_INS_UMNEGL
Definition: arm64.h:1097
@ ARM64_INS_MVNI
Definition: arm64.h:872
@ ARM64_INS_LDXRB
Definition: arm64.h:856
@ ARM64_INS_SRI
Definition: arm64.h:976
@ ARM64_INS_UBFX
Definition: arm64.h:1109
@ ARM64_INS_SHA256H
Definition: arm64.h:920
@ ARM64_INS_FMINNMP
Definition: arm64.h:783
@ ARM64_INS_ADR
Definition: arm64.h:681
@ ARM64_INS_DMB
Definition: arm64.h:731
@ ARM64_INS_SMULL
Definition: arm64.h:947
@ ARM64_INS_SQDMLSL2
Definition: arm64.h:953
@ ARM64_INS_WFI
Definition: arm64.h:1102
@ ARM64_INS_USRA
Definition: arm64.h:1083
@ ARM64_INS_SMC
Definition: arm64.h:935
@ ARM64_INS_SYS
Definition: arm64.h:1021
@ ARM64_INS_UABAL
Definition: arm64.h:1029
@ ARM64_INS_SHA256SU0
Definition: arm64.h:921
@ ARM64_INS_SQXTN2
Definition: arm64.h:971
@ ARM64_INS_CINV
Definition: arm64.h:1118
@ ARM64_INS_SQRSHRUN2
Definition: arm64.h:963
@ ARM64_INS_SHA1P
Definition: arm64.h:916
@ ARM64_INS_FCVTZS
Definition: arm64.h:771
@ ARM64_INS_SHLL2
Definition: arm64.h:924
@ ARM64_INS_SABD
Definition: arm64.h:901
@ ARM64_INS_SQDMULL2
Definition: arm64.h:956
@ ARM64_INS_SADDW
Definition: arm64.h:908
@ ARM64_INS_SMADDL
Definition: arm64.h:931
@ ARM64_INS_SQABS
Definition: arm64.h:948
@ ARM64_INS_MSUB
Definition: arm64.h:870
@ ARM64_INS_SQDMLAL
Definition: arm64.h:950
@ ARM64_INS_LDTRB
Definition: arm64.h:842
@ ARM64_INS_FCVTPS
Definition: arm64.h:767
@ ARM64_INS_UMSUBL
Definition: arm64.h:1058
@ ARM64_INS_ADRP
Definition: arm64.h:682
@ ARM64_INS_SMULH
Definition: arm64.h:945
@ ARM64_INS_STLRH
Definition: arm64.h:994
@ ARM64_INS_UQXTN2
Definition: arm64.h:1070
@ ARM64_INS_USQADD
Definition: arm64.h:1082
@ ARM64_INS_FABS
Definition: arm64.h:741
@ ARM64_INS_SQSHRN2
Definition: arm64.h:967
@ ARM64_INS_NGCS
Definition: arm64.h:1133
@ ARM64_INS_FRECPX
Definition: arm64.h:799
@ ARM64_INS_LDAXP
Definition: arm64.h:829
@ ARM64_INS_ST3
Definition: arm64.h:991
@ ARM64_INS_SBC
Definition: arm64.h:909
@ ARM64_INS_LDRSB
Definition: arm64.h:839
@ ARM64_INS_SHSUB
Definition: arm64.h:929
@ ARM64_INS_SSHLL2
Definition: arm64.h:980
@ ARM64_INS_SUBHN2
Definition: arm64.h:1016
@ ARM64_INS_CRC32W
Definition: arm64.h:722
@ ARM64_INS_CNEG
Definition: arm64.h:1119
@ ARM64_INS_CRC32CH
Definition: arm64.h:718
@ ARM64_INS_FRECPE
Definition: arm64.h:797
@ ARM64_INS_URECPE
Definition: arm64.h:1072
@ ARM64_INS_FMAXP
Definition: arm64.h:779
@ ARM64_INS_SQSHLU
Definition: arm64.h:964
@ ARM64_INS_STRH
Definition: arm64.h:1004
@ ARM64_INS_MSR
Definition: arm64.h:869
@ ARM64_INS_FRINTA
Definition: arm64.h:800
@ ARM64_INS_FCMLE
Definition: arm64.h:751
@ ARM64_INS_CBNZ
Definition: arm64.h:699
@ ARM64_INS_USUBW2
Definition: arm64.h:1086
@ ARM64_INS_UMULL2
Definition: arm64.h:1060
@ ARM64_INS_UBFM
Definition: arm64.h:1041
@ ARM64_INS_STTRH
Definition: arm64.h:1006
@ ARM64_INS_LSL
Definition: arm64.h:859
@ ARM64_INS_UABDL
Definition: arm64.h:1032
@ ARM64_INS_LDR
Definition: arm64.h:837
@ ARM64_INS_SQSHL
Definition: arm64.h:965
@ ARM64_INS_PRFUM
Definition: arm64.h:881
@ ARM64_INS_CRC32X
Definition: arm64.h:723
@ ARM64_INS_FCSEL
Definition: arm64.h:755
@ ARM64_INS_FRINTX
Definition: arm64.h:805
@ ARM64_INS_URSRA
Definition: arm64.h:1077
@ ARM64_INS_STTR
Definition: arm64.h:1007
@ ARM64_INS_MLA
Definition: arm64.h:862
@ ARM64_INS_SHLL
Definition: arm64.h:925
@ ARM64_INS_FMOV
Definition: arm64.h:789
@ ARM64_INS_SDIV
Definition: arm64.h:912
@ ARM64_INS_ADDHN
Definition: arm64.h:676
@ ARM64_INS_FRINTI
Definition: arm64.h:801
@ ARM64_INS_UXTB
Definition: arm64.h:1124
@ ARM64_INS_MADD
Definition: arm64.h:861
@ ARM64_INS_URSHL
Definition: arm64.h:1074
@ ARM64_INS_SMNEGL
Definition: arm64.h:1098
@ ARM64_INS_UHADD
Definition: arm64.h:1044
@ ARM64_INS_SSUBW
Definition: arm64.h:988
@ ARM64_INS_UMLAL2
Definition: arm64.h:1053
@ ARM64_INS_LDRB
Definition: arm64.h:836
@ ARM64_INS_UMLAL
Definition: arm64.h:1054
@ ARM64_INS_CLS
Definition: arm64.h:704
@ ARM64_INS_CMEQ
Definition: arm64.h:706
@ ARM64_INS_REV16
Definition: arm64.h:886
@ ARM64_INS_FRINTP
Definition: arm64.h:804
@ ARM64_INS_MLS
Definition: arm64.h:863
@ ARM64_INS_USUBW
Definition: arm64.h:1087
@ ARM64_INS_B
Definition: arm64.h:689
@ ARM64_INS_UQSHL
Definition: arm64.h:1066
@ ARM64_INS_BSL
Definition: arm64.h:698
@ ARM64_INS_CMHI
Definition: arm64.h:709
@ ARM64_INS_FNMADD
Definition: arm64.h:794
@ ARM64_INS_STR
Definition: arm64.h:1003
@ ARM64_INS_SQRSHRUN
Definition: arm64.h:962
@ ARM64_INS_LD4
Definition: arm64.h:823
@ ARM64_INS_DC
Definition: arm64.h:1128
@ ARM64_INS_UQSUB
Definition: arm64.h:1069
@ ARM64_INS_MOVZ
Definition: arm64.h:867
@ ARM64_INS_SQRSHL
Definition: arm64.h:959
@ ARM64_INS_NEG
Definition: arm64.h:873
@ ARM64_INS_UMINP
Definition: arm64.h:1050
@ ARM64_INS_SRSHL
Definition: arm64.h:977
@ ARM64_INS_SXTB
Definition: arm64.h:1120
@ ARM64_INS_UABD
Definition: arm64.h:1033
@ ARM64_INS_SUQADD
Definition: arm64.h:1018
@ ARM64_INS_SBFIZ
Definition: arm64.h:1106
@ ARM64_INS_FCVTMU
Definition: arm64.h:762
@ ARM64_INS_UADDLP
Definition: arm64.h:1035
@ ARM64_INS_FMIN
Definition: arm64.h:781
@ ARM64_INS_ENDING
Definition: arm64.h:1135
@ ARM64_INS_FMAXNMP
Definition: arm64.h:777
@ ARM64_INS_LD2R
Definition: arm64.h:819
@ ARM64_INS_SSRA
Definition: arm64.h:984
@ ARM64_INS_UMLSL2
Definition: arm64.h:1055
@ ARM64_INS_CMGT
Definition: arm64.h:708
@ ARM64_INS_LDURSW
Definition: arm64.h:854
@ ARM64_INS_FMAXV
Definition: arm64.h:780
@ ARM64_INS_UMULH
Definition: arm64.h:1059
@ ARM64_INS_SSUBL2
Definition: arm64.h:985
@ ARM64_INS_EXTR
Definition: arm64.h:738
@ ARM64_INS_ST2
Definition: arm64.h:990
@ ARM64_INS_UDIV
Definition: arm64.h:1043
@ ARM64_INS_STLR
Definition: arm64.h:995
@ ARM64_INS_ADD
Definition: arm64.h:679
@ ARM64_INS_FRINTZ
Definition: arm64.h:806
@ ARM64_INS_SMINV
Definition: arm64.h:937
@ ARM64_INS_SQDMULL
Definition: arm64.h:955
@ ARM64_INS_TRN2
Definition: arm64.h:1027
@ ARM64_INS_SBFX
Definition: arm64.h:1108
@ ARM64_INS_FABD
Definition: arm64.h:740
@ ARM64_INS_HINT
Definition: arm64.h:811
@ ARM64_INS_USHLL
Definition: arm64.h:1079
@ ARM64_INS_AESMC
Definition: arm64.h:686
@ ARM64_INS_STLRB
Definition: arm64.h:993
@ ARM64_INS_FMULX
Definition: arm64.h:792
@ ARM64_INS_NGC
Definition: arm64.h:1105
@ ARM64_INS_FCVTPU
Definition: arm64.h:768
@ ARM64_INS_SMOV
Definition: arm64.h:943
@ ARM64_INS_MOV
Definition: arm64.h:715
@ ARM64_INS_UADDL
Definition: arm64.h:1038
@ ARM64_INS_FCVTMS
Definition: arm64.h:761
@ ARM64_INS_USHL
Definition: arm64.h:1080
@ ARM64_INS_YIELD
Definition: arm64.h:1100
@ ARM64_INS_DRPS
Definition: arm64.h:732
@ ARM64_INS_UQSHRN2
Definition: arm64.h:1068
@ ARM64_INS_BIT
Definition: arm64.h:693
@ ARM64_INS_LDRSH
Definition: arm64.h:840
@ ARM64_INS_CLZ
Definition: arm64.h:705
@ ARM64_INS_FCVTAS
Definition: arm64.h:756
@ ARM64_INS_FRSQRTS
Definition: arm64.h:808
@ ARM64_INS_RSUBHN2
Definition: arm64.h:894
@ ARM64_INS_UMOV
Definition: arm64.h:1057
@ ARM64_INS_SQSUB
Definition: arm64.h:970
@ ARM64_INS_BR
Definition: arm64.h:696
@ ARM64_INS_DCPS1
Definition: arm64.h:728
@ ARM64_INS_LSR
Definition: arm64.h:860
@ ARM64_INS_SMLSL
Definition: arm64.h:942
@ ARM64_INS_FCMGT
Definition: arm64.h:750
@ ARM64_INS_ZIP2
Definition: arm64.h:1093
@ ARM64_INS_LDP
Definition: arm64.h:834
@ ARM64_INS_FMINV
Definition: arm64.h:786
@ ARM64_INS_BL
Definition: arm64.h:694
@ ARM64_INS_SMIN
Definition: arm64.h:938
@ ARM64_INS_SADDLP
Definition: arm64.h:903
@ ARM64_INS_FADDP
Definition: arm64.h:745
@ ARM64_INS_UABAL2
Definition: arm64.h:1028
@ ARM64_INS_SSHL
Definition: arm64.h:982
@ ARM64_INS_BIC
Definition: arm64.h:691
@ ARM64_INS_ABS
Definition: arm64.h:674
@ ARM64_INS_EOR
Definition: arm64.h:736
@ ARM64_INS_LD3R
Definition: arm64.h:821
@ ARM64_INS_XTN2
Definition: arm64.h:1090
@ ARM64_INS_CMP
Definition: arm64.h:1123
@ ARM64_INS_MNEG
Definition: arm64.h:1096
@ ARM64_INS_CMGE
Definition: arm64.h:707
@ ARM64_INS_STXRH
Definition: arm64.h:1013
@ ARM64_INS_SHL
Definition: arm64.h:926
@ ARM64_INS_TRN1
Definition: arm64.h:1026
@ ARM64_INS_SUBHN
Definition: arm64.h:1015
@ ARM64_INS_CLREX
Definition: arm64.h:703
@ ARM64_INS_SQSHRN
Definition: arm64.h:966
@ ARM64_INS_MUL
Definition: arm64.h:871
@ ARM64_INS_STURB
Definition: arm64.h:1008
@ ARM64_INS_STTRB
Definition: arm64.h:1005
@ ARM64_INS_FCMP
Definition: arm64.h:753
@ ARM64_INS_LD1
Definition: arm64.h:817
@ ARM64_INS_CNT
Definition: arm64.h:714
@ ARM64_INS_LDURSH
Definition: arm64.h:853
@ ARM64_INS_CMLE
Definition: arm64.h:711
@ ARM64_INS_FMAXNM
Definition: arm64.h:776
@ ARM64_INS_FRINTM
Definition: arm64.h:802
@ ARM64_INS_CBZ
Definition: arm64.h:700
@ ARM64_INS_ORR
Definition: arm64.h:876
@ ARM64_INS_LDTRSH
Definition: arm64.h:846
@ ARM64_INS_BLR
Definition: arm64.h:695
@ ARM64_INS_SYSL
Definition: arm64.h:1020
@ ARM64_INS_UZP1
Definition: arm64.h:1088
@ ARM64_INS_STRB
Definition: arm64.h:1002
@ ARM64_INS_SUB
Definition: arm64.h:1017
@ ARM64_INS_UQSHRN
Definition: arm64.h:1067
@ ARM64_INS_DCPS2
Definition: arm64.h:729
@ ARM64_INS_FCVTNU
Definition: arm64.h:764
@ ARM64_INS_TST
Definition: arm64.h:1114
@ ARM64_INS_FMUL
Definition: arm64.h:791
@ ARM64_INS_FCVTAU
Definition: arm64.h:757
@ ARM64_INS_FSUB
Definition: arm64.h:810
@ ARM64_INS_LDXR
Definition: arm64.h:858
@ ARM64_INS_SHA1SU0
Definition: arm64.h:917
@ ARM64_INS_FCCMPE
Definition: arm64.h:747
@ ARM64_INS_STLXP
Definition: arm64.h:996
@ ARM64_INS_SADDL
Definition: arm64.h:906
@ ARM64_INS_FCMPE
Definition: arm64.h:754
@ ARM64_INS_ASR
Definition: arm64.h:688
@ ARM64_INS_SQRSHRN2
Definition: arm64.h:961
@ ARM64_INS_CRC32CW
Definition: arm64.h:719
@ ARM64_INS_UQADD
Definition: arm64.h:1062
@ ARM64_INS_FMINP
Definition: arm64.h:785
@ ARM64_INS_UQRSHL
Definition: arm64.h:1063
@ ARM64_INS_UBFIZ
Definition: arm64.h:1107
@ ARM64_INS_SHRN
Definition: arm64.h:928
@ ARM64_INS_SQRDMULH
Definition: arm64.h:958
@ ARM64_INS_CRC32CB
Definition: arm64.h:717
@ ARM64_INS_UMAX
Definition: arm64.h:1049
@ ARM64_INS_STP
Definition: arm64.h:1001
@ ARM64_INS_FRECPS
Definition: arm64.h:798
@ ARM64_INS_SQXTUN
Definition: arm64.h:974
@ ARM64_INS_SHA256H2
Definition: arm64.h:919
@ ARM64_INS_UADDLV
Definition: arm64.h:1036
@ ARM64_INS_ADDP
Definition: arm64.h:678
@ ARM64_INS_NEGS
Definition: arm64.h:1132
@ ARM64_INS_URHADD
Definition: arm64.h:1073
@ ARM64_INS_IC
Definition: arm64.h:1127
@ ARM_OP_MEM
= CS_OP_MEM (Memory operand).
Definition: arm.h:165
size_t csh
Definition: capstone.h:71
@ CS_AC_READ
Operand read from memory or register.
Definition: capstone.h:204
@ CS_AC_WRITE
Operand write to memory or register.
Definition: capstone.h:205
#define NULL
Definition: cris-opc.c:27
#define r
Definition: crypto_rc6.c:12
CAPSTONE_EXPORT bool CAPSTONE_API cs_reg_write(csh ud, const cs_insn *insn, unsigned int reg_id)
Definition: cs.c:1244
size_t map(int syms, int left, int len)
Definition: enough.c:237
#define reg(n)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
static static fork const void static count static fd const char static mode const char static pathname const char static path const char static dev const char static group static getpid static getuid void void static data static pause access
Definition: sflib.h:64
#define ARR_SIZE(a)
Definition: ocaml.c:13
int id
Definition: op.c:540
static int
Definition: sfsocketcall.h:114
unsigned short uint16_t
Definition: sftypes.h:30
long int64_t
Definition: sftypes.h:32
unsigned char uint8_t
Definition: sftypes.h:31
#define h(i)
Definition: sha256.c:48
Definition: MCInst.h:88
cs_insn * flat_insn
Definition: MCInst.h:95
cs_struct * csh
Definition: MCInst.h:97
Instruction operand.
Definition: arm64.h:630
Instruction structure.
Definition: arm64.h:658
cs_opt_value detail
Definition: cs_priv.h:68
Definition: utils.h:19
Definition: utils.h:36
const char * name
Definition: utils.h:38
Definition: z80asm.h:102
int name2id(const name_map *map, int max, const char *name)
Definition: utils.c:42
bool arr_exist(uint16_t *arr, unsigned char max, unsigned int id)
Definition: utils.c:128
unsigned int count_positive(const uint16_t *list)
Definition: utils.c:72
unsigned int count_positive8(const unsigned char *list)
Definition: utils.c:83
unsigned short insn_find(const insn_map *insns, unsigned int max, unsigned int id, unsigned short **cache)
Definition: utils.c:31
const char * id2name(const name_map *map, int max, const unsigned int id)
Definition: utils.c:56
static struct insnlist * insns[64]
Definition: tricore-dis.c:69
Definition: dis.c:32
static int sp
Definition: z80asm.c:91