Rizin
unix-like reverse engineering framework and cli tools
aarch64-opc.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2012-2018 Free Software Foundation, Inc.
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 
4 /* aarch64-opc.h -- Header file for aarch64-opc.c and aarch64-opc-2.c.
5  Copyright (C) 2012-2018 Free Software Foundation, Inc.
6  Contributed by ARM Ltd.
7 
8  This file is part of the GNU opcodes library.
9 
10  This library is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 3, or (at your option)
13  any later version.
14 
15  It is distributed in the hope that it will be useful, but WITHOUT
16  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
18  License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with this program; see the file COPYING3. If not,
22  see <http://www.gnu.org/licenses/>. */
23 
24 #ifndef OPCODES_AARCH64_OPC_H
25 #define OPCODES_AARCH64_OPC_H
26 
27 #include <string.h>
28 #include <assert.h>
29 #include "aarch64.h"
30 
31 /* Instruction fields.
32  Keep synced with fields. */
34 {
153 };
154 
155 /* Field description. */
157 {
158  int lsb;
159  int width;
160 };
161 
162 typedef struct aarch64_field aarch64_field;
163 
164 extern const aarch64_field fields[];
165 ␌
166 /* Operand description. */
167 
169 {
171 
172  /* Name of the operand code; used mainly for the purpose of internal
173  debugging. */
174  const char *name;
175 
176  unsigned int flags;
177 
178  /* The associated instruction bit-fields; no operand has more than 4
179  bit-fields */
180  enum aarch64_field_kind fields[4];
181 
182  /* Brief description */
183  const char *desc;
184 };
185 
186 typedef struct aarch64_operand aarch64_operand;
187 
188 extern const aarch64_operand aarch64_operands[];
189 
190 /* Operand flags. */
191 
192 #define OPD_F_HAS_INSERTER 0x00000001
193 #define OPD_F_HAS_EXTRACTOR 0x00000002
194 #define OPD_F_SIGN_EXT_T 0x00000004 /* Require sign-extension. */
195 #define OPD_F_SHIFT_BY_2 0x00000008 /* Need to left shift the field
196  value by 2 to get the value
197  of an immediate operand. */
198 #define OPD_F_MAYBE_SP 0x00000010 /* May potentially be SP. */
199 #define OPD_F_OD_MASK 0x000000e0 /* Operand-dependent data. */
200 #define OPD_F_OD_LSB 5
201 #define OPD_F_NO_ZR 0x00000100 /* ZR index not allowed. */
202 
203 /* Register flags. */
204 
205 #undef F_DEPRECATED
206 #define F_DEPRECATED (1 << 0) /* Deprecated system register. */
207 
208 #undef F_ARCHEXT
209 #define F_ARCHEXT (1 << 1) /* Architecture dependent system register. */
210 
211 #undef F_HASXT
212 #define F_HASXT (1 << 2) /* System instruction register <Xt>
213  operand. */
214 
215 #undef F_REG_READ
216 #define F_REG_READ (1 << 3) /* Register can only be used to read values
217  out of. */
218 
219 #undef F_REG_WRITE
220 #define F_REG_WRITE (1 << 4) /* Register can only be written to but not
221  read from. */
222 
223 static inline bfd_boolean
225 {
226  return (operand->flags & OPD_F_HAS_INSERTER) ? TRUE : FALSE;
227 }
228 
229 static inline bfd_boolean
231 {
232  return (operand->flags & OPD_F_HAS_EXTRACTOR) ? TRUE : FALSE;
233 }
234 
235 static inline bfd_boolean
237 {
238  return (operand->flags & OPD_F_SIGN_EXT_T) ? TRUE : FALSE;
239 }
240 
241 static inline bfd_boolean
243 {
244  return (operand->flags & OPD_F_SHIFT_BY_2) ? TRUE : FALSE;
245 }
246 
247 static inline bfd_boolean
249 {
250  return (operand->flags & OPD_F_MAYBE_SP) ? TRUE : FALSE;
251 }
252 
253 /* Return the value of the operand-specific data field (OPD_F_OD_MASK). */
254 static inline unsigned int
256 {
257  return (operand->flags & OPD_F_OD_MASK) >> OPD_F_OD_LSB;
258 }
259 
260 /* Return the width of field number N of operand *OPERAND. */
261 static inline unsigned
263 {
264  assert (operand->fields[n] != FLD_NIL);
265  return fields[operand->fields[n]].width;
266 }
267 
268 /* Return the total width of the operand *OPERAND. */
269 static inline unsigned
271 {
272  int i = 0;
273  unsigned width = 0;
274  while (operand->fields[i] != FLD_NIL)
275  width += fields[operand->fields[i++]].width;
276  assert (width > 0 && width < 32);
277  return width;
278 }
279 
280 static inline const aarch64_operand *
282 {
283  return aarch64_operands + code;
284 }
285 ␌
286 /* Operand qualifier and operand constraint checking. */
287 
290 
291 /* Operand qualifier related functions. */
297  int, aarch64_opnd_qualifier_t *);
298 
299 static inline void
301 {
302  assert (idx >=0 && idx < aarch64_num_of_operands (inst->opcode));
304 }
305 ␌
306 /* Inline functions operating on instruction bit-field(s). */
307 
308 /* Generate a mask that has WIDTH number of consecutive 1s. */
309 
310 static inline aarch64_insn
311 gen_mask (int width)
312 {
313  return ((aarch64_insn) 1 << width) - 1;
314 }
315 
316 /* LSB_REL is the relative location of the lsb in the sub field, starting from 0. */
317 static inline int
318 gen_sub_field (enum aarch64_field_kind kind, int lsb_rel, int width, aarch64_field *ret)
319 {
320  const aarch64_field *field = &fields[kind];
321  if (lsb_rel < 0 || width <= 0 || lsb_rel + width > field->width)
322  return 0;
323  ret->lsb = field->lsb + lsb_rel;
324  ret->width = width;
325  return 1;
326 }
327 
328 /* Insert VALUE into FIELD of CODE. MASK can be zero or the base mask
329  of the opcode. */
330 
331 static inline void
334 {
335  assert (field->width < 32 && field->width >= 1 && field->lsb >= 0
336  && field->lsb + field->width <= 32);
337  value &= gen_mask (field->width);
338  value <<= field->lsb;
339  /* In some opcodes, field can be part of the base opcode, e.g. the size
340  field in FADD. The following helps avoid corrupt the base opcode. */
341  value &= ~mask;
342  *code |= value;
343 }
344 
345 /* Extract FIELD of CODE and return the value. MASK can be zero or the base
346  mask of the opcode. */
347 
348 static inline aarch64_insn
351 {
353  /* Clear any bit that is a part of the base opcode. */
354  code &= ~mask;
355  value = (code >> field->lsb) & gen_mask (field->width);
356  return value;
357 }
358 
359 /* Insert VALUE into field KIND of CODE. MASK can be zero or the base mask
360  of the opcode. */
361 
362 static inline void
365 {
366  insert_field_2 (&fields[kind], code, value, mask);
367 }
368 
369 /* Extract field KIND of CODE and return the value. MASK can be zero or the
370  base mask of the opcode. */
371 
372 static inline aarch64_insn
375 {
376  return extract_field_2 (&fields[kind], code, mask);
377 }
378 
379 extern aarch64_insn
381 ␌
382 /* Inline functions selecting operand to do the encoding/decoding for a
383  certain instruction bit-field. */
384 
385 /* Select the operand to do the encoding/decoding of the 'sf' field.
386  The heuristic-based rule is that the result operand is respected more. */
387 
388 static inline int
390 {
391  int idx = -1;
392  if (aarch64_get_operand_class (opcode->operands[0])
394  /* normal case. */
395  idx = 0;
396  else if (aarch64_get_operand_class (opcode->operands[1])
398  /* e.g. float2fix. */
399  idx = 1;
400  else
401  { assert (0); abort (); }
402  return idx;
403 }
404 
405 /* Select the operand to do the encoding/decoding of the 'type' field in
406  the floating-point instructions.
407  The heuristic-based rule is that the source operand is respected more. */
408 
409 static inline int
411 {
412  int idx;
413  if (aarch64_get_operand_class (opcode->operands[1])
415  /* normal case. */
416  idx = 1;
417  else if (aarch64_get_operand_class (opcode->operands[0])
419  /* e.g. float2fix. */
420  idx = 0;
421  else
422  { assert (0); abort (); }
423  return idx;
424 }
425 
426 /* Select the operand to do the encoding/decoding of the 'size' field in
427  the AdvSIMD scalar instructions.
428  The heuristic-based rule is that the destination operand is respected
429  more. */
430 
431 static inline int
433 {
434  int src_size = 0, dst_size = 0;
435  if (aarch64_get_operand_class (opcode->operands[0])
437  dst_size = aarch64_get_qualifier_esize (opcode->qualifiers_list[0][0]);
438  if (aarch64_get_operand_class (opcode->operands[1])
440  src_size = aarch64_get_qualifier_esize (opcode->qualifiers_list[0][1]);
441  if (src_size == dst_size && src_size == 0)
442  { assert (0); abort (); }
443  /* When the result is not a sisd register or it is a long operantion. */
444  if (dst_size == 0 || dst_size == src_size << 1)
445  return 1;
446  else
447  return 0;
448 }
449 
450 /* Select the operand to do the encoding/decoding of the 'size:Q' fields in
451  the AdvSIMD instructions. */
452 
454 ␌
455 /* Miscellaneous. */
456 
460 
461 
462 bfd_boolean aarch64_wide_constant_p (int64_t, int, unsigned int *);
465 
466 /* Copy the content of INST->OPERANDS[SRC] to INST->OPERANDS[DST]. */
467 static inline void
468 copy_operand_info (aarch64_inst *inst, int dst, int src)
469 {
470  assert (dst >= 0 && src >= 0 && dst < AARCH64_MAX_OPND_NUM
472  memcpy (&inst->operands[dst], &inst->operands[src],
473  sizeof (aarch64_opnd_info));
474  inst->operands[dst].idx = dst;
475 }
476 
477 /* A primitive log caculator. */
478 
479 static inline unsigned int
480 get_logsz (unsigned int size)
481 {
482  const unsigned char ls[16] =
483  {0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 4};
484  if (size > 16)
485  {
486  assert (0);
487  return -1;
488  }
489  assert (ls[size - 1] != (unsigned char)-1);
490  return ls[size - 1];
491 }
492 
493 #endif /* OPCODES_AARCH64_OPC_H */
unsigned char aarch64_get_qualifier_esize(aarch64_opnd_qualifier_t qualifier)
Definition: aarch64-opc.c:766
enum aarch64_operand_class aarch64_get_operand_class(enum aarch64_opnd type)
Definition: aarch64-opc.c:328
int aarch64_num_of_operands(const aarch64_opcode *opcode)
Definition: aarch64-opc.c:842
static bfd_boolean operand_has_inserter(const aarch64_operand *operand)
Definition: aarch64-opc.h:219
enum aarch64_modifier_kind aarch64_get_operand_modifier_from_value(aarch64_insn, bfd_boolean)
Definition: aarch64-opc.c:420
#define OPD_F_MAYBE_SP
Definition: aarch64-opc.h:196
bfd_boolean aarch64_logical_immediate_p(uint64_t, int, aarch64_insn *)
Definition: aarch64-opc.c:1207
const char * aarch64_get_qualifier_name(aarch64_opnd_qualifier_t)
Definition: aarch64-opc.c:758
#define OPD_F_OD_MASK
Definition: aarch64-opc.h:197
static unsigned get_operand_field_width(const aarch64_operand *operand, unsigned n)
Definition: aarch64-opc.h:257
static bfd_boolean operand_maybe_stack_pointer(const aarch64_operand *operand)
Definition: aarch64-opc.h:243
static int select_operand_for_fptype_field_coding(const aarch64_opcode *opcode)
Definition: aarch64-opc.h:405
static bfd_boolean operand_has_extractor(const aarch64_operand *operand)
Definition: aarch64-opc.h:225
const aarch64_field fields[]
Definition: aarch64-opc.c:205
static unsigned int get_logsz(unsigned int size)
Definition: aarch64-opc.h:475
int aarch64_select_operand_for_sizeq_field_coding(const aarch64_opcode *)
Definition: aarch64-opc.c:199
static void insert_field_2(const aarch64_field *field, aarch64_insn *code, aarch64_insn value, aarch64_insn mask)
Definition: aarch64-opc.h:327
int aarch64_match_operands_constraint(aarch64_inst *, aarch64_operand_error *)
Definition: aarch64-opc.c:2632
static void copy_operand_info(aarch64_inst *inst, int dst, int src)
Definition: aarch64-opc.h:463
static aarch64_insn extract_field_2(const aarch64_field *field, aarch64_insn code, aarch64_insn mask)
Definition: aarch64-opc.h:344
static unsigned int get_operand_specific_data(const aarch64_operand *operand)
Definition: aarch64-opc.h:250
static int gen_sub_field(enum aarch64_field_kind kind, int lsb_rel, int width, aarch64_field *ret)
Definition: aarch64-opc.h:313
aarch64_field_kind
Definition: aarch64-opc.h:34
@ FLD_option
Definition: aarch64-opc.h:65
@ FLD_imm14
Definition: aarch64-opc.h:82
@ FLD_imm26
Definition: aarch64-opc.h:84
@ FLD_ldst_size
Definition: aarch64-opc.h:72
@ FLD_size
Definition: aarch64-opc.h:43
@ FLD_SVE_M_4
Definition: aarch64-opc.h:101
@ FLD_Rd
Definition: aarch64-opc.h:48
@ FLD_SVE_Rn
Definition: aarch64-opc.h:114
@ FLD_SVE_i3h
Definition: aarch64-opc.h:126
@ FLD_M
Definition: aarch64-opc.h:97
@ FLD_SVE_imm5b
Definition: aarch64-opc.h:130
@ FLD_immr
Definition: aarch64-opc.h:86
@ FLD_immlo
Definition: aarch64-opc.h:42
@ FLD_SVE_prfop
Definition: aarch64-opc.h:139
@ FLD_SVE_M_16
Definition: aarch64-opc.h:103
@ FLD_cond
Definition: aarch64-opc.h:58
@ FLD_SVE_Zt
Definition: aarch64-opc.h:124
@ FLD_imm8
Definition: aarch64-opc.h:79
@ FLD_Rn
Definition: aarch64-opc.h:49
@ FLD_hw
Definition: aarch64-opc.h:67
@ FLD_imms
Definition: aarch64-opc.h:85
@ FLD_SVE_Vd
Definition: aarch64-opc.h:115
@ FLD_NIL
Definition: aarch64-opc.h:35
@ FLD_index
Definition: aarch64-opc.h:91
@ FLD_imm6
Definition: aarch64-opc.h:73
@ FLD_index2
Definition: aarch64-opc.h:92
@ FLD_Rt2
Definition: aarch64-opc.h:50
@ FLD_imm3
Definition: aarch64-opc.h:57
@ FLD_type
Definition: aarch64-opc.h:71
@ FLD_SVE_imm3
Definition: aarch64-opc.h:127
@ FLD_N
Definition: aarch64-opc.h:90
@ FLD_S_imm10
Definition: aarch64-opc.h:89
@ FLD_SVE_Vm
Definition: aarch64-opc.h:116
@ FLD_imm4
Definition: aarch64-opc.h:75
@ FLD_scale
Definition: aarch64-opc.h:100
@ FLD_SVE_Rm
Definition: aarch64-opc.h:113
@ FLD_SVE_Zm_5
Definition: aarch64-opc.h:121
@ FLD_lse_sz
Definition: aarch64-opc.h:94
@ FLD_opc
Definition: aarch64-opc.h:68
@ FLD_SVE_imm9
Definition: aarch64-opc.h:134
@ FLD_Rt
Definition: aarch64-opc.h:47
@ FLD_cmode
Definition: aarch64-opc.h:60
@ FLD_imm4_2
Definition: aarch64-opc.h:76
@ FLD_Ra
Definition: aarch64-opc.h:51
@ FLD_b5
Definition: aarch64-opc.h:98
@ FLD_op0
Definition: aarch64-opc.h:56
@ FLD_SVE_Pg3
Definition: aarch64-opc.h:106
@ FLD_CRm
Definition: aarch64-opc.h:53
@ FLD_opc1
Definition: aarch64-opc.h:69
@ FLD_imm9
Definition: aarch64-opc.h:80
@ FLD_immh
Definition: aarch64-opc.h:88
@ FLD_nzcv
Definition: aarch64-opc.h:37
@ FLD_SVE_Zn
Definition: aarch64-opc.h:123
@ FLD_vldst_size
Definition: aarch64-opc.h:44
@ FLD_imm5
Definition: aarch64-opc.h:77
@ FLD_rotate3
Definition: aarch64-opc.h:151
@ FLD_SVE_Za_5
Definition: aarch64-opc.h:118
@ FLD_immb
Definition: aarch64-opc.h:87
@ FLD_SVE_Pg4_5
Definition: aarch64-opc.h:107
@ FLD_SVE_msz
Definition: aarch64-opc.h:137
@ FLD_SVE_rot1
Definition: aarch64-opc.h:140
@ FLD_b40
Definition: aarch64-opc.h:99
@ FLD_abc
Definition: aarch64-opc.h:39
@ FLD_imm6_2
Definition: aarch64-opc.h:74
@ FLD_op1
Definition: aarch64-opc.h:55
@ FLD_SVE_N
Definition: aarch64-opc.h:104
@ FLD_shift
Definition: aarch64-opc.h:70
@ FLD_defgh
Definition: aarch64-opc.h:38
@ FLD_imm7
Definition: aarch64-opc.h:78
@ FLD_SVE_tszl_19
Definition: aarch64-opc.h:146
@ FLD_SVE_Za_16
Definition: aarch64-opc.h:119
@ FLD_len
Definition: aarch64-opc.h:62
@ FLD_SVE_Pm
Definition: aarch64-opc.h:110
@ FLD_SVE_Zm_16
Definition: aarch64-opc.h:122
@ FLD_SVE_Pg4_16
Definition: aarch64-opc.h:109
@ FLD_SVE_tszl_8
Definition: aarch64-opc.h:145
@ FLD_imm19
Definition: aarch64-opc.h:40
@ FLD_SVE_tszh
Definition: aarch64-opc.h:144
@ FLD_SVE_Pg4_10
Definition: aarch64-opc.h:108
@ FLD_SVE_pattern
Definition: aarch64-opc.h:138
@ FLD_SVE_xs_14
Definition: aarch64-opc.h:147
@ FLD_SVE_sz
Definition: aarch64-opc.h:142
@ FLD_imm12
Definition: aarch64-opc.h:81
@ FLD_immhi
Definition: aarch64-opc.h:41
@ FLD_imm16
Definition: aarch64-opc.h:83
@ FLD_L
Definition: aarch64-opc.h:96
@ FLD_rotate2
Definition: aarch64-opc.h:150
@ FLD_SVE_immr
Definition: aarch64-opc.h:135
@ FLD_asisdlso_opcode
Definition: aarch64-opc.h:61
@ FLD_SVE_imm5
Definition: aarch64-opc.h:129
@ FLD_SVE_rot2
Definition: aarch64-opc.h:141
@ FLD_op
Definition: aarch64-opc.h:45
@ FLD_SVE_M_14
Definition: aarch64-opc.h:102
@ FLD_SVE_i1
Definition: aarch64-opc.h:125
@ FLD_sf
Definition: aarch64-opc.h:93
@ FLD_op2
Definition: aarch64-opc.h:52
@ FLD_SVE_imm7
Definition: aarch64-opc.h:132
@ FLD_opcode
Definition: aarch64-opc.h:59
@ FLD_CRn
Definition: aarch64-opc.h:54
@ FLD_Q
Definition: aarch64-opc.h:46
@ FLD_SVE_xs_22
Definition: aarch64-opc.h:148
@ FLD_cond2
Definition: aarch64-opc.h:36
@ FLD_SVE_Pd
Definition: aarch64-opc.h:105
@ FLD_Rm
Definition: aarch64-opc.h:63
@ FLD_H
Definition: aarch64-opc.h:95
@ FLD_SVE_imm6
Definition: aarch64-opc.h:131
@ FLD_SVE_imms
Definition: aarch64-opc.h:136
@ FLD_SM3_imm2
Definition: aarch64-opc.h:152
@ FLD_SVE_Pt
Definition: aarch64-opc.h:112
@ FLD_Rs
Definition: aarch64-opc.h:64
@ FLD_S
Definition: aarch64-opc.h:66
@ FLD_SVE_tsz
Definition: aarch64-opc.h:143
@ FLD_SVE_imm4
Definition: aarch64-opc.h:128
@ FLD_SVE_Zd
Definition: aarch64-opc.h:120
@ FLD_SVE_imm8
Definition: aarch64-opc.h:133
@ FLD_SVE_Pn
Definition: aarch64-opc.h:111
@ FLD_rotate1
Definition: aarch64-opc.h:149
@ FLD_SVE_Vn
Definition: aarch64-opc.h:117
static int select_operand_for_scalar_size_field_coding(const aarch64_opcode *opcode)
Definition: aarch64-opc.h:427
static const aarch64_operand * get_operand_from_code(enum aarch64_opnd code)
Definition: aarch64-opc.h:276
aarch64_insn extract_fields(aarch64_insn code, aarch64_insn mask,...)
Definition: aarch64-dis.c:142
#define OPD_F_HAS_INSERTER
Definition: aarch64-opc.h:192
bfd_boolean aarch64_wide_constant_p(int64_t, int, unsigned int *)
Definition: aarch64-opc.c:1033
#define OPD_F_HAS_EXTRACTOR
Definition: aarch64-opc.h:193
static int select_operand_for_sf_field_coding(const aarch64_opcode *opcode)
Definition: aarch64-opc.h:384
#define OPD_F_SHIFT_BY_2
Definition: aarch64-opc.h:195
static aarch64_insn gen_mask(int width)
Definition: aarch64-opc.h:306
aarch64_insn aarch64_get_operand_modifier_value(enum aarch64_modifier_kind)
Definition: aarch64-opc.c:414
static bfd_boolean operand_need_sign_extension(const aarch64_operand *operand)
Definition: aarch64-opc.h:231
static unsigned get_operand_fields_width(const aarch64_operand *operand)
Definition: aarch64-opc.h:265
int aarch64_find_best_match(const aarch64_inst *, const aarch64_opnd_qualifier_seq_t *, int, aarch64_opnd_qualifier_t *)
Definition: aarch64-opc.c:876
#define OPD_F_SIGN_EXT_T
Definition: aarch64-opc.h:194
unsigned char aarch64_get_qualifier_nelem(aarch64_opnd_qualifier_t)
Definition: aarch64-opc.c:773
aarch64_insn aarch64_get_qualifier_standard_value(aarch64_opnd_qualifier_t)
Definition: aarch64-opc.c:780
int aarch64_shrink_expanded_imm8(uint64_t)
Definition: aarch64-opc.c:1255
static void insert_field(enum aarch64_field_kind kind, aarch64_insn *code, aarch64_insn value, aarch64_insn mask)
Definition: aarch64-opc.h:358
const aarch64_operand aarch64_operands[]
Definition: aarch64-opc-2.c:28
static bfd_boolean operand_need_shift_by_two(const aarch64_operand *operand)
Definition: aarch64-opc.h:237
#define OPD_F_OD_LSB
Definition: aarch64-opc.h:198
static void reset_operand_qualifier(aarch64_inst *inst, int idx)
Definition: aarch64-opc.h:295
static aarch64_insn extract_field(enum aarch64_field_kind kind, aarch64_insn code, aarch64_insn mask)
Definition: aarch64-opc.h:368
unsigned char aarch64_opnd_qualifier_t
Definition: aarch64.h:652
aarch64_modifier_kind
Definition: aarch64.h:877
@ AARCH64_OPND_QLF_NIL
Definition: aarch64.h:380
aarch64_operand_class
Definition: aarch64.h:124
@ AARCH64_OPND_CLASS_INT_REG
Definition: aarch64.h:126
@ AARCH64_OPND_CLASS_FP_REG
Definition: aarch64.h:128
@ AARCH64_OPND_CLASS_SISD_REG
Definition: aarch64.h:131
aarch64_opnd_qualifier_t aarch64_opnd_qualifier_seq_t[AARCH64_MAX_OPND_NUM]
Definition: aarch64.h:655
#define AARCH64_MAX_OPND_NUM
Definition: aarch64.h:648
aarch64_opnd
Definition: aarch64.h:145
uint32_t aarch64_insn
Definition: aarch64.h:40
#define mask()
lzma_index ** i
Definition: index.h:629
lzma_index * src
Definition: index.h:567
operand
Definition: arc-opc.c:39
static int value
Definition: cmd_api.c:93
voidpf void uLong size
Definition: ioapi.h:138
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
char * dst
Definition: lz4.h:724
assert(limit<=UINT32_MAX/2)
int n
Definition: mipsasm.c:19
int bfd_boolean
Definition: mybfd.h:98
#define TRUE
Definition: mybfd.h:103
#define FALSE
Definition: mybfd.h:102
int idx
Definition: setup.py:197
const char * code
Definition: pal.c:98
long int64_t
Definition: sftypes.h:32
unsigned long uint64_t
Definition: sftypes.h:28
aarch64_opnd_info operands[AARCH64_MAX_OPND_NUM]
Definition: aarch64.h:1035
const aarch64_opcode * opcode
Definition: aarch64.h:1029
aarch64_opnd_qualifier_seq_t qualifiers_list[AARCH64_MAX_QLF_SEQ_NUM]
Definition: aarch64.h:703
enum aarch64_opnd operands[AARCH64_MAX_OPND_NUM]
Definition: aarch64.h:697
enum aarch64_field_kind fields[4]
Definition: aarch64-opc.h:180
unsigned int flags
Definition: aarch64-opc.h:176
const char * desc
Definition: aarch64-opc.h:183
const char * name
Definition: aarch64-opc.h:174
enum aarch64_operand_class op_class
Definition: aarch64-opc.h:170
aarch64_opnd_qualifier_t qualifier
Definition: aarch64.h:921
Definition: inftree9.h:24
int width
Definition: main.c:10