Zydis v4.1.1

Loading...
Searching...
No Matches
SharedData.h
Go to the documentation of this file.
1/***************************************************************************************************
2
3 Zyan Disassembler Library (Zydis)
4
5 Original Author : Florian Bernd
6
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24
25***************************************************************************************************/
26
27#ifndef ZYDIS_INTERNAL_SHAREDDATA_H
28#define ZYDIS_INTERNAL_SHAREDDATA_H
29
30#include <Zycore/Defines.h>
31#include <Zydis/Mnemonic.h>
32#include <Zydis/Register.h>
33#include <Zydis/SharedTypes.h>
34#include <Zydis/DecoderTypes.h>
35
36#ifdef __cplusplus
37 extern "C" {
38#endif
39
40/* ============================================================================================== */
41/* Enums and types */
42/* ============================================================================================== */
43
44// MSVC does not like types other than (un-)signed int for bit-fields
45#ifdef ZYAN_MSVC
46# pragma warning(push)
47# pragma warning(disable:4214)
48#endif
49
50#pragma pack(push, 1)
51
52/* ---------------------------------------------------------------------------------------------- */
53/* Operand definition */
54/* ---------------------------------------------------------------------------------------------- */
55
59 typedef enum ZydisSemanticOperandType_
60{
61 ZYDIS_SEMANTIC_OPTYPE_UNUSED,
62 ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG,
63 ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_MEM,
64 ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_IMM1,
65 ZYDIS_SEMANTIC_OPTYPE_GPR8,
66 ZYDIS_SEMANTIC_OPTYPE_GPR16,
67 ZYDIS_SEMANTIC_OPTYPE_GPR32,
68 ZYDIS_SEMANTIC_OPTYPE_GPR64,
69 ZYDIS_SEMANTIC_OPTYPE_GPR16_32_64,
70 ZYDIS_SEMANTIC_OPTYPE_GPR32_32_64,
71 ZYDIS_SEMANTIC_OPTYPE_GPR16_32_32,
72 ZYDIS_SEMANTIC_OPTYPE_GPR_ASZ,
73 ZYDIS_SEMANTIC_OPTYPE_FPR,
74 ZYDIS_SEMANTIC_OPTYPE_MMX,
75 ZYDIS_SEMANTIC_OPTYPE_XMM,
76 ZYDIS_SEMANTIC_OPTYPE_YMM,
77 ZYDIS_SEMANTIC_OPTYPE_ZMM,
78 ZYDIS_SEMANTIC_OPTYPE_TMM,
79 ZYDIS_SEMANTIC_OPTYPE_BND,
80 ZYDIS_SEMANTIC_OPTYPE_SREG,
81 ZYDIS_SEMANTIC_OPTYPE_CR,
82 ZYDIS_SEMANTIC_OPTYPE_DR,
83 ZYDIS_SEMANTIC_OPTYPE_MASK,
84 ZYDIS_SEMANTIC_OPTYPE_MEM,
85 ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBX,
86 ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBY,
87 ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBZ,
88 ZYDIS_SEMANTIC_OPTYPE_IMM,
89 ZYDIS_SEMANTIC_OPTYPE_REL,
90 ZYDIS_SEMANTIC_OPTYPE_PTR,
91 ZYDIS_SEMANTIC_OPTYPE_AGEN,
92 ZYDIS_SEMANTIC_OPTYPE_MOFFS,
93 ZYDIS_SEMANTIC_OPTYPE_MIB,
94
98 ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE = ZYDIS_SEMANTIC_OPTYPE_MIB,
102 ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE)
103} ZydisSemanticOperandType;
104
105/* ---------------------------------------------------------------------------------------------- */
106
110 typedef enum ZydisInternalElementType_
111{
112 ZYDIS_IELEMENT_TYPE_INVALID,
113 ZYDIS_IELEMENT_TYPE_VARIABLE,
114 ZYDIS_IELEMENT_TYPE_STRUCT,
115 ZYDIS_IELEMENT_TYPE_INT,
116 ZYDIS_IELEMENT_TYPE_UINT,
117 ZYDIS_IELEMENT_TYPE_INT1,
118 ZYDIS_IELEMENT_TYPE_INT8,
119 ZYDIS_IELEMENT_TYPE_INT8X4,
120 ZYDIS_IELEMENT_TYPE_INT16,
121 ZYDIS_IELEMENT_TYPE_INT16X2,
122 ZYDIS_IELEMENT_TYPE_INT32,
123 ZYDIS_IELEMENT_TYPE_INT64,
124 ZYDIS_IELEMENT_TYPE_UINT8,
125 ZYDIS_IELEMENT_TYPE_UINT8X4,
126 ZYDIS_IELEMENT_TYPE_UINT16,
127 ZYDIS_IELEMENT_TYPE_UINT16X2,
128 ZYDIS_IELEMENT_TYPE_UINT32,
129 ZYDIS_IELEMENT_TYPE_UINT64,
130 ZYDIS_IELEMENT_TYPE_UINT128,
131 ZYDIS_IELEMENT_TYPE_UINT256,
132 ZYDIS_IELEMENT_TYPE_FLOAT16,
133 ZYDIS_IELEMENT_TYPE_FLOAT16X2,
134 ZYDIS_IELEMENT_TYPE_FLOAT32,
135 ZYDIS_IELEMENT_TYPE_FLOAT64,
136 ZYDIS_IELEMENT_TYPE_FLOAT80,
137 ZYDIS_IELEMENT_TYPE_BFLOAT16X2,
138 ZYDIS_IELEMENT_TYPE_BCD80,
139 ZYDIS_IELEMENT_TYPE_CC3,
140 ZYDIS_IELEMENT_TYPE_CC5,
141
145 ZYDIS_IELEMENT_TYPE_MAX_VALUE = ZYDIS_IELEMENT_TYPE_CC5,
149 ZYDIS_IELEMENT_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IELEMENT_TYPE_MAX_VALUE)
150} ZydisInternalElementType;
151
152/* ---------------------------------------------------------------------------------------------- */
153
157 typedef enum ZydisImplicitRegisterType_
158{
159 // TODO: Rename OSZ|ASZ|SSZ_
160 ZYDIS_IMPLREG_TYPE_STATIC,
161 ZYDIS_IMPLREG_TYPE_GPR_OSZ,
162 ZYDIS_IMPLREG_TYPE_GPR_ASZ,
163 ZYDIS_IMPLREG_TYPE_IP_ASZ,
164 ZYDIS_IMPLREG_TYPE_IP_SSZ,
165 ZYDIS_IMPLREG_TYPE_GPR_SSZ,
166 ZYDIS_IMPLREG_TYPE_FLAGS_SSZ,
167
171 ZYDIS_IMPLREG_TYPE_MAX_VALUE = ZYDIS_IMPLREG_TYPE_FLAGS_SSZ,
175 ZYDIS_IMPLREG_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IMPLREG_TYPE_MAX_VALUE)
176} ZydisImplicitRegisterType;
177
178/* ---------------------------------------------------------------------------------------------- */
179
183 typedef enum ZydisImplicitMemBase_
184{
185 // TODO: Rename OSZ|ASZ|SSZ_
186 ZYDIS_IMPLMEM_BASE_AGPR_REG,
187 ZYDIS_IMPLMEM_BASE_AGPR_RM,
188 ZYDIS_IMPLMEM_BASE_AAX,
189 ZYDIS_IMPLMEM_BASE_ADX,
190 ZYDIS_IMPLMEM_BASE_ABX,
191 ZYDIS_IMPLMEM_BASE_ASI,
192 ZYDIS_IMPLMEM_BASE_ADI,
193 ZYDIS_IMPLMEM_BASE_SSP,
194 ZYDIS_IMPLMEM_BASE_SBP,
195
199 ZYDIS_IMPLMEM_BASE_MAX_VALUE = ZYDIS_IMPLMEM_BASE_SBP,
203 ZYDIS_IMPLMEM_BASE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IMPLMEM_BASE_MAX_VALUE)
204} ZydisImplicitMemBase;
205
206/* ---------------------------------------------------------------------------------------------- */
207
208// MSVC does not correctly execute the `pragma pack(1)` compiler-directive, if we use the correct
209// enum types
210 ZYAN_STATIC_ASSERT(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS <= 8);
211 ZYAN_STATIC_ASSERT(ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS <= 8);
212 ZYAN_STATIC_ASSERT(ZYDIS_OPERAND_ACTION_REQUIRED_BITS <= 8);
213 ZYAN_STATIC_ASSERT(ZYDIS_IELEMENT_TYPE_REQUIRED_BITS <= 8);
214 ZYAN_STATIC_ASSERT(ZYDIS_OPERAND_ENCODING_REQUIRED_BITS <= 8);
215 ZYAN_STATIC_ASSERT(ZYDIS_IMPLREG_TYPE_REQUIRED_BITS <= 8);
216 ZYAN_STATIC_ASSERT(ZYDIS_REGISTER_REQUIRED_BITS <= 16);
217 ZYAN_STATIC_ASSERT(ZYDIS_IMPLMEM_BASE_REQUIRED_BITS <= 8);
218
222 typedef struct ZydisOperandDefinition_
223{
224 ZyanU8 type ZYAN_BITFIELD(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS);
225 ZyanU8 visibility ZYAN_BITFIELD(ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS);
226 ZyanU8 actions ZYAN_BITFIELD(ZYDIS_OPERAND_ACTION_REQUIRED_BITS);
227 ZyanU16 size[3];
228 ZyanU8 element_type ZYAN_BITFIELD(ZYDIS_IELEMENT_TYPE_REQUIRED_BITS);
229 union
230 {
231 ZyanU8 encoding ZYAN_BITFIELD(ZYDIS_OPERAND_ENCODING_REQUIRED_BITS);
232 struct
233 {
234 ZyanU8 type ZYAN_BITFIELD(ZYDIS_IMPLREG_TYPE_REQUIRED_BITS);
235 union
236 {
237 ZyanU16 reg ZYAN_BITFIELD(ZYDIS_REGISTER_REQUIRED_BITS);
238 ZyanU8 id ZYAN_BITFIELD(6);
239 } reg;
240 } reg;
241 struct
242 {
243 ZyanU8 seg ZYAN_BITFIELD(3);
244 ZyanU8 base ZYAN_BITFIELD(ZYDIS_IMPLMEM_BASE_REQUIRED_BITS);
245 } mem;
246 } op;
247 ZyanBool is_multisource4 ZYAN_BITFIELD(1);
248 ZyanBool ignore_seg_override ZYAN_BITFIELD(1);
249} ZydisOperandDefinition;
250
251/* ---------------------------------------------------------------------------------------------- */
252/* Instruction definition */
253/* ---------------------------------------------------------------------------------------------- */
254
258 typedef enum ZydisReadWriteAction_
259{
260 ZYDIS_RW_ACTION_NONE,
261 ZYDIS_RW_ACTION_READ,
262 ZYDIS_RW_ACTION_WRITE,
263 ZYDIS_RW_ACTION_READWRITE,
264
268 ZYDIS_RW_ACTION_MAX_VALUE = ZYDIS_RW_ACTION_READWRITE,
272 ZYDIS_RW_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_RW_ACTION_MAX_VALUE)
273} ZydisReadWriteAction;
274
275/* ---------------------------------------------------------------------------------------------- */
276
280 typedef enum ZydisInternalVectorLength_
281{
282 ZYDIS_IVECTOR_LENGTH_DEFAULT,
283 ZYDIS_IVECTOR_LENGTH_FIXED_128,
284 ZYDIS_IVECTOR_LENGTH_FIXED_256,
285 ZYDIS_IVECTOR_LENGTH_FIXED_512,
286
290 ZYDIS_IVECTOR_LENGTH_MAX_VALUE = ZYDIS_IVECTOR_LENGTH_FIXED_512,
294 ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IVECTOR_LENGTH_MAX_VALUE)
295} ZydisInternalVectorLength;
296
297/* ---------------------------------------------------------------------------------------------- */
298
302 typedef enum ZydisInternalElementSize_
303{
304 ZYDIS_IELEMENT_SIZE_INVALID,
305 ZYDIS_IELEMENT_SIZE_8,
306 ZYDIS_IELEMENT_SIZE_16,
307 ZYDIS_IELEMENT_SIZE_32,
308 ZYDIS_IELEMENT_SIZE_64,
309 ZYDIS_IELEMENT_SIZE_128,
310
314 ZYDIS_IELEMENT_SIZE_MAX_VALUE = ZYDIS_IELEMENT_SIZE_128,
318 ZYDIS_IELEMENT_SIZE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IELEMENT_SIZE_MAX_VALUE)
319} ZydisInternalElementSize;
320
321/* ---------------------------------------------------------------------------------------------- */
322
326 typedef enum ZydisEVEXFunctionality_
327{
328 ZYDIS_EVEX_FUNC_INVALID,
332 ZYDIS_EVEX_FUNC_BC,
336 ZYDIS_EVEX_FUNC_RC,
340 ZYDIS_EVEX_FUNC_SAE,
341
345 ZYDIS_EVEX_FUNC_MAX_VALUE = ZYDIS_EVEX_FUNC_SAE,
349 ZYDIS_EVEX_FUNC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_EVEX_FUNC_MAX_VALUE)
350} ZydisEVEXFunctionality;
351
352/* ---------------------------------------------------------------------------------------------- */
353
357 typedef enum ZydisEVEXTupleType_
358{
359 ZYDIS_TUPLETYPE_INVALID,
363 ZYDIS_TUPLETYPE_FV,
367 ZYDIS_TUPLETYPE_HV,
371 ZYDIS_TUPLETYPE_FVM,
375 ZYDIS_TUPLETYPE_T1S,
379 ZYDIS_TUPLETYPE_T1F,
383 ZYDIS_TUPLETYPE_T1_4X,
387 ZYDIS_TUPLETYPE_GSCAT,
391 ZYDIS_TUPLETYPE_T2,
395 ZYDIS_TUPLETYPE_T4,
399 ZYDIS_TUPLETYPE_T8,
403 ZYDIS_TUPLETYPE_HVM,
407 ZYDIS_TUPLETYPE_QVM,
411 ZYDIS_TUPLETYPE_OVM,
415 ZYDIS_TUPLETYPE_M128,
419 ZYDIS_TUPLETYPE_DUP,
423 ZYDIS_TUPLETYPE_QUARTER,
424
428 ZYDIS_TUPLETYPE_MAX_VALUE = ZYDIS_TUPLETYPE_QUARTER,
432 ZYDIS_TUPLETYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_TUPLETYPE_MAX_VALUE)
433} ZydisEVEXTupleType;
434
435/* ---------------------------------------------------------------------------------------------- */
436
440 typedef enum ZydisMVEXFunctionality_
441{
445 ZYDIS_MVEX_FUNC_IGNORED,
449 ZYDIS_MVEX_FUNC_INVALID,
453 ZYDIS_MVEX_FUNC_RC,
457 ZYDIS_MVEX_FUNC_SAE,
461 ZYDIS_MVEX_FUNC_F_32,
465 ZYDIS_MVEX_FUNC_I_32,
469 ZYDIS_MVEX_FUNC_F_64,
473 ZYDIS_MVEX_FUNC_I_64,
477 ZYDIS_MVEX_FUNC_SWIZZLE_32,
481 ZYDIS_MVEX_FUNC_SWIZZLE_64,
485 ZYDIS_MVEX_FUNC_SF_32,
489 ZYDIS_MVEX_FUNC_SF_32_BCST,
493 ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16,
497 ZYDIS_MVEX_FUNC_SF_64,
501 ZYDIS_MVEX_FUNC_SI_32,
505 ZYDIS_MVEX_FUNC_SI_32_BCST,
509 ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16,
513 ZYDIS_MVEX_FUNC_SI_64,
517 ZYDIS_MVEX_FUNC_UF_32,
521 ZYDIS_MVEX_FUNC_UF_64,
525 ZYDIS_MVEX_FUNC_UI_32,
529 ZYDIS_MVEX_FUNC_UI_64,
533 ZYDIS_MVEX_FUNC_DF_32,
537 ZYDIS_MVEX_FUNC_DF_64,
541 ZYDIS_MVEX_FUNC_DI_32,
545 ZYDIS_MVEX_FUNC_DI_64,
546
550 ZYDIS_MVEX_FUNC_MAX_VALUE = ZYDIS_MVEX_FUNC_DI_64,
554 ZYDIS_MVEX_FUNC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MVEX_FUNC_MAX_VALUE)
555} ZydisMVEXFunctionality;
556
557/* ---------------------------------------------------------------------------------------------- */
558
562 typedef enum ZydisVEXStaticBroadcast
563{
564 ZYDIS_VEX_STATIC_BROADCAST_NONE,
565 ZYDIS_VEX_STATIC_BROADCAST_1_TO_2,
566 ZYDIS_VEX_STATIC_BROADCAST_1_TO_4,
567 ZYDIS_VEX_STATIC_BROADCAST_1_TO_8,
568 ZYDIS_VEX_STATIC_BROADCAST_1_TO_16,
569 ZYDIS_VEX_STATIC_BROADCAST_1_TO_32,
570 ZYDIS_VEX_STATIC_BROADCAST_2_TO_4,
571
575 ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE = ZYDIS_VEX_STATIC_BROADCAST_2_TO_4,
579 ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS =
580 ZYAN_BITS_TO_REPRESENT(ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE)
581} ZydisVEXStaticBroadcast;
582
583/* ---------------------------------------------------------------------------------------------- */
584
588 typedef enum ZydisEVEXStaticBroadcast_
589{
590 ZYDIS_EVEX_STATIC_BROADCAST_NONE,
591 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2,
592 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4,
593 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8,
594 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16,
595 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32,
596 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64,
597 ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4,
598 ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8,
599 ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16,
600 ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8,
601 ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16,
602 ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16,
603
607 ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE = ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16,
611 ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS =
612 ZYAN_BITS_TO_REPRESENT(ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE)
613} ZydisEVEXStaticBroadcast;
614
615/* ---------------------------------------------------------------------------------------------- */
616
620 typedef enum ZydisMVEXStaticBroadcast_
621{
622 ZYDIS_MVEX_STATIC_BROADCAST_NONE,
623 ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8,
624 ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16,
625 ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8,
626 ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16,
627
631 ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE = ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16,
635 ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS =
636 ZYAN_BITS_TO_REPRESENT(ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE)
637} ZydisMVEXStaticBroadcast;
638
639/* ---------------------------------------------------------------------------------------------- */
640
644 typedef enum ZydisMaskPolicy_
645{
646 ZYDIS_MASK_POLICY_INVALID,
651 ZYDIS_MASK_POLICY_ALLOWED,
655 ZYDIS_MASK_POLICY_REQUIRED,
659 ZYDIS_MASK_POLICY_FORBIDDEN,
660
664 ZYDIS_MASK_POLICY_MAX_VALUE = ZYDIS_MASK_POLICY_FORBIDDEN,
668 ZYDIS_MASK_POLICY_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MASK_POLICY_MAX_VALUE)
669} ZydisMaskPolicy;
670
671/* ---------------------------------------------------------------------------------------------- */
672
676 typedef enum ZydisMaskOverride_
677{
678 ZYDIS_MASK_OVERRIDE_DEFAULT,
679 ZYDIS_MASK_OVERRIDE_ZEROING,
680 ZYDIS_MASK_OVERRIDE_CONTROL,
681
685 ZYDIS_MASK_OVERRIDE_MAX_VALUE = ZYDIS_MASK_OVERRIDE_CONTROL,
689 ZYDIS_MASK_OVERRIDE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MASK_OVERRIDE_MAX_VALUE)
690} ZydisMaskOverride;
691
692/* ---------------------------------------------------------------------------------------------- */
693
694#define ZYDIS_OPDEF_REQUIRED_BITS \
695 ZYAN_MAX(ZYDIS_REGKIND_REQUIRED_BITS, ZYDIS_MEMOP_TYPE_REQUIRED_BITS + 1) + 1
696
697#define ZYDIS_OPDEF_GET_REG(operand_definition) \
698 ((operand_definition) & ((1 << ZYDIS_REGKIND_REQUIRED_BITS ) - 1))
699
700#define ZYDIS_OPDEF_GET_MEM(operand_definition) \
701 ((operand_definition) & ((1 << ZYDIS_MEMOP_TYPE_REQUIRED_BITS) - 1))
702
703#define ZYDIS_OPDEF_GET_REG_HIGH_BIT(operand_definition) \
704 (((operand_definition) >> ZYDIS_REGKIND_REQUIRED_BITS ) & 0x01)
705
706#define ZYDIS_OPDEF_GET_MEM_HIGH_BIT(operand_definition) \
707 (((operand_definition) >> ZYDIS_MEMOP_TYPE_REQUIRED_BITS) & 0x01)
708
709// MSVC does not correctly execute the `pragma pack(1)` compiler-directive, if we use the correct
710// enum types
711 ZYAN_STATIC_ASSERT(ZYDIS_MNEMONIC_REQUIRED_BITS <= 16);
712 ZYAN_STATIC_ASSERT(ZYDIS_CATEGORY_REQUIRED_BITS <= 8);
713 ZYAN_STATIC_ASSERT(ZYDIS_ISA_SET_REQUIRED_BITS <= 8);
714 ZYAN_STATIC_ASSERT(ZYDIS_ISA_EXT_REQUIRED_BITS <= 8);
715 ZYAN_STATIC_ASSERT(ZYDIS_BRANCH_TYPE_REQUIRED_BITS <= 8);
716 ZYAN_STATIC_ASSERT(ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS <= 8);
717 ZYAN_STATIC_ASSERT(ZYDIS_OPDEF_REQUIRED_BITS <= 8);
718 ZYAN_STATIC_ASSERT(ZYDIS_RW_ACTION_REQUIRED_BITS <= 8);
719
720#ifndef ZYDIS_MINIMAL_MODE
721# define ZYDIS_INSTRUCTION_DEFINITION_BASE \
722 ZyanU16 mnemonic ZYAN_BITFIELD(ZYDIS_MNEMONIC_REQUIRED_BITS); \
723 ZyanU8 operand_count ZYAN_BITFIELD( 4); \
724 ZyanU8 operand_count_visible ZYAN_BITFIELD( 3); \
725 ZyanU16 operand_reference ZYAN_BITFIELD(15); \
726 ZyanU8 operand_size_map ZYAN_BITFIELD( 3); \
727 ZyanU8 address_size_map ZYAN_BITFIELD( 2); \
728 ZyanU8 flags_reference ZYAN_BITFIELD( 7); \
729 ZyanBool requires_protected_mode ZYAN_BITFIELD( 1); \
730 ZyanBool no_compat_mode ZYAN_BITFIELD( 1); \
731 ZyanU8 category ZYAN_BITFIELD(ZYDIS_CATEGORY_REQUIRED_BITS); \
732 ZyanU8 isa_set ZYAN_BITFIELD(ZYDIS_ISA_SET_REQUIRED_BITS); \
733 ZyanU8 isa_ext ZYAN_BITFIELD(ZYDIS_ISA_EXT_REQUIRED_BITS); \
734 ZyanU8 branch_type ZYAN_BITFIELD(ZYDIS_BRANCH_TYPE_REQUIRED_BITS); \
735 ZyanU8 exception_class ZYAN_BITFIELD(ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS); \
736 ZyanU8 op_reg ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS); \
737 ZyanU8 op_rm ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS); \
738 ZyanU8 cpu_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \
739 ZyanU8 fpu_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \
740 ZyanU8 xmm_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \
741 ZyanBool accepts_segment ZYAN_BITFIELD( 1)
742#else
743# define ZYDIS_INSTRUCTION_DEFINITION_BASE \
744 ZyanU16 mnemonic ZYAN_BITFIELD(ZYDIS_MNEMONIC_REQUIRED_BITS); \
745 ZyanU8 operand_size_map ZYAN_BITFIELD( 3); \
746 ZyanU8 address_size_map ZYAN_BITFIELD( 2); \
747 ZyanBool requires_protected_mode ZYAN_BITFIELD( 1); \
748 ZyanBool no_compat_mode ZYAN_BITFIELD( 1); \
749 ZyanU8 op_reg ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS); \
750 ZyanU8 op_rm ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS)
751#endif
752
753#define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR \
754 ZYDIS_INSTRUCTION_DEFINITION_BASE; \
755 ZyanU8 op_ndsndd ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS)
756
757#define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL \
758 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR; \
759 ZyanBool is_gather ZYAN_BITFIELD( 1); \
760 ZyanBool no_source_dest_match ZYAN_BITFIELD( 1); \
761 ZyanBool no_source_source_match ZYAN_BITFIELD( 1) // TODO: Could be moved to VEX
762
766 typedef struct ZydisInstructionDefinition_
767{
768 ZYDIS_INSTRUCTION_DEFINITION_BASE;
769} ZydisInstructionDefinition;
770
774 typedef struct ZydisInstructionDefinitionLEGACY_
775{
776 ZYDIS_INSTRUCTION_DEFINITION_BASE;
777#ifndef ZYDIS_MINIMAL_MODE
778 ZyanBool is_privileged ZYAN_BITFIELD( 1);
779#endif
780 ZyanBool accepts_LOCK ZYAN_BITFIELD( 1);
781#ifndef ZYDIS_MINIMAL_MODE
782 ZyanBool accepts_REP ZYAN_BITFIELD( 1);
783 ZyanBool accepts_REPEREPZ ZYAN_BITFIELD( 1);
784 ZyanBool accepts_REPNEREPNZ ZYAN_BITFIELD( 1);
785 ZyanBool accepts_BOUND ZYAN_BITFIELD( 1);
786 ZyanBool accepts_XACQUIRE ZYAN_BITFIELD( 1);
787 ZyanBool accepts_XRELEASE ZYAN_BITFIELD( 1);
788 ZyanBool accepts_NOTRACK ZYAN_BITFIELD( 1);
789 ZyanBool accepts_hle_without_lock ZYAN_BITFIELD( 1);
790 ZyanBool accepts_branch_hints ZYAN_BITFIELD( 1);
791#endif
792} ZydisInstructionDefinitionLEGACY;
793
797 typedef struct ZydisInstructionDefinition3DNOW_
798{
799 ZYDIS_INSTRUCTION_DEFINITION_BASE;
800} ZydisInstructionDefinition3DNOW;
801
805 typedef struct ZydisInstructionDefinitionXOP_
806{
807 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR;
808} ZydisInstructionDefinitionXOP;
809
810// MSVC does not correctly execute the `pragma pack(1)` compiler-directive, if we use the correct
811// enum types
812 ZYAN_STATIC_ASSERT(ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS <= 8);
813
817 typedef struct ZydisInstructionDefinitionVEX_
818{
819 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL;
820#ifndef ZYDIS_MINIMAL_MODE
821 ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS);
822#endif
823} ZydisInstructionDefinitionVEX;
824
825#ifndef ZYDIS_DISABLE_AVX512
826
827// MSVC does not correctly execute the `pragma pack(1)` compiler-directive, if we use the correct
828// enum types
829 ZYAN_STATIC_ASSERT(ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS <= 8);
830 ZYAN_STATIC_ASSERT(ZYDIS_TUPLETYPE_REQUIRED_BITS <= 8);
831 ZYAN_STATIC_ASSERT(ZYDIS_IELEMENT_SIZE_REQUIRED_BITS <= 8);
832 ZYAN_STATIC_ASSERT(ZYDIS_EVEX_FUNC_REQUIRED_BITS <= 8);
833 ZYAN_STATIC_ASSERT(ZYDIS_MASK_POLICY_REQUIRED_BITS <= 8);
834 ZYAN_STATIC_ASSERT(ZYDIS_MASK_OVERRIDE_REQUIRED_BITS <= 8);
835 ZYAN_STATIC_ASSERT(ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS <= 8);
836
840 typedef struct ZydisInstructionDefinitionEVEX_
841{
842 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL;
843#ifndef ZYDIS_MINIMAL_MODE
844 ZyanU8 vector_length ZYAN_BITFIELD(ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS);
845 ZyanU8 tuple_type ZYAN_BITFIELD(ZYDIS_TUPLETYPE_REQUIRED_BITS);
846 ZyanU8 element_size ZYAN_BITFIELD(ZYDIS_IELEMENT_SIZE_REQUIRED_BITS);
847 ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_EVEX_FUNC_REQUIRED_BITS);
848#endif
849 ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS);
850 ZyanBool accepts_zero_mask ZYAN_BITFIELD( 1);
851#ifndef ZYDIS_MINIMAL_MODE
852 ZyanU8 mask_override ZYAN_BITFIELD(ZYDIS_MASK_OVERRIDE_REQUIRED_BITS);
853 ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS);
854#endif
855} ZydisInstructionDefinitionEVEX;
856#endif
857
858#ifndef ZYDIS_DISABLE_KNC
859
860// MSVC does not correctly execute the `pragma pack(1)` compiler-directive, if we use the correct
861// enum types
862 ZYAN_STATIC_ASSERT(ZYDIS_MVEX_FUNC_REQUIRED_BITS <= 8);
863 ZYAN_STATIC_ASSERT(ZYDIS_MASK_POLICY_REQUIRED_BITS <= 8);
864 ZYAN_STATIC_ASSERT(ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS <= 8);
865
869 typedef struct ZydisInstructionDefinitionMVEX_
870{
871 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL;
872 ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_MVEX_FUNC_REQUIRED_BITS);
873 ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS);
874#ifndef ZYDIS_MINIMAL_MODE
875 ZyanBool has_element_granularity ZYAN_BITFIELD( 1);
876 ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS);
877#endif
878} ZydisInstructionDefinitionMVEX;
879#endif
880
881/* ---------------------------------------------------------------------------------------------- */
882
883#pragma pack(pop)
884
885#ifdef ZYAN_MSVC
886# pragma warning(pop)
887#endif
888
889/* ---------------------------------------------------------------------------------------------- */
890/* Accessed CPU/FPU flags */
891/* ---------------------------------------------------------------------------------------------- */
892
893/*
894 * Contains information about the CPU/FPU flags accessed by an instruction.
895 *
896 * We don't want this struct to be packed! A pointer to the individual members will be used by the
897 * `ZydisDecodedInstruction` struct.
898 */
899 typedef struct ZydisDefinitionAccessedFlags_
900{
901 ZydisAccessedFlags cpu_flags;
902 ZydisAccessedFlags fpu_flags;
903} ZydisDefinitionAccessedFlags;
904
905/* ---------------------------------------------------------------------------------------------- */
906
907/* ============================================================================================== */
908/* Functions */
909/* ============================================================================================== */
910
911/* ---------------------------------------------------------------------------------------------- */
912/* Instruction definition */
913/* ---------------------------------------------------------------------------------------------- */
914
923 ZYDIS_NO_EXPORT void ZydisGetInstructionDefinition(ZydisInstructionEncoding encoding,
924 ZyanU16 id, const ZydisInstructionDefinition** definition);
925
926/* ---------------------------------------------------------------------------------------------- */
927/* Operand definition */
928/* ---------------------------------------------------------------------------------------------- */
929
930#ifndef ZYDIS_MINIMAL_MODE
938 ZYDIS_NO_EXPORT const ZydisOperandDefinition* ZydisGetOperandDefinitions(
939 const ZydisInstructionDefinition* definition);
940#endif
941
942/* ---------------------------------------------------------------------------------------------- */
943/* Element info */
944/* ---------------------------------------------------------------------------------------------- */
945
946#ifndef ZYDIS_MINIMAL_MODE
954 ZYDIS_NO_EXPORT void ZydisGetElementInfo(ZydisInternalElementType element, ZydisElementType* type,
955 ZydisElementSize* size);
956#endif
957
958/* ---------------------------------------------------------------------------------------------- */
959/* Accessed CPU flags */
960/* ---------------------------------------------------------------------------------------------- */
961
962#ifndef ZYDIS_MINIMAL_MODE
972 ZYDIS_NO_EXPORT ZyanBool ZydisGetAccessedFlags(const ZydisInstructionDefinition* definition,
973 const ZydisDefinitionAccessedFlags** flags);
974#endif
975
976/* ---------------------------------------------------------------------------------------------- */
977
978/* ============================================================================================== */
979
980#ifdef __cplusplus
981}
982#endif
983
984#endif /* ZYDIS_INTERNAL_SHAREDDATA_H */
DecoderTypes.h
Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.
ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS
@ ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition DecoderTypes.h:509
ZYDIS_BRANCH_TYPE_REQUIRED_BITS
@ ZYDIS_BRANCH_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition DecoderTypes.h:442
ZydisAccessedFlags
struct ZydisAccessedFlags_ ZydisAccessedFlags
ZYDIS_NO_EXPORT
#define ZYDIS_NO_EXPORT
Symbol is not exported and for internal use only.
Definition Defines.h:74
ZYDIS_ISA_EXT_REQUIRED_BITS
@ ZYDIS_ISA_EXT_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition EnumISAExt.h:117
ZYDIS_ISA_SET_REQUIRED_BITS
@ ZYDIS_ISA_SET_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition EnumISASet.h:212
ZYDIS_CATEGORY_REQUIRED_BITS
@ ZYDIS_CATEGORY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition EnumInstructionCategory.h:129
ZYDIS_MNEMONIC_REQUIRED_BITS
@ ZYDIS_MNEMONIC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition EnumMnemonic.h:1807
ZYDIS_REGISTER_REQUIRED_BITS
@ ZYDIS_REGISTER_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition EnumRegister.h:320
Mnemonic.h
Mnemonic constant definitions and helper functions.
Register.h
Utility functions and constants for registers.
ZydisSemanticOperandType
enum ZydisSemanticOperandType_ ZydisSemanticOperandType
Defines the ZydisSemanticOperandType enum.
ZydisEVEXStaticBroadcast
enum ZydisEVEXStaticBroadcast_ ZydisEVEXStaticBroadcast
Defines the ZydisEVEXStaticBroadcast enum.
ZydisInstructionDefinition
struct ZydisInstructionDefinition_ ZydisInstructionDefinition
Defines the ZydisInstructionDefinition struct.
ZydisEVEXTupleType_
ZydisEVEXTupleType_
Defines the ZydisEVEXTupleType enum.
Definition SharedData.h:358
ZYDIS_TUPLETYPE_M128
@ ZYDIS_TUPLETYPE_M128
Mem128.
Definition SharedData.h:415
ZYDIS_TUPLETYPE_GSCAT
@ ZYDIS_TUPLETYPE_GSCAT
Gather / Scatter.
Definition SharedData.h:387
ZYDIS_TUPLETYPE_T1F
@ ZYDIS_TUPLETYPE_T1F
Tuple1 Fixed.
Definition SharedData.h:379
ZYDIS_TUPLETYPE_T8
@ ZYDIS_TUPLETYPE_T8
Tuple8.
Definition SharedData.h:399
ZYDIS_TUPLETYPE_MAX_VALUE
@ ZYDIS_TUPLETYPE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:428
ZYDIS_TUPLETYPE_QUARTER
@ ZYDIS_TUPLETYPE_QUARTER
Quarter of the vector-length.
Definition SharedData.h:423
ZYDIS_TUPLETYPE_T4
@ ZYDIS_TUPLETYPE_T4
Tuple4.
Definition SharedData.h:395
ZYDIS_TUPLETYPE_T1S
@ ZYDIS_TUPLETYPE_T1S
Tuple1 Scalar.
Definition SharedData.h:375
ZYDIS_TUPLETYPE_FV
@ ZYDIS_TUPLETYPE_FV
Full Vector.
Definition SharedData.h:363
ZYDIS_TUPLETYPE_OVM
@ ZYDIS_TUPLETYPE_OVM
OctMem.
Definition SharedData.h:411
ZYDIS_TUPLETYPE_FVM
@ ZYDIS_TUPLETYPE_FVM
Full Vector Mem.
Definition SharedData.h:371
ZYDIS_TUPLETYPE_QVM
@ ZYDIS_TUPLETYPE_QVM
QuarterMem.
Definition SharedData.h:407
ZYDIS_TUPLETYPE_HV
@ ZYDIS_TUPLETYPE_HV
Half Vector.
Definition SharedData.h:367
ZYDIS_TUPLETYPE_DUP
@ ZYDIS_TUPLETYPE_DUP
MOVDDUP.
Definition SharedData.h:419
ZYDIS_TUPLETYPE_INVALID
@ ZYDIS_TUPLETYPE_INVALID
Definition SharedData.h:359
ZYDIS_TUPLETYPE_HVM
@ ZYDIS_TUPLETYPE_HVM
Half Mem.
Definition SharedData.h:403
ZYDIS_TUPLETYPE_REQUIRED_BITS
@ ZYDIS_TUPLETYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:432
ZYDIS_TUPLETYPE_T1_4X
@ ZYDIS_TUPLETYPE_T1_4X
Tuple1 4x32.
Definition SharedData.h:383
ZYDIS_TUPLETYPE_T2
@ ZYDIS_TUPLETYPE_T2
Tuple2.
Definition SharedData.h:391
ZydisMVEXFunctionality
enum ZydisMVEXFunctionality_ ZydisMVEXFunctionality
Defines the ZydisMVEXFunctionality enum.
ZydisMVEXFunctionality_
ZydisMVEXFunctionality_
Defines the ZydisMVEXFunctionality enum.
Definition SharedData.h:441
ZYDIS_MVEX_FUNC_MAX_VALUE
@ ZYDIS_MVEX_FUNC_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:550
ZYDIS_MVEX_FUNC_F_32
@ ZYDIS_MVEX_FUNC_F_32
No special operation (32bit float elements).
Definition SharedData.h:461
ZYDIS_MVEX_FUNC_SF_64
@ ZYDIS_MVEX_FUNC_SF_64
Sf64(mem).
Definition SharedData.h:497
ZYDIS_MVEX_FUNC_DI_32
@ ZYDIS_MVEX_FUNC_DI_32
Di32.
Definition SharedData.h:541
ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16
@ ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16
Si32(mem) broadcast 4to16 only.
Definition SharedData.h:509
ZYDIS_MVEX_FUNC_SF_32_BCST
@ ZYDIS_MVEX_FUNC_SF_32_BCST
Sf32(mem) broadcast only.
Definition SharedData.h:489
ZYDIS_MVEX_FUNC_DF_64
@ ZYDIS_MVEX_FUNC_DF_64
Df64.
Definition SharedData.h:537
ZYDIS_MVEX_FUNC_F_64
@ ZYDIS_MVEX_FUNC_F_64
No special operation (64bit float elements).
Definition SharedData.h:469
ZYDIS_MVEX_FUNC_SI_32_BCST
@ ZYDIS_MVEX_FUNC_SI_32_BCST
Si32(mem) broadcast only.
Definition SharedData.h:505
ZYDIS_MVEX_FUNC_INVALID
@ ZYDIS_MVEX_FUNC_INVALID
MVEX.SSS must be 000b.
Definition SharedData.h:449
ZYDIS_MVEX_FUNC_I_64
@ ZYDIS_MVEX_FUNC_I_64
No special operation (64bit uint elements).
Definition SharedData.h:473
ZYDIS_MVEX_FUNC_SI_32
@ ZYDIS_MVEX_FUNC_SI_32
Si32(mem).
Definition SharedData.h:501
ZYDIS_MVEX_FUNC_SWIZZLE_64
@ ZYDIS_MVEX_FUNC_SWIZZLE_64
Sf64(reg) or Si64(reg).
Definition SharedData.h:481
ZYDIS_MVEX_FUNC_SI_64
@ ZYDIS_MVEX_FUNC_SI_64
Si64(mem).
Definition SharedData.h:513
ZYDIS_MVEX_FUNC_I_32
@ ZYDIS_MVEX_FUNC_I_32
No special operation (32bit uint elements).
Definition SharedData.h:465
ZYDIS_MVEX_FUNC_SF_32
@ ZYDIS_MVEX_FUNC_SF_32
Sf32(mem).
Definition SharedData.h:485
ZYDIS_MVEX_FUNC_REQUIRED_BITS
@ ZYDIS_MVEX_FUNC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:554
ZYDIS_MVEX_FUNC_SAE
@ ZYDIS_MVEX_FUNC_SAE
MVEX.SSS controls sae functionality.
Definition SharedData.h:457
ZYDIS_MVEX_FUNC_SWIZZLE_32
@ ZYDIS_MVEX_FUNC_SWIZZLE_32
Sf32(reg) or Si32(reg).
Definition SharedData.h:477
ZYDIS_MVEX_FUNC_UI_64
@ ZYDIS_MVEX_FUNC_UI_64
Ui64.
Definition SharedData.h:529
ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16
@ ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16
Sf32(mem) broadcast 4to16 only.
Definition SharedData.h:493
ZYDIS_MVEX_FUNC_DI_64
@ ZYDIS_MVEX_FUNC_DI_64
Di64.
Definition SharedData.h:545
ZYDIS_MVEX_FUNC_DF_32
@ ZYDIS_MVEX_FUNC_DF_32
Df32.
Definition SharedData.h:533
ZYDIS_MVEX_FUNC_UI_32
@ ZYDIS_MVEX_FUNC_UI_32
Ui32.
Definition SharedData.h:525
ZYDIS_MVEX_FUNC_IGNORED
@ ZYDIS_MVEX_FUNC_IGNORED
The MVEX.SSS value is ignored.
Definition SharedData.h:445
ZYDIS_MVEX_FUNC_UF_32
@ ZYDIS_MVEX_FUNC_UF_32
Uf32.
Definition SharedData.h:517
ZYDIS_MVEX_FUNC_UF_64
@ ZYDIS_MVEX_FUNC_UF_64
Uf64.
Definition SharedData.h:521
ZYDIS_MVEX_FUNC_RC
@ ZYDIS_MVEX_FUNC_RC
MVEX.SSS controls embedded-rounding functionality.
Definition SharedData.h:453
ZydisImplicitMemBase
enum ZydisImplicitMemBase_ ZydisImplicitMemBase
Defines the ZydisImplicitMemBase enum.
ZydisEVEXFunctionality_
ZydisEVEXFunctionality_
Defines the ZydisEVEXFunctionality enum.
Definition SharedData.h:327
ZYDIS_EVEX_FUNC_INVALID
@ ZYDIS_EVEX_FUNC_INVALID
Definition SharedData.h:328
ZYDIS_EVEX_FUNC_SAE
@ ZYDIS_EVEX_FUNC_SAE
EVEX.b enables sae functionality.
Definition SharedData.h:340
ZYDIS_EVEX_FUNC_MAX_VALUE
@ ZYDIS_EVEX_FUNC_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:345
ZYDIS_EVEX_FUNC_BC
@ ZYDIS_EVEX_FUNC_BC
EVEX.b enables broadcast functionality.
Definition SharedData.h:332
ZYDIS_EVEX_FUNC_RC
@ ZYDIS_EVEX_FUNC_RC
EVEX.b enables embedded-rounding functionality.
Definition SharedData.h:336
ZYDIS_EVEX_FUNC_REQUIRED_BITS
@ ZYDIS_EVEX_FUNC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:349
ZydisEVEXFunctionality
enum ZydisEVEXFunctionality_ ZydisEVEXFunctionality
Defines the ZydisEVEXFunctionality enum.
ZYDIS_OPDEF_REQUIRED_BITS
#define ZYDIS_OPDEF_REQUIRED_BITS
Definition SharedData.h:694
ZydisGetAccessedFlags
ZYDIS_NO_EXPORT ZyanBool ZydisGetAccessedFlags(const ZydisInstructionDefinition *definition, const ZydisDefinitionAccessedFlags **flags)
Returns the the operand-definitions for the given instruction-definition.
ZydisImplicitRegisterType
enum ZydisImplicitRegisterType_ ZydisImplicitRegisterType
Defines the ZydisImplicitRegisterType enum.
ZydisImplicitRegisterType_
ZydisImplicitRegisterType_
Defines the ZydisImplicitRegisterType enum.
Definition SharedData.h:158
ZYDIS_IMPLREG_TYPE_IP_ASZ
@ ZYDIS_IMPLREG_TYPE_IP_ASZ
Definition SharedData.h:163
ZYDIS_IMPLREG_TYPE_REQUIRED_BITS
@ ZYDIS_IMPLREG_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:175
ZYDIS_IMPLREG_TYPE_GPR_ASZ
@ ZYDIS_IMPLREG_TYPE_GPR_ASZ
Definition SharedData.h:162
ZYDIS_IMPLREG_TYPE_STATIC
@ ZYDIS_IMPLREG_TYPE_STATIC
Definition SharedData.h:160
ZYDIS_IMPLREG_TYPE_GPR_OSZ
@ ZYDIS_IMPLREG_TYPE_GPR_OSZ
Definition SharedData.h:161
ZYDIS_IMPLREG_TYPE_MAX_VALUE
@ ZYDIS_IMPLREG_TYPE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:171
ZYDIS_IMPLREG_TYPE_IP_SSZ
@ ZYDIS_IMPLREG_TYPE_IP_SSZ
Definition SharedData.h:164
ZYDIS_IMPLREG_TYPE_FLAGS_SSZ
@ ZYDIS_IMPLREG_TYPE_FLAGS_SSZ
Definition SharedData.h:166
ZYDIS_IMPLREG_TYPE_GPR_SSZ
@ ZYDIS_IMPLREG_TYPE_GPR_SSZ
Definition SharedData.h:165
ZydisInternalElementType_
ZydisInternalElementType_
Defines the ZydisInternalElementType enum.
Definition SharedData.h:111
ZYDIS_IELEMENT_TYPE_FLOAT16X2
@ ZYDIS_IELEMENT_TYPE_FLOAT16X2
Definition SharedData.h:133
ZYDIS_IELEMENT_TYPE_STRUCT
@ ZYDIS_IELEMENT_TYPE_STRUCT
Definition SharedData.h:114
ZYDIS_IELEMENT_TYPE_FLOAT64
@ ZYDIS_IELEMENT_TYPE_FLOAT64
Definition SharedData.h:135
ZYDIS_IELEMENT_TYPE_INT
@ ZYDIS_IELEMENT_TYPE_INT
Definition SharedData.h:115
ZYDIS_IELEMENT_TYPE_FLOAT16
@ ZYDIS_IELEMENT_TYPE_FLOAT16
Definition SharedData.h:132
ZYDIS_IELEMENT_TYPE_UINT32
@ ZYDIS_IELEMENT_TYPE_UINT32
Definition SharedData.h:128
ZYDIS_IELEMENT_TYPE_BFLOAT16X2
@ ZYDIS_IELEMENT_TYPE_BFLOAT16X2
Definition SharedData.h:137
ZYDIS_IELEMENT_TYPE_UINT8
@ ZYDIS_IELEMENT_TYPE_UINT8
Definition SharedData.h:124
ZYDIS_IELEMENT_TYPE_FLOAT80
@ ZYDIS_IELEMENT_TYPE_FLOAT80
Definition SharedData.h:136
ZYDIS_IELEMENT_TYPE_UINT16X2
@ ZYDIS_IELEMENT_TYPE_UINT16X2
Definition SharedData.h:127
ZYDIS_IELEMENT_TYPE_UINT16
@ ZYDIS_IELEMENT_TYPE_UINT16
Definition SharedData.h:126
ZYDIS_IELEMENT_TYPE_VARIABLE
@ ZYDIS_IELEMENT_TYPE_VARIABLE
Definition SharedData.h:113
ZYDIS_IELEMENT_TYPE_UINT64
@ ZYDIS_IELEMENT_TYPE_UINT64
Definition SharedData.h:129
ZYDIS_IELEMENT_TYPE_INT8X4
@ ZYDIS_IELEMENT_TYPE_INT8X4
Definition SharedData.h:119
ZYDIS_IELEMENT_TYPE_REQUIRED_BITS
@ ZYDIS_IELEMENT_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:149
ZYDIS_IELEMENT_TYPE_UINT8X4
@ ZYDIS_IELEMENT_TYPE_UINT8X4
Definition SharedData.h:125
ZYDIS_IELEMENT_TYPE_UINT256
@ ZYDIS_IELEMENT_TYPE_UINT256
Definition SharedData.h:131
ZYDIS_IELEMENT_TYPE_INT16
@ ZYDIS_IELEMENT_TYPE_INT16
Definition SharedData.h:120
ZYDIS_IELEMENT_TYPE_INT16X2
@ ZYDIS_IELEMENT_TYPE_INT16X2
Definition SharedData.h:121
ZYDIS_IELEMENT_TYPE_MAX_VALUE
@ ZYDIS_IELEMENT_TYPE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:145
ZYDIS_IELEMENT_TYPE_INT8
@ ZYDIS_IELEMENT_TYPE_INT8
Definition SharedData.h:118
ZYDIS_IELEMENT_TYPE_BCD80
@ ZYDIS_IELEMENT_TYPE_BCD80
Definition SharedData.h:138
ZYDIS_IELEMENT_TYPE_INT32
@ ZYDIS_IELEMENT_TYPE_INT32
Definition SharedData.h:122
ZYDIS_IELEMENT_TYPE_UINT
@ ZYDIS_IELEMENT_TYPE_UINT
Definition SharedData.h:116
ZYDIS_IELEMENT_TYPE_CC5
@ ZYDIS_IELEMENT_TYPE_CC5
Definition SharedData.h:140
ZYDIS_IELEMENT_TYPE_INT1
@ ZYDIS_IELEMENT_TYPE_INT1
Definition SharedData.h:117
ZYDIS_IELEMENT_TYPE_FLOAT32
@ ZYDIS_IELEMENT_TYPE_FLOAT32
Definition SharedData.h:134
ZYDIS_IELEMENT_TYPE_INT64
@ ZYDIS_IELEMENT_TYPE_INT64
Definition SharedData.h:123
ZYDIS_IELEMENT_TYPE_INVALID
@ ZYDIS_IELEMENT_TYPE_INVALID
Definition SharedData.h:112
ZYDIS_IELEMENT_TYPE_UINT128
@ ZYDIS_IELEMENT_TYPE_UINT128
Definition SharedData.h:130
ZYDIS_IELEMENT_TYPE_CC3
@ ZYDIS_IELEMENT_TYPE_CC3
Definition SharedData.h:139
ZydisMaskOverride
enum ZydisMaskOverride_ ZydisMaskOverride
Defines the ZydisMaskOverride enum.
ZydisInstructionDefinitionVEX
struct ZydisInstructionDefinitionVEX_ ZydisInstructionDefinitionVEX
Defines the ZydisInstructionDefinitionVEX struct.
ZydisReadWriteAction
enum ZydisReadWriteAction_ ZydisReadWriteAction
Defines the ZydisReadWriteAction enum.
ZydisInternalElementSize_
ZydisInternalElementSize_
Defines the ZydisInternalElementSize enum.
Definition SharedData.h:303
ZYDIS_IELEMENT_SIZE_INVALID
@ ZYDIS_IELEMENT_SIZE_INVALID
Definition SharedData.h:304
ZYDIS_IELEMENT_SIZE_MAX_VALUE
@ ZYDIS_IELEMENT_SIZE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:314
ZYDIS_IELEMENT_SIZE_128
@ ZYDIS_IELEMENT_SIZE_128
Definition SharedData.h:309
ZYDIS_IELEMENT_SIZE_32
@ ZYDIS_IELEMENT_SIZE_32
Definition SharedData.h:307
ZYDIS_IELEMENT_SIZE_16
@ ZYDIS_IELEMENT_SIZE_16
Definition SharedData.h:306
ZYDIS_IELEMENT_SIZE_64
@ ZYDIS_IELEMENT_SIZE_64
Definition SharedData.h:308
ZYDIS_IELEMENT_SIZE_8
@ ZYDIS_IELEMENT_SIZE_8
Definition SharedData.h:305
ZYDIS_IELEMENT_SIZE_REQUIRED_BITS
@ ZYDIS_IELEMENT_SIZE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:318
ZydisVEXStaticBroadcast
ZydisVEXStaticBroadcast
Defines the ZydisVEXStaticBroadcast enum.
Definition SharedData.h:563
ZYDIS_VEX_STATIC_BROADCAST_1_TO_4
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_4
Definition SharedData.h:566
ZYDIS_VEX_STATIC_BROADCAST_1_TO_8
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_8
Definition SharedData.h:567
ZYDIS_VEX_STATIC_BROADCAST_1_TO_2
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_2
Definition SharedData.h:565
ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS
@ ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:579
ZYDIS_VEX_STATIC_BROADCAST_1_TO_32
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_32
Definition SharedData.h:569
ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE
@ ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:575
ZYDIS_VEX_STATIC_BROADCAST_1_TO_16
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_16
Definition SharedData.h:568
ZYDIS_VEX_STATIC_BROADCAST_2_TO_4
@ ZYDIS_VEX_STATIC_BROADCAST_2_TO_4
Definition SharedData.h:570
ZYDIS_VEX_STATIC_BROADCAST_NONE
@ ZYDIS_VEX_STATIC_BROADCAST_NONE
Definition SharedData.h:564
ZydisDefinitionAccessedFlags
struct ZydisDefinitionAccessedFlags_ ZydisDefinitionAccessedFlags
ZydisInstructionDefinition3DNOW
struct ZydisInstructionDefinition3DNOW_ ZydisInstructionDefinition3DNOW
Defines the ZydisInstructionDefinition3DNOW struct.
ZydisGetInstructionDefinition
ZYDIS_NO_EXPORT void ZydisGetInstructionDefinition(ZydisInstructionEncoding encoding, ZyanU16 id, const ZydisInstructionDefinition **definition)
Returns the instruction-definition with the given encoding and id.
ZydisInternalVectorLength
enum ZydisInternalVectorLength_ ZydisInternalVectorLength
Defines the ZydisInternalVectorLength enum.
ZydisMaskOverride_
ZydisMaskOverride_
Defines the ZydisMaskOverride enum.
Definition SharedData.h:677
ZYDIS_MASK_OVERRIDE_DEFAULT
@ ZYDIS_MASK_OVERRIDE_DEFAULT
Definition SharedData.h:678
ZYDIS_MASK_OVERRIDE_ZEROING
@ ZYDIS_MASK_OVERRIDE_ZEROING
Definition SharedData.h:679
ZYDIS_MASK_OVERRIDE_CONTROL
@ ZYDIS_MASK_OVERRIDE_CONTROL
Definition SharedData.h:680
ZYDIS_MASK_OVERRIDE_REQUIRED_BITS
@ ZYDIS_MASK_OVERRIDE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:689
ZYDIS_MASK_OVERRIDE_MAX_VALUE
@ ZYDIS_MASK_OVERRIDE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:685
ZydisMaskPolicy_
ZydisMaskPolicy_
Defines the ZydisMaskPolicy enum.
Definition SharedData.h:645
ZYDIS_MASK_POLICY_INVALID
@ ZYDIS_MASK_POLICY_INVALID
Definition SharedData.h:646
ZYDIS_MASK_POLICY_FORBIDDEN
@ ZYDIS_MASK_POLICY_FORBIDDEN
The instruction does not allow a mask-register other than the default-mask (K0).
Definition SharedData.h:659
ZYDIS_MASK_POLICY_ALLOWED
@ ZYDIS_MASK_POLICY_ALLOWED
The instruction accepts mask-registers other than the default-mask (K0), but does not require them.
Definition SharedData.h:651
ZYDIS_MASK_POLICY_REQUIRED_BITS
@ ZYDIS_MASK_POLICY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:668
ZYDIS_MASK_POLICY_REQUIRED
@ ZYDIS_MASK_POLICY_REQUIRED
The instruction requires a mask-register other than the default-mask (K0).
Definition SharedData.h:655
ZYDIS_MASK_POLICY_MAX_VALUE
@ ZYDIS_MASK_POLICY_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:664
ZydisEVEXTupleType
enum ZydisEVEXTupleType_ ZydisEVEXTupleType
Defines the ZydisEVEXTupleType enum.
ZydisMVEXStaticBroadcast
enum ZydisMVEXStaticBroadcast_ ZydisMVEXStaticBroadcast
Defines the ZydisMVEXStaticBroadcast enum.
ZydisGetElementInfo
ZYDIS_NO_EXPORT void ZydisGetElementInfo(ZydisInternalElementType element, ZydisElementType *type, ZydisElementSize *size)
Returns the actual type and size of an internal element-type.
ZydisMVEXStaticBroadcast_
ZydisMVEXStaticBroadcast_
Defines the ZydisMVEXStaticBroadcast enum.
Definition SharedData.h:621
ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8
Definition SharedData.h:625
ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE
@ ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:631
ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16
Definition SharedData.h:626
ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16
Definition SharedData.h:624
ZYDIS_MVEX_STATIC_BROADCAST_NONE
@ ZYDIS_MVEX_STATIC_BROADCAST_NONE
Definition SharedData.h:622
ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8
Definition SharedData.h:623
ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS
@ ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:635
ZydisGetOperandDefinitions
ZYDIS_NO_EXPORT const ZydisOperandDefinition * ZydisGetOperandDefinitions(const ZydisInstructionDefinition *definition)
Returns the the operand-definitions for the given instruction-definition.
ZydisOperandDefinition
struct ZydisOperandDefinition_ ZydisOperandDefinition
Defines the ZydisOperandDefinition struct.
ZydisInternalVectorLength_
ZydisInternalVectorLength_
Defines the ZydisInternalVectorLength enum.
Definition SharedData.h:281
ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS
@ ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:294
ZYDIS_IVECTOR_LENGTH_DEFAULT
@ ZYDIS_IVECTOR_LENGTH_DEFAULT
Definition SharedData.h:282
ZYDIS_IVECTOR_LENGTH_FIXED_256
@ ZYDIS_IVECTOR_LENGTH_FIXED_256
Definition SharedData.h:284
ZYDIS_IVECTOR_LENGTH_FIXED_128
@ ZYDIS_IVECTOR_LENGTH_FIXED_128
Definition SharedData.h:283
ZYDIS_IVECTOR_LENGTH_FIXED_512
@ ZYDIS_IVECTOR_LENGTH_FIXED_512
Definition SharedData.h:285
ZYDIS_IVECTOR_LENGTH_MAX_VALUE
@ ZYDIS_IVECTOR_LENGTH_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:290
ZydisInstructionDefinitionMVEX
struct ZydisInstructionDefinitionMVEX_ ZydisInstructionDefinitionMVEX
Defines the ZydisInstructionDefinitionMVEX struct.
ZydisReadWriteAction_
ZydisReadWriteAction_
Defines the ZydisReadWriteAction enum.
Definition SharedData.h:259
ZYDIS_RW_ACTION_READ
@ ZYDIS_RW_ACTION_READ
Definition SharedData.h:261
ZYDIS_RW_ACTION_NONE
@ ZYDIS_RW_ACTION_NONE
Definition SharedData.h:260
ZYDIS_RW_ACTION_READWRITE
@ ZYDIS_RW_ACTION_READWRITE
Definition SharedData.h:263
ZYDIS_RW_ACTION_REQUIRED_BITS
@ ZYDIS_RW_ACTION_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:272
ZYDIS_RW_ACTION_WRITE
@ ZYDIS_RW_ACTION_WRITE
Definition SharedData.h:262
ZYDIS_RW_ACTION_MAX_VALUE
@ ZYDIS_RW_ACTION_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:268
ZydisImplicitMemBase_
ZydisImplicitMemBase_
Defines the ZydisImplicitMemBase enum.
Definition SharedData.h:184
ZYDIS_IMPLMEM_BASE_AGPR_RM
@ ZYDIS_IMPLMEM_BASE_AGPR_RM
Definition SharedData.h:187
ZYDIS_IMPLMEM_BASE_AGPR_REG
@ ZYDIS_IMPLMEM_BASE_AGPR_REG
Definition SharedData.h:186
ZYDIS_IMPLMEM_BASE_SBP
@ ZYDIS_IMPLMEM_BASE_SBP
Definition SharedData.h:194
ZYDIS_IMPLMEM_BASE_SSP
@ ZYDIS_IMPLMEM_BASE_SSP
Definition SharedData.h:193
ZYDIS_IMPLMEM_BASE_ASI
@ ZYDIS_IMPLMEM_BASE_ASI
Definition SharedData.h:191
ZYDIS_IMPLMEM_BASE_MAX_VALUE
@ ZYDIS_IMPLMEM_BASE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:199
ZYDIS_IMPLMEM_BASE_ABX
@ ZYDIS_IMPLMEM_BASE_ABX
Definition SharedData.h:190
ZYDIS_IMPLMEM_BASE_AAX
@ ZYDIS_IMPLMEM_BASE_AAX
Definition SharedData.h:188
ZYDIS_IMPLMEM_BASE_ADI
@ ZYDIS_IMPLMEM_BASE_ADI
Definition SharedData.h:192
ZYDIS_IMPLMEM_BASE_REQUIRED_BITS
@ ZYDIS_IMPLMEM_BASE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:203
ZYDIS_IMPLMEM_BASE_ADX
@ ZYDIS_IMPLMEM_BASE_ADX
Definition SharedData.h:189
ZydisMaskPolicy
enum ZydisMaskPolicy_ ZydisMaskPolicy
Defines the ZydisMaskPolicy enum.
ZydisSemanticOperandType_
ZydisSemanticOperandType_
Defines the ZydisSemanticOperandType enum.
Definition SharedData.h:60
ZYDIS_SEMANTIC_OPTYPE_MMX
@ ZYDIS_SEMANTIC_OPTYPE_MMX
Definition SharedData.h:74
ZYDIS_SEMANTIC_OPTYPE_ZMM
@ ZYDIS_SEMANTIC_OPTYPE_ZMM
Definition SharedData.h:77
ZYDIS_SEMANTIC_OPTYPE_BND
@ ZYDIS_SEMANTIC_OPTYPE_BND
Definition SharedData.h:79
ZYDIS_SEMANTIC_OPTYPE_GPR32_32_64
@ ZYDIS_SEMANTIC_OPTYPE_GPR32_32_64
Definition SharedData.h:70
ZYDIS_SEMANTIC_OPTYPE_MEM
@ ZYDIS_SEMANTIC_OPTYPE_MEM
Definition SharedData.h:84
ZYDIS_SEMANTIC_OPTYPE_AGEN
@ ZYDIS_SEMANTIC_OPTYPE_AGEN
Definition SharedData.h:91
ZYDIS_SEMANTIC_OPTYPE_CR
@ ZYDIS_SEMANTIC_OPTYPE_CR
Definition SharedData.h:81
ZYDIS_SEMANTIC_OPTYPE_DR
@ ZYDIS_SEMANTIC_OPTYPE_DR
Definition SharedData.h:82
ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_MEM
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_MEM
Definition SharedData.h:63
ZYDIS_SEMANTIC_OPTYPE_GPR32
@ ZYDIS_SEMANTIC_OPTYPE_GPR32
Definition SharedData.h:67
ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBY
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBY
Definition SharedData.h:86
ZYDIS_SEMANTIC_OPTYPE_FPR
@ ZYDIS_SEMANTIC_OPTYPE_FPR
Definition SharedData.h:73
ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE
@ ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:98
ZYDIS_SEMANTIC_OPTYPE_XMM
@ ZYDIS_SEMANTIC_OPTYPE_XMM
Definition SharedData.h:75
ZYDIS_SEMANTIC_OPTYPE_GPR8
@ ZYDIS_SEMANTIC_OPTYPE_GPR8
Definition SharedData.h:65
ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBX
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBX
Definition SharedData.h:85
ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBZ
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBZ
Definition SharedData.h:87
ZYDIS_SEMANTIC_OPTYPE_GPR16
@ ZYDIS_SEMANTIC_OPTYPE_GPR16
Definition SharedData.h:66
ZYDIS_SEMANTIC_OPTYPE_MIB
@ ZYDIS_SEMANTIC_OPTYPE_MIB
Definition SharedData.h:93
ZYDIS_SEMANTIC_OPTYPE_SREG
@ ZYDIS_SEMANTIC_OPTYPE_SREG
Definition SharedData.h:80
ZYDIS_SEMANTIC_OPTYPE_TMM
@ ZYDIS_SEMANTIC_OPTYPE_TMM
Definition SharedData.h:78
ZYDIS_SEMANTIC_OPTYPE_IMM
@ ZYDIS_SEMANTIC_OPTYPE_IMM
Definition SharedData.h:88
ZYDIS_SEMANTIC_OPTYPE_MOFFS
@ ZYDIS_SEMANTIC_OPTYPE_MOFFS
Definition SharedData.h:92
ZYDIS_SEMANTIC_OPTYPE_GPR64
@ ZYDIS_SEMANTIC_OPTYPE_GPR64
Definition SharedData.h:68
ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_IMM1
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_IMM1
Definition SharedData.h:64
ZYDIS_SEMANTIC_OPTYPE_GPR16_32_32
@ ZYDIS_SEMANTIC_OPTYPE_GPR16_32_32
Definition SharedData.h:71
ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS
@ ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:102
ZYDIS_SEMANTIC_OPTYPE_UNUSED
@ ZYDIS_SEMANTIC_OPTYPE_UNUSED
Definition SharedData.h:61
ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG
Definition SharedData.h:62
ZYDIS_SEMANTIC_OPTYPE_GPR16_32_64
@ ZYDIS_SEMANTIC_OPTYPE_GPR16_32_64
Definition SharedData.h:69
ZYDIS_SEMANTIC_OPTYPE_YMM
@ ZYDIS_SEMANTIC_OPTYPE_YMM
Definition SharedData.h:76
ZYDIS_SEMANTIC_OPTYPE_REL
@ ZYDIS_SEMANTIC_OPTYPE_REL
Definition SharedData.h:89
ZYDIS_SEMANTIC_OPTYPE_PTR
@ ZYDIS_SEMANTIC_OPTYPE_PTR
Definition SharedData.h:90
ZYDIS_SEMANTIC_OPTYPE_MASK
@ ZYDIS_SEMANTIC_OPTYPE_MASK
Definition SharedData.h:83
ZYDIS_SEMANTIC_OPTYPE_GPR_ASZ
@ ZYDIS_SEMANTIC_OPTYPE_GPR_ASZ
Definition SharedData.h:72
ZydisInstructionDefinitionXOP
struct ZydisInstructionDefinitionXOP_ ZydisInstructionDefinitionXOP
Defines the ZydisInstructionDefinitionXOP struct.
ZYAN_STATIC_ASSERT
ZYAN_STATIC_ASSERT(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS<=8)
ZydisInternalElementType
enum ZydisInternalElementType_ ZydisInternalElementType
Defines the ZydisInternalElementType enum.
ZydisInternalElementSize
enum ZydisInternalElementSize_ ZydisInternalElementSize
Defines the ZydisInternalElementSize enum.
ZydisInstructionDefinitionEVEX
struct ZydisInstructionDefinitionEVEX_ ZydisInstructionDefinitionEVEX
Defines the ZydisInstructionDefinitionEVEX struct.
ZydisEVEXStaticBroadcast_
ZydisEVEXStaticBroadcast_
Defines the ZydisEVEXStaticBroadcast enum.
Definition SharedData.h:589
ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4
Definition SharedData.h:592
ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16
@ ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16
Definition SharedData.h:602
ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16
Definition SharedData.h:594
ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8
Definition SharedData.h:600
ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4
Definition SharedData.h:597
ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32
Definition SharedData.h:595
ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16
Definition SharedData.h:601
ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE
@ ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE
Maximum value of this enum.
Definition SharedData.h:607
ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2
Definition SharedData.h:591
ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64
Definition SharedData.h:596
ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8
Definition SharedData.h:598
ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS
@ ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedData.h:611
ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8
Definition SharedData.h:593
ZYDIS_EVEX_STATIC_BROADCAST_NONE
@ ZYDIS_EVEX_STATIC_BROADCAST_NONE
Definition SharedData.h:590
ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16
Definition SharedData.h:599
ZydisInstructionDefinitionLEGACY
struct ZydisInstructionDefinitionLEGACY_ ZydisInstructionDefinitionLEGACY
Defines the ZydisInstructionDefinitionLEGACY struct.
SharedTypes.h
Defines decoder/encoder-shared macros and types.
ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS
@ ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:325
ZydisInstructionEncoding
enum ZydisInstructionEncoding_ ZydisInstructionEncoding
Defines the ZydisInstructionEncoding enum.
ZYDIS_OPERAND_ENCODING_REQUIRED_BITS
@ ZYDIS_OPERAND_ENCODING_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:292
ZYDIS_OPERAND_ACTION_REQUIRED_BITS
@ ZYDIS_OPERAND_ACTION_REQUIRED_BITS
The minimum number of bits required to represent all values of this bitset.
Definition SharedTypes.h:400
ZydisElementType
enum ZydisElementType_ ZydisElementType
Defines the ZydisElementType enum.
ZydisElementSize
ZyanU16 ZydisElementSize
Defines the ZydisElementSize datatype.
Definition SharedTypes.h:194
ZydisDefinitionAccessedFlags_
Definition SharedData.h:900
ZydisDefinitionAccessedFlags_::fpu_flags
ZydisAccessedFlags fpu_flags
Definition SharedData.h:902
ZydisDefinitionAccessedFlags_::cpu_flags
ZydisAccessedFlags cpu_flags
Definition SharedData.h:901
ZydisInstructionDefinition3DNOW_
Defines the ZydisInstructionDefinition3DNOW struct.
Definition SharedData.h:798
ZydisInstructionDefinition3DNOW_::ZYDIS_INSTRUCTION_DEFINITION_BASE
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition SharedData.h:799
ZydisInstructionDefinitionEVEX_
Defines the ZydisInstructionDefinitionEVEX struct.
Definition SharedData.h:841
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 tuple_type ZYAN_BITFIELD(ZYDIS_TUPLETYPE_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_EVEX_FUNC_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 mask_override ZYAN_BITFIELD(ZYDIS_MASK_OVERRIDE_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 vector_length ZYAN_BITFIELD(ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanBool accepts_zero_mask ZYAN_BITFIELD(1)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 element_size ZYAN_BITFIELD(ZYDIS_IELEMENT_SIZE_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYAN_BITFIELD
ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS)
ZydisInstructionDefinitionEVEX_::ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition SharedData.h:842
ZydisInstructionDefinitionLEGACY_
Defines the ZydisInstructionDefinitionLEGACY struct.
Definition SharedData.h:775
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_branch_hints ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_XACQUIRE ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_XRELEASE ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYDIS_INSTRUCTION_DEFINITION_BASE
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition SharedData.h:776
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_REPNEREPNZ ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_BOUND ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_LOCK ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_REP ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_REPEREPZ ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_NOTRACK ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool accepts_hle_without_lock ZYAN_BITFIELD(1)
ZydisInstructionDefinitionLEGACY_::ZYAN_BITFIELD
ZyanBool is_privileged ZYAN_BITFIELD(1)
ZydisInstructionDefinitionMVEX_
Defines the ZydisInstructionDefinitionMVEX struct.
Definition SharedData.h:870
ZydisInstructionDefinitionMVEX_::ZYAN_BITFIELD
ZyanBool has_element_granularity ZYAN_BITFIELD(1)
ZydisInstructionDefinitionMVEX_::ZYAN_BITFIELD
ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS)
ZydisInstructionDefinitionMVEX_::ZYAN_BITFIELD
ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_MVEX_FUNC_REQUIRED_BITS)
ZydisInstructionDefinitionMVEX_::ZYAN_BITFIELD
ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS)
ZydisInstructionDefinitionMVEX_::ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition SharedData.h:871
ZydisInstructionDefinitionVEX_
Defines the ZydisInstructionDefinitionVEX struct.
Definition SharedData.h:818
ZydisInstructionDefinitionVEX_::ZYAN_BITFIELD
ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS)
ZydisInstructionDefinitionVEX_::ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition SharedData.h:819
ZydisInstructionDefinitionXOP_
Defines the ZydisInstructionDefinitionXOP struct.
Definition SharedData.h:806
ZydisInstructionDefinitionXOP_::ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR
Definition SharedData.h:807
ZydisInstructionDefinition_
Defines the ZydisInstructionDefinition struct.
Definition SharedData.h:767
ZydisInstructionDefinition_::ZYDIS_INSTRUCTION_DEFINITION_BASE
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition SharedData.h:768
ZydisOperandDefinition_
Defines the ZydisOperandDefinition struct.
Definition SharedData.h:223
ZydisOperandDefinition_::op
union ZydisOperandDefinition_::@305306146111113217155213254345233312261255177264 op
ZydisOperandDefinition_::ZYAN_BITFIELD
ZyanBool ignore_seg_override ZYAN_BITFIELD(1)
ZydisOperandDefinition_::ZYAN_BITFIELD
ZyanU8 type ZYAN_BITFIELD(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS)
ZydisOperandDefinition_::ZYAN_BITFIELD
ZyanU8 element_type ZYAN_BITFIELD(ZYDIS_IELEMENT_TYPE_REQUIRED_BITS)
ZydisOperandDefinition_::ZYAN_BITFIELD
ZyanBool is_multisource4 ZYAN_BITFIELD(1)
ZydisOperandDefinition_::ZYAN_BITFIELD
ZyanU8 actions ZYAN_BITFIELD(ZYDIS_OPERAND_ACTION_REQUIRED_BITS)
ZydisOperandDefinition_::ZYAN_BITFIELD
ZyanU8 visibility ZYAN_BITFIELD(ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS)
ZydisOperandDefinition_::reg
union ZydisOperandDefinition_::@305306146111113217155213254345233312261255177264::@216006201371005371320163065257221200143070137150::@233131063264102342112132024064115230167220154157 reg
ZydisOperandDefinition_::size
ZyanU16 size[3]
Definition SharedData.h:227
ZydisOperandDefinition_::mem
struct ZydisOperandDefinition_::@305306146111113217155213254345233312261255177264::@177334351255343233072150115007307054277315232325 mem