XED
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
xed-decoded-inst-api.h
Go to the documentation of this file.
1 /*BEGIN_LEGAL
2 Intel Open Source License
3 
4 Copyright (c) 2002-2014 Intel Corporation. All rights reserved.
5 
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are
8 met:
9 
10 Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer. Redistributions
12 in binary form must reproduce the above copyright notice, this list of
13 conditions and the following disclaimer in the documentation and/or
14 other materials provided with the distribution. Neither the name of
15 the Intel Corporation nor the names of its contributors may be used to
16 endorse or promote products derived from this software without
17 specific prior written permission.
18 
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR
23 ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 END_LEGAL */
33 
34 #if !defined(_XED_DECODED_INST_API_H_)
35 # define _XED_DECODED_INST_API_H_
36 
37 #include "xed-decoded-inst.h"
38 #include "xed-operand-accessors.h"
39 #include "xed-state.h"
41 #include "xed-print-info.h"
42 
46 
48 
53  return XED_STATIC_CAST(xed_bool_t,(p->_inst != 0));
54 }
58 static XED_INLINE const xed_inst_t*
60  return p->_inst;
61 }
62 
63 
68  xed_assert(p->_inst != 0);
69  return xed_inst_category(p->_inst);
70 }
75  xed_assert(p->_inst != 0);
76  return xed_inst_extension(p->_inst);
77 }
82  xed_assert(p->_inst != 0);
83  return xed_inst_isa_set(p->_inst);
84 }
89  xed_assert(p->_inst != 0);
90  return xed_inst_iclass(p->_inst);
91 }
92 
94 
95 XED_DLL_EXPORT xed_uint32_t
100 
106 
109 XED_DLL_EXPORT xed_uint32_t
111 
114 XED_DLL_EXPORT xed_uint32_t
116 
119 XED_DLL_EXPORT xed_uint32_t
121 
124 XED_DLL_EXPORT xed_uint8_t
126 
132 
141 
146 
148 
149 
151 
152 static XED_INLINE const xed_operand_values_t*
156  return p;
157 }
162  return p;
163 }
164 
167 XED_DLL_EXPORT unsigned int
169  unsigned int operand_index);
170 
171 
175 XED_DLL_EXPORT unsigned int
177  unsigned int operand_index);
178 
179 
182 static XED_INLINE unsigned int
184  unsigned int noperands = xed_inst_noperands(xed_decoded_inst_inst(p));
185  return noperands;
186 }
187 
188 
191 XED_DLL_EXPORT unsigned int
193  unsigned int operand_index);
194 
197 XED_DLL_EXPORT unsigned int
199  unsigned int operand_index);
200 
206  unsigned int operand_index);
207 
208 
210 
212 
213 XED_DLL_EXPORT void
218  const xed_state_t* dstate);
219 
224 
225 
229 
234 static XED_INLINE void
237  xed_address_width_enum_t stack_addr_width)
238 {
239  xed_state_t dstate;
240  dstate.mmode = mmode;
241  dstate.stack_addr_width = stack_addr_width;
242  xed_operand_values_set_mode(p, &dstate);
243 }
244 
245 
246 
251 XED_DLL_EXPORT void
254  const xed_operand_values_t* operands);
255 
257 
258 static XED_INLINE xed_uint_t
262  return p->_decoded_length;
263 }
264 
266 
267 
269 
270 static XED_INLINE xed_uint8_t
274 {
276  xed_uint8_t out = p->_byte_array._dec[byte_index];
277  return out;
278 }
279 
281 
283 
284 static XED_INLINE xed_uint_t
289  xed_uint8_t mode = xed3_operand_get_mode(p);
290  if (mode == 2) return 64;
291  if (mode == 1) return 32;
292  return 16;
293 }
297 static XED_INLINE xed_uint_t
299  xed_uint8_t smode = xed3_operand_get_smode(p);
300  if (smode == 2) return 64;
301  if (smode == 1) return 32;
302  return 16;
303 }
304 
310 XED_DLL_EXPORT xed_uint32_t
312 
318  return xed3_operand_get_chip(p);
319 }
320 
323 static XED_INLINE void
325  xed_chip_enum_t chip) {
326  xed3_operand_set_chip(p,chip);
327 }
328 
329 
335  xed_chip_enum_t chip);
336 
338 
339 
340 
341 
343 
344 
349  xed_assert(p->_inst != 0);
350  return xed_inst_iform_enum(p->_inst);
351 }
352 
358 static XED_INLINE unsigned int
360  xed_assert(p->_inst != 0);
361  return xed_inst_iform_enum(p->_inst) -
363 }
365 
366 
367 
368 
370 
371 XED_DLL_EXPORT void
375 xed_decoded_inst_dump(const xed_decoded_inst_t* p, char* buf, int buflen);
376 
377 
378 
389  char* buf,
390  int buflen,
391  xed_uint64_t runtime_address) ;
392 
393 
408  const xed_decoded_inst_t* xedd,
409  char* out_buffer,
410  int buffer_len,
411  xed_uint64_t runtime_instruction_address,
412  void* context,
413  xed_disassembly_callback_fn_t symbolic_callback);
414 
415 
425 
427 
429 
433  unsigned int mem_idx);
437  unsigned int mem_idx);
440  unsigned int mem_idx);
444  unsigned int mem_idx);
446 XED_DLL_EXPORT xed_int64_t
448  unsigned int mem_idx);
453  unsigned int mem_idx);
458  unsigned int mem_idx);
460 XED_DLL_EXPORT xed_int32_t
470  const xed_decoded_inst_t* p);
472 XED_DLL_EXPORT xed_uint64_t
487 XED_DLL_EXPORT xed_int32_t
491 static XED_INLINE xed_uint8_t
493  return xed3_operand_get_uimm1(p);
494 }
495 
501  xed_operand_enum_t reg_operand);
502 
503 
509 
518 
524 xed_decoded_inst_mem_read(const xed_decoded_inst_t* p, unsigned int mem_idx);
527 xed_decoded_inst_mem_written(const xed_decoded_inst_t* p, unsigned int mem_idx);
531  unsigned int mem_idx);
536 XED_DLL_EXPORT unsigned int
538  unsigned int memop_idx);
539 
543 // 67 prefixes if present.
544 
546 XED_DLL_EXPORT unsigned int
548  xed_uint_t memop_idx);
549 
550 
551 
557 
558 
560 
561 // Modifying decoded instructions before re-encoding
563 XED_DLL_EXPORT void
567 XED_DLL_EXPORT void
569  xed_int64_t disp,
570  xed_uint_t length_bytes);
573 XED_DLL_EXPORT void
575  xed_int32_t disp,
576  xed_uint_t length_bytes);
579 XED_DLL_EXPORT void
581  xed_int32_t x,
582  xed_uint_t length_bytes);
585 XED_DLL_EXPORT void
587  xed_uint64_t x,
588  xed_uint_t length_bytes);
589 
590 
593 XED_DLL_EXPORT void
595  xed_int64_t disp,
596  xed_uint_t length_bits);
599 XED_DLL_EXPORT void
601  xed_int32_t disp,
602  xed_uint_t length_bits);
605 XED_DLL_EXPORT void
607  xed_int32_t x,
608  xed_uint_t length_bits);
611 XED_DLL_EXPORT void
613  xed_uint64_t x,
614  xed_uint_t length_bits);
615 
617 
619 
620 static XED_INLINE xed_uint64_t
624  return p->u.user_data;
625 }
628 static XED_INLINE void
630  xed_uint64_t new_value) {
631  p->u.user_data = new_value;
632 }
633 
634 
635 
636 
638 #endif
639 
const xed_inst_t * _inst
when we decode an instruction, we set the _inst and get the properites of that instruction here...
xed_iform_enum_t
XED_DLL_EXPORT void xed_decoded_inst_dump(const xed_decoded_inst_t *p, char *buf, int buflen)
Print out all the information about the decoded instruction to the buffer buf whose length is maximal...
XED_DLL_EXPORT xed_bool_t xed_format_generic(xed_print_info_t *pi)
Disassemble the instruction information to a buffer.
XED_DLL_EXPORT xed_reg_enum_t xed_decoded_inst_get_base_reg(const xed_decoded_inst_t *p, unsigned int mem_idx)
The main container for instructions.
static XED_INLINE void xed_decoded_inst_set_mode(xed_decoded_inst_t *p, xed_machine_mode_enum_t mmode, xed_address_width_enum_t stack_addr_width)
Set the machine mode and stack addressing width directly.
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_memory_displacement_width_bits(const xed_decoded_inst_t *p, unsigned int mem_idx)
Result in BITS.
static XED_INLINE void xed_decoded_inst_set_user_data(xed_decoded_inst_t *p, xed_uint64_t new_value)
Modify the user data field.
union xed_decoded_inst_s::@1 u
XED_DLL_EXPORT unsigned int xed_decoded_inst_get_memory_operand_length(const xed_decoded_inst_t *p, unsigned int memop_idx)
static XED_INLINE xed_uint8_t xed_decoded_inst_get_byte(const xed_decoded_inst_t *p, xed_uint_t byte_index)
Read itext byte.
XED_DLL_EXPORT void xed_decoded_inst_zero_keep_mode(xed_decoded_inst_t *p)
Zero the decode structure, but preserve the existing machine state/mode information.
xed_iclass_enum_t
XED_DLL_EXPORT xed_reg_enum_t xed_decoded_inst_get_index_reg(const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_mem_written(const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT void xed_decoded_inst_set_memory_displacement(xed_decoded_inst_t *p, xed_int64_t disp, xed_uint_t length_bytes)
Set the memory displacement using a BYTE length.
XED_DLL_EXPORT const xed_simple_flag_t * xed_decoded_inst_get_rflags_info(const xed_decoded_inst_t *p)
See the comment on xed_decoded_inst_uses_rflags().
XED_DLL_EXPORT void xed_decoded_inst_zero_set_mode(xed_decoded_inst_t *p, const xed_state_t *dstate)
Zero the decode structure, but set the machine state/mode information.
static XED_INLINE const xed_operand_values_t * xed_decoded_inst_operands_const(const xed_decoded_inst_t *p)
Obtain a constant pointer to the operands.
static XED_INLINE xed_isa_set_enum_t xed_inst_isa_set(const xed_inst_t *p)
Definition: xed-inst.h:306
A collection of xed_flag_action_t's and unions of read and written flags.
Definition: xed-flags.h:160
XED_DLL_EXPORT xed_reg_enum_t xed_decoded_inst_get_reg(const xed_decoded_inst_t *p, xed_operand_enum_t reg_operand)
Return the specified register operand.
xed_syntax_enum_t
XED_DLL_EXPORT void xed_decoded_inst_set_memory_displacement_bits(xed_decoded_inst_t *p, xed_int64_t disp, xed_uint_t length_bits)
Set the memory displacement a BITS length.
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_branch_displacement_width(const xed_decoded_inst_t *p)
Result in BYTES.
XED_DLL_EXPORT xed_uint32_t xed_decoded_inst_get_attribute(const xed_decoded_inst_t *p, xed_attribute_enum_t attr)
Returns 1 if the attribute is defined for this instruction.
#define XED_STATIC_CAST(x, y)
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_mem_written_only(const xed_decoded_inst_t *p, unsigned int mem_idx)
static XED_INLINE const xed_inst_t * xed_decoded_inst_inst(const xed_decoded_inst_t *p)
Return the xed_inst_t structure for this instruction.
XED_DLL_EXPORT xed_reg_enum_t xed_decoded_inst_get_seg_reg(const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT unsigned int xed_decoded_inst_operand_element_size_bits(const xed_decoded_inst_t *p, unsigned int operand_index)
Return the size of an element in bits (for SSE and AVX operands)
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_number_of_memory_operands(const xed_decoded_inst_t *p)
XED_DLL_EXPORT unsigned int xed_decoded_inst_get_memop_address_width(const xed_decoded_inst_t *p, xed_uint_t memop_idx)
Returns the addressing width in bits (16,32,64) for MEM0 (memop_idx==0) or MEM1 (memop_idx==1).
XED_DLL_EXPORT xed_uint32_t xed_decoded_inst_is_xrelease(const xed_decoded_inst_t *p)
Returns 1 if the instruction is xrelease.
static XED_INLINE xed_extension_enum_t xed_inst_extension(const xed_inst_t *p)
Definition: xed-inst.h:303
xed_uint64_t user_data
static XED_INLINE xed_uint_t xed_decoded_inst_get_stack_address_mode_bits(const xed_decoded_inst_t *p)
Returns 16/32/64 indicating the stack addressing mode with in bits.
xed_address_width_enum_t stack_addr_width
for 16b/32b modes
Definition: xed-state.h:56
XED_DLL_EXPORT xed_int32_t xed_decoded_inst_get_signed_immediate(const xed_decoded_inst_t *p)
XED_DLL_EXPORT unsigned int xed_decoded_inst_operand_length(const xed_decoded_inst_t *p, unsigned int operand_index)
Deprecated – returns the length in bytes of the operand_index'th operand.
static XED_INLINE unsigned int xed_decoded_inst_get_iform_enum_dispatch(const xed_decoded_inst_t *p)
Return the instruction zero-based iform number based on masking the corresponding xed_iform_enum_t...
static XED_INLINE xed_bits_t xed3_operand_get_mode(const xed_decoded_inst_t *d)
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_immediate_is_signed(const xed_decoded_inst_t *p)
Return true if the first immediate (IMM0) is signed.
unsigned int xed_bool_t
Definition: xed-types.h:68
static XED_INLINE xed_bool_t xed_decoded_inst_valid(const xed_decoded_inst_t *p)
Return true if the instruction is valid.
static XED_INLINE xed_uint8_t xed3_operand_get_uimm1(const xed_decoded_inst_t *d)
XED_DLL_EXPORT void xed_decoded_inst_set_immediate_unsigned(xed_decoded_inst_t *p, xed_uint64_t x, xed_uint_t length_bytes)
Set the unsigned immediate a BYTE length.
XED_DLL_EXPORT void xed_decoded_inst_set_branch_displacement(xed_decoded_inst_t *p, xed_int32_t disp, xed_uint_t length_bytes)
Set the branch displacement using a BYTE length.
static XED_INLINE xed_iclass_enum_t xed_inst_iclass(const xed_inst_t *p)
Definition: xed-inst.h:295
XED_DLL_EXPORT void xed_decoded_inst_set_immediate_signed(xed_decoded_inst_t *p, xed_int32_t x, xed_uint_t length_bytes)
Set the signed immediate a BYTE length.
static XED_INLINE xed_iform_enum_t xed_inst_iform_enum(const xed_inst_t *p)
Definition: xed-inst.h:310
static XED_INLINE xed_operand_values_t * xed_decoded_inst_operands(xed_decoded_inst_t *p)
Obtain a non-constant pointer to the operands.
XED_DLL_EXPORT void xed_decoded_inst_zero(xed_decoded_inst_t *p)
Zero the decode structure completely.
xed_address_width_enum_t
XED_DLL_EXPORT xed_uint64_t xed_decoded_inst_get_unsigned_immediate(const xed_decoded_inst_t *p)
static XED_INLINE xed_uint_t xed_decoded_inst_get_length(const xed_decoded_inst_t *p)
Return the length of the decoded instruction in bytes.
xed_operand_enum_t
XED_DLL_EXPORT xed_attributes_t xed_decoded_inst_get_attributes(const xed_decoded_inst_t *p)
Returns the attribute bitvector.
XED_DLL_EXPORT xed_uint32_t xed_decoded_inst_has_mpx_prefix(const xed_decoded_inst_t *p)
Returns 1 if the instruction has mpx prefix.
#define XED_INLINE
static XED_INLINE xed_extension_enum_t xed_decoded_inst_get_extension(const xed_decoded_inst_t *p)
Return the instruction xed_extension_enum_t enumeration.
#define xed_assert(x)
Definition: xed-util.h:123
static XED_INLINE unsigned int xed_inst_noperands(const xed_inst_t *p)
Number of instruction operands.
Definition: xed-inst.h:317
xed_reg_enum_t
Definition: xed-reg-enum.h:39
static XED_INLINE xed_iform_enum_t xed_decoded_inst_get_iform_enum(const xed_decoded_inst_t *p)
Return the instruction iform enum of type xed_iform_enum_t .
XED_DLL_EXPORT xed_bool_t xed_format_context(xed_syntax_enum_t syntax, const xed_decoded_inst_t *xedd, char *out_buffer, int buffer_len, xed_uint64_t runtime_instruction_address, void *context, xed_disassembly_callback_fn_t symbolic_callback)
Disassemble the decoded instruction using the specified syntax.
xed_isa_set_enum_t
static XED_INLINE xed_uint_t xed_decoded_inst_get_machine_mode_bits(const xed_decoded_inst_t *p)
Returns 16/32/64 indicating the machine mode with in bits.
XED_DLL_EXPORT void xed_operand_values_set_mode(xed_operand_values_t *p, const xed_state_t *dstate)
Set the mode values.
const xed_uint8_t * _dec
XED_DLL_EXPORT void xed_decoded_inst_zero_keep_mode_from_operands(xed_decoded_inst_t *p, const xed_operand_values_t *operands)
Zero the decode structure, but copy the existing machine state/mode information from the supplied ope...
static XED_INLINE void xed_decoded_inst_set_input_chip(xed_decoded_inst_t *p, xed_chip_enum_t chip)
Set a user-specified xed_chip_enum_t chip name for restricting decode.
XED_DLL_EXPORT xed_int64_t xed_decoded_inst_get_memory_displacement(const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT void xed_decoded_inst_set_scale(xed_decoded_inst_t *p, xed_uint_t scale)
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_scale(const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_uint8_t xed_decoded_inst_get_modrm(const xed_decoded_inst_t *p)
Returns the modrm byte.
XED_DLL_EXPORT void xed_decoded_inst_set_immediate_unsigned_bits(xed_decoded_inst_t *p, xed_uint64_t x, xed_uint_t length_bits)
Set the unsigned immediate a BITS length.
XED_DLL_EXPORT unsigned int xed_decoded_inst_operand_elements(const xed_decoded_inst_t *p, unsigned int operand_index)
Return the number of element in the operand (for SSE and AVX operands)
XED_DLL_EXPORT xed_operand_element_type_enum_t xed_decoded_inst_operand_element_type(const xed_decoded_inst_t *p, unsigned int operand_index)
Return the type of an element of type xed_operand_element_type_enum_t (for SSE and AVX operands) ...
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_immediate_width_bits(const xed_decoded_inst_t *p)
Return the immediate width in BITS.
constant information about a decoded instruction form, including the pointer to the constant operand ...
Definition: xed-inst.h:257
Encapsulates machine modes for decoder/encoder requests.
Definition: xed-state.h:52
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_nprefixes(xed_decoded_inst_t *p)
Returns the number of legacy prefixes.
static XED_INLINE unsigned int xed_decoded_inst_noperands(const xed_decoded_inst_t *p)
Return the number of operands.
XED_DLL_EXPORT xed_uint32_t xed_iform_first_per_iclass(xed_iclass_enum_t iclass)
Return the first of the iforms for a particular iclass.
static XED_INLINE xed_isa_set_enum_t xed_decoded_inst_get_isa_set(xed_decoded_inst_t const *const p)
Return the instruction xed_isa_set_enum_t enumeration.
xed_attribute_enum_t
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_branch_displacement_width_bits(const xed_decoded_inst_t *p)
Result in BITS.
static XED_INLINE xed_category_enum_t xed_decoded_inst_get_category(const xed_decoded_inst_t *p)
Return the instruction xed_category_enum_t enumeration.
XED_DLL_EXPORT xed_uint32_t xed_decoded_inst_get_operand_width(const xed_decoded_inst_t *p)
Returns the operand width in bits: 8/16/32/64.
static XED_INLINE xed_uint8_t xed_decoded_inst_get_second_immediate(const xed_decoded_inst_t *p)
Return the second immediate.
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_is_prefetch(const xed_decoded_inst_t *p)
Returns true if the instruction is a prefetch.
xed_chip_enum_t
Definition: xed-chip-enum.h:39
XED_DLL_EXPORT unsigned int xed_decoded_inst_operand_length_bits(const xed_decoded_inst_t *p, unsigned int operand_index)
Return the length in bits of the operand_index'th operand.
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_masked_vector_operation(xed_decoded_inst_t *p)
Returns 1 iff the instruction uses destination-masking.
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_conditionally_writes_registers(const xed_decoded_inst_t *p)
xed_category_enum_t
int(* xed_disassembly_callback_fn_t)(xed_uint64_t address, char *symbol_buffer, xed_uint32_t buffer_length, xed_uint64_t *offset, void *context)
A xed_disassembly_callback_fn_t takes an address, a pointer to a symbol buffer of buffer_length bytes...
Definition: xed-disas.h:58
unsigned int xed_uint_t
Definition: xed-types.h:65
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_uses_rflags(const xed_decoded_inst_t *p)
This returns 1 if the flags are read or written.
XED_DLL_EXPORT void xed_decoded_inst_set_branch_displacement_bits(xed_decoded_inst_t *p, xed_int32_t disp, xed_uint_t length_bits)
Set the branch displacement a BITS length.
static XED_INLINE xed_chip_enum_t xed_decoded_inst_get_input_chip(const xed_decoded_inst_t *p)
Return the user-specified xed_chip_enum_t chip name, or XED_CHIP_INVALID if not set.
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_dump_xed_format(const xed_decoded_inst_t *p, char *buf, int buflen, xed_uint64_t runtime_address)
Print the instruction information in a verbose format.
xed_uint8_t _decoded_length
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_mem_read(const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_bool_t xed_decoded_inst_valid_for_chip(xed_decoded_inst_t const *const p, xed_chip_enum_t chip)
Indicate if this decoded instruction is valid for the specified xed_chip_enum_t chip.
XED_DLL_EXPORT xed_int32_t xed_decoded_inst_get_branch_displacement(const xed_decoded_inst_t *p)
static XED_INLINE void xed3_operand_set_chip(xed_decoded_inst_t *d, xed_chip_enum_t opval)
static XED_INLINE xed_iclass_enum_t xed_decoded_inst_get_iclass(const xed_decoded_inst_t *p)
Return the instruction xed_iclass_enum_t enumeration.
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_vector_length_bits(xed_decoded_inst_t const *const p)
Returns 128, 256 or 512 for operations in the VEX, EVEX (or XOP) encoding space and returns 0 for (mo...
xed_extension_enum_t
XED_DLL_EXPORT void xed_decoded_inst_set_immediate_signed_bits(xed_decoded_inst_t *p, xed_int32_t x, xed_uint_t length_bits)
Set the signed immediate a BITS length.
xed_machine_mode_enum_t
union xed_decoded_inst_s::@0 _byte_array
static XED_INLINE xed_bits_t xed3_operand_get_smode(const xed_decoded_inst_t *d)
xed_machine_mode_enum_t mmode
real architected machine modes
Definition: xed-state.h:54
static XED_INLINE xed_category_enum_t xed_inst_category(const xed_inst_t *p)
Definition: xed-inst.h:299
static XED_INLINE xed_chip_enum_t xed3_operand_get_chip(const xed_decoded_inst_t *d)
#define XED_DLL_EXPORT
This contains the information used by the various disassembly printers.
XED_DLL_EXPORT xed_uint32_t xed_decoded_inst_is_xacquire(const xed_decoded_inst_t *p)
Returns 1 if the instruction is xacquire.
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_memory_displacement_width(const xed_decoded_inst_t *p, unsigned int mem_idx)
Result in BYTES.
static XED_INLINE xed_uint64_t xed_decoded_inst_get_user_data(xed_decoded_inst_t *p)
Return a user data field for arbitrary use by the user after decoding.
XED_DLL_EXPORT xed_uint_t xed_decoded_inst_get_immediate_width(const xed_decoded_inst_t *p)
Return the immediate width in BYTES.