27 #ifndef ZYDIS_INTERNAL_SHAREDDATA_H 28 #define ZYDIS_INTERNAL_SHAREDDATA_H 30 #include <Zycore/Defines.h> 46 # pragma warning(push) 47 # pragma warning(disable:4214) 59 typedef enum ZydisSemanticOperandType_
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_BND,
79 ZYDIS_SEMANTIC_OPTYPE_SREG,
80 ZYDIS_SEMANTIC_OPTYPE_CR,
81 ZYDIS_SEMANTIC_OPTYPE_DR,
82 ZYDIS_SEMANTIC_OPTYPE_MASK,
83 ZYDIS_SEMANTIC_OPTYPE_MEM,
84 ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBX,
85 ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBY,
86 ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBZ,
87 ZYDIS_SEMANTIC_OPTYPE_IMM,
88 ZYDIS_SEMANTIC_OPTYPE_REL,
89 ZYDIS_SEMANTIC_OPTYPE_PTR,
90 ZYDIS_SEMANTIC_OPTYPE_AGEN,
91 ZYDIS_SEMANTIC_OPTYPE_MOFFS,
92 ZYDIS_SEMANTIC_OPTYPE_MIB,
97 ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE = ZYDIS_SEMANTIC_OPTYPE_MIB,
101 ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE)
102 } ZydisSemanticOperandType;
109 typedef enum ZydisInternalElementType_
111 ZYDIS_IELEMENT_TYPE_INVALID,
112 ZYDIS_IELEMENT_TYPE_VARIABLE,
113 ZYDIS_IELEMENT_TYPE_STRUCT,
114 ZYDIS_IELEMENT_TYPE_INT,
115 ZYDIS_IELEMENT_TYPE_UINT,
116 ZYDIS_IELEMENT_TYPE_INT1,
117 ZYDIS_IELEMENT_TYPE_INT8,
118 ZYDIS_IELEMENT_TYPE_INT16,
119 ZYDIS_IELEMENT_TYPE_INT32,
120 ZYDIS_IELEMENT_TYPE_INT64,
121 ZYDIS_IELEMENT_TYPE_UINT8,
122 ZYDIS_IELEMENT_TYPE_UINT16,
123 ZYDIS_IELEMENT_TYPE_UINT32,
124 ZYDIS_IELEMENT_TYPE_UINT64,
125 ZYDIS_IELEMENT_TYPE_UINT128,
126 ZYDIS_IELEMENT_TYPE_UINT256,
127 ZYDIS_IELEMENT_TYPE_FLOAT16,
128 ZYDIS_IELEMENT_TYPE_FLOAT32,
129 ZYDIS_IELEMENT_TYPE_FLOAT64,
130 ZYDIS_IELEMENT_TYPE_FLOAT80,
131 ZYDIS_IELEMENT_TYPE_BCD80,
132 ZYDIS_IELEMENT_TYPE_CC3,
133 ZYDIS_IELEMENT_TYPE_CC5,
138 ZYDIS_IELEMENT_TYPE_MAX_VALUE = ZYDIS_IELEMENT_TYPE_CC5,
142 ZYDIS_IELEMENT_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IELEMENT_TYPE_MAX_VALUE)
143 } ZydisInternalElementType;
150 typedef enum ZydisImplicitRegisterType_
152 ZYDIS_IMPLREG_TYPE_STATIC,
153 ZYDIS_IMPLREG_TYPE_GPR_OSZ,
154 ZYDIS_IMPLREG_TYPE_GPR_ASZ,
155 ZYDIS_IMPLREG_TYPE_GPR_SSZ,
156 ZYDIS_IMPLREG_TYPE_IP_ASZ,
157 ZYDIS_IMPLREG_TYPE_IP_SSZ,
158 ZYDIS_IMPLREG_TYPE_FLAGS_SSZ,
163 ZYDIS_IMPLREG_TYPE_MAX_VALUE = ZYDIS_IMPLREG_TYPE_FLAGS_SSZ,
167 ZYDIS_IMPLREG_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IMPLREG_TYPE_MAX_VALUE)
168 } ZydisImplicitRegisterType;
175 typedef enum ZydisImplicitMemBase_
177 ZYDIS_IMPLMEM_BASE_AGPR_REG,
178 ZYDIS_IMPLMEM_BASE_AGPR_RM,
179 ZYDIS_IMPLMEM_BASE_AAX,
180 ZYDIS_IMPLMEM_BASE_ADX,
181 ZYDIS_IMPLMEM_BASE_ABX,
182 ZYDIS_IMPLMEM_BASE_ASP,
183 ZYDIS_IMPLMEM_BASE_ABP,
184 ZYDIS_IMPLMEM_BASE_ASI,
185 ZYDIS_IMPLMEM_BASE_ADI,
190 ZYDIS_IMPLMEM_BASE_MAX_VALUE = ZYDIS_IMPLMEM_BASE_ADI,
194 ZYDIS_IMPLMEM_BASE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IMPLMEM_BASE_MAX_VALUE)
195 } ZydisImplicitMemBase;
201 ZYAN_STATIC_ASSERT(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS <= 8);
204 ZYAN_STATIC_ASSERT(ZYDIS_IELEMENT_TYPE_REQUIRED_BITS <= 8);
206 ZYAN_STATIC_ASSERT(ZYDIS_IMPLREG_TYPE_REQUIRED_BITS <= 8);
207 ZYAN_STATIC_ASSERT(ZYDIS_REGISTER_REQUIRED_BITS <= 16);
208 ZYAN_STATIC_ASSERT(ZYDIS_IMPLMEM_BASE_REQUIRED_BITS <= 8);
215 ZyanU8 type ZYAN_BITFIELD(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS);
219 ZyanU8 element_type ZYAN_BITFIELD(ZYDIS_IELEMENT_TYPE_REQUIRED_BITS);
225 ZyanU8 type ZYAN_BITFIELD(ZYDIS_IMPLREG_TYPE_REQUIRED_BITS);
228 ZyanU16 reg ZYAN_BITFIELD(ZYDIS_REGISTER_REQUIRED_BITS);
229 ZyanU8
id ZYAN_BITFIELD(6);
234 ZyanU8 seg ZYAN_BITFIELD(3);
235 ZyanU8 base ZYAN_BITFIELD(ZYDIS_IMPLMEM_BASE_REQUIRED_BITS);
247 typedef enum ZydisReadWriteAction_
249 ZYDIS_RW_ACTION_NONE,
250 ZYDIS_RW_ACTION_READ,
251 ZYDIS_RW_ACTION_WRITE,
252 ZYDIS_RW_ACTION_READWRITE,
257 ZYDIS_RW_ACTION_MAX_VALUE = ZYDIS_RW_ACTION_READWRITE,
261 ZYDIS_RW_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_RW_ACTION_MAX_VALUE)
262 } ZydisReadWriteAction;
269 typedef enum ZydisRegisterConstraint_
271 ZYDIS_REG_CONSTRAINTS_UNUSED,
272 ZYDIS_REG_CONSTRAINTS_NONE,
273 ZYDIS_REG_CONSTRAINTS_GPR,
274 ZYDIS_REG_CONSTRAINTS_SR_DEST,
275 ZYDIS_REG_CONSTRAINTS_SR,
276 ZYDIS_REG_CONSTRAINTS_CR,
277 ZYDIS_REG_CONSTRAINTS_DR,
278 ZYDIS_REG_CONSTRAINTS_MASK,
279 ZYDIS_REG_CONSTRAINTS_BND,
280 ZYDIS_REG_CONSTRAINTS_VSIB,
285 ZYDIS_REG_CONSTRAINTS_MAX_VALUE = ZYDIS_REG_CONSTRAINTS_VSIB,
289 ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_REG_CONSTRAINTS_MAX_VALUE)
290 } ZydisRegisterConstraint;
297 typedef enum ZydisInternalVectorLength_
299 ZYDIS_IVECTOR_LENGTH_DEFAULT,
300 ZYDIS_IVECTOR_LENGTH_FIXED_128,
301 ZYDIS_IVECTOR_LENGTH_FIXED_256,
302 ZYDIS_IVECTOR_LENGTH_FIXED_512,
307 ZYDIS_IVECTOR_LENGTH_MAX_VALUE = ZYDIS_IVECTOR_LENGTH_FIXED_512,
311 ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IVECTOR_LENGTH_MAX_VALUE)
312 } ZydisInternalVectorLength;
319 typedef enum ZydisInternalElementSize_
321 ZYDIS_IELEMENT_SIZE_INVALID,
322 ZYDIS_IELEMENT_SIZE_8,
323 ZYDIS_IELEMENT_SIZE_16,
324 ZYDIS_IELEMENT_SIZE_32,
325 ZYDIS_IELEMENT_SIZE_64,
326 ZYDIS_IELEMENT_SIZE_128,
331 ZYDIS_IELEMENT_SIZE_MAX_VALUE = ZYDIS_IELEMENT_SIZE_128,
335 ZYDIS_IELEMENT_SIZE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_IELEMENT_SIZE_MAX_VALUE)
336 } ZydisInternalElementSize;
343 typedef enum ZydisEVEXFunctionality_
345 ZYDIS_EVEX_FUNC_INVALID,
362 ZYDIS_EVEX_FUNC_MAX_VALUE = ZYDIS_EVEX_FUNC_SAE,
366 ZYDIS_EVEX_FUNC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_EVEX_FUNC_MAX_VALUE)
367 } ZydisEVEXFunctionality;
374 typedef enum ZydisEVEXTupleType_
376 ZYDIS_TUPLETYPE_INVALID,
400 ZYDIS_TUPLETYPE_T1_4X,
404 ZYDIS_TUPLETYPE_GSCAT,
432 ZYDIS_TUPLETYPE_M128,
441 ZYDIS_TUPLETYPE_MAX_VALUE = ZYDIS_TUPLETYPE_DUP,
445 ZYDIS_TUPLETYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_TUPLETYPE_MAX_VALUE)
446 } ZydisEVEXTupleType;
453 typedef enum ZydisMVEXFunctionality_
458 ZYDIS_MVEX_FUNC_IGNORED,
462 ZYDIS_MVEX_FUNC_INVALID,
474 ZYDIS_MVEX_FUNC_F_32,
478 ZYDIS_MVEX_FUNC_I_32,
482 ZYDIS_MVEX_FUNC_F_64,
486 ZYDIS_MVEX_FUNC_I_64,
490 ZYDIS_MVEX_FUNC_SWIZZLE_32,
494 ZYDIS_MVEX_FUNC_SWIZZLE_64,
498 ZYDIS_MVEX_FUNC_SF_32,
502 ZYDIS_MVEX_FUNC_SF_32_BCST,
506 ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16,
510 ZYDIS_MVEX_FUNC_SF_64,
514 ZYDIS_MVEX_FUNC_SI_32,
518 ZYDIS_MVEX_FUNC_SI_32_BCST,
522 ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16,
526 ZYDIS_MVEX_FUNC_SI_64,
530 ZYDIS_MVEX_FUNC_UF_32,
534 ZYDIS_MVEX_FUNC_UF_64,
538 ZYDIS_MVEX_FUNC_UI_32,
542 ZYDIS_MVEX_FUNC_UI_64,
546 ZYDIS_MVEX_FUNC_DF_32,
550 ZYDIS_MVEX_FUNC_DF_64,
554 ZYDIS_MVEX_FUNC_DI_32,
558 ZYDIS_MVEX_FUNC_DI_64,
563 ZYDIS_MVEX_FUNC_MAX_VALUE = ZYDIS_MVEX_FUNC_DI_64,
567 ZYDIS_MVEX_FUNC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MVEX_FUNC_MAX_VALUE)
568 } ZydisMVEXFunctionality;
575 typedef enum ZydisVEXStaticBroadcast
577 ZYDIS_VEX_STATIC_BROADCAST_NONE,
578 ZYDIS_VEX_STATIC_BROADCAST_1_TO_2,
579 ZYDIS_VEX_STATIC_BROADCAST_1_TO_4,
580 ZYDIS_VEX_STATIC_BROADCAST_1_TO_8,
581 ZYDIS_VEX_STATIC_BROADCAST_1_TO_16,
582 ZYDIS_VEX_STATIC_BROADCAST_1_TO_32,
583 ZYDIS_VEX_STATIC_BROADCAST_2_TO_4,
588 ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE = ZYDIS_VEX_STATIC_BROADCAST_2_TO_4,
592 ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS =
593 ZYAN_BITS_TO_REPRESENT(ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE)
594 } ZydisVEXStaticBroadcast;
601 typedef enum ZydisEVEXStaticBroadcast_
603 ZYDIS_EVEX_STATIC_BROADCAST_NONE,
604 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2,
605 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4,
606 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8,
607 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16,
608 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32,
609 ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64,
610 ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4,
611 ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8,
612 ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16,
613 ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8,
614 ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16,
615 ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16,
620 ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE = ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16,
624 ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS =
625 ZYAN_BITS_TO_REPRESENT(ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE)
626 } ZydisEVEXStaticBroadcast;
633 typedef enum ZydisMVEXStaticBroadcast_
635 ZYDIS_MVEX_STATIC_BROADCAST_NONE,
636 ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8,
637 ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16,
638 ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8,
639 ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16,
644 ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE = ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16,
648 ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS =
649 ZYAN_BITS_TO_REPRESENT(ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE)
650 } ZydisMVEXStaticBroadcast;
657 typedef enum ZydisMaskPolicy_
659 ZYDIS_MASK_POLICY_INVALID,
664 ZYDIS_MASK_POLICY_ALLOWED,
668 ZYDIS_MASK_POLICY_REQUIRED,
672 ZYDIS_MASK_POLICY_FORBIDDEN,
677 ZYDIS_MASK_POLICY_MAX_VALUE = ZYDIS_MASK_POLICY_FORBIDDEN,
681 ZYDIS_MASK_POLICY_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MASK_POLICY_MAX_VALUE)
689 typedef enum ZydisMaskOverride_
691 ZYDIS_MASK_OVERRIDE_DEFAULT,
692 ZYDIS_MASK_OVERRIDE_ZEROING,
693 ZYDIS_MASK_OVERRIDE_CONTROL,
698 ZYDIS_MASK_OVERRIDE_MAX_VALUE = ZYDIS_MASK_OVERRIDE_CONTROL,
702 ZYDIS_MASK_OVERRIDE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MASK_OVERRIDE_MAX_VALUE)
709 ZYAN_STATIC_ASSERT(ZYDIS_MNEMONIC_REQUIRED_BITS <= 16);
710 ZYAN_STATIC_ASSERT(ZYDIS_CATEGORY_REQUIRED_BITS <= 8);
711 ZYAN_STATIC_ASSERT(ZYDIS_ISA_SET_REQUIRED_BITS <= 8);
712 ZYAN_STATIC_ASSERT(ZYDIS_ISA_EXT_REQUIRED_BITS <= 8);
715 ZYAN_STATIC_ASSERT(ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS <= 8);
716 ZYAN_STATIC_ASSERT(ZYDIS_RW_ACTION_REQUIRED_BITS <= 8);
718 #ifndef ZYDIS_MINIMAL_MODE 719 # define ZYDIS_INSTRUCTION_DEFINITION_BASE \ 720 ZyanU16 mnemonic ZYAN_BITFIELD(ZYDIS_MNEMONIC_REQUIRED_BITS); \ 721 ZyanU8 operand_count ZYAN_BITFIELD( 4); \ 722 ZyanU16 operand_reference ZYAN_BITFIELD(15); \ 723 ZyanU8 operand_size_map ZYAN_BITFIELD( 3); \ 724 ZyanU8 address_size_map ZYAN_BITFIELD( 2); \ 725 ZyanU8 flags_reference ZYAN_BITFIELD( 7); \ 726 ZyanBool requires_protected_mode ZYAN_BITFIELD( 1); \ 727 ZyanU8 category ZYAN_BITFIELD(ZYDIS_CATEGORY_REQUIRED_BITS); \ 728 ZyanU8 isa_set ZYAN_BITFIELD(ZYDIS_ISA_SET_REQUIRED_BITS); \ 729 ZyanU8 isa_ext ZYAN_BITFIELD(ZYDIS_ISA_EXT_REQUIRED_BITS); \ 730 ZyanU8 branch_type ZYAN_BITFIELD(ZYDIS_BRANCH_TYPE_REQUIRED_BITS); \ 731 ZyanU8 exception_class ZYAN_BITFIELD(ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS); \ 732 ZyanU8 constr_REG ZYAN_BITFIELD(ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS); \ 733 ZyanU8 constr_RM ZYAN_BITFIELD(ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS); \ 734 ZyanU8 cpu_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \ 735 ZyanU8 fpu_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \ 736 ZyanU8 xmm_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS) 738 # define ZYDIS_INSTRUCTION_DEFINITION_BASE \ 739 ZyanU16 mnemonic ZYAN_BITFIELD(ZYDIS_MNEMONIC_REQUIRED_BITS); \ 740 ZyanU8 operand_size_map ZYAN_BITFIELD( 3); \ 741 ZyanU8 address_size_map ZYAN_BITFIELD( 2); \ 742 ZyanBool requires_protected_mode ZYAN_BITFIELD( 1); \ 743 ZyanU8 constr_REG ZYAN_BITFIELD(ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS); \ 744 ZyanU8 constr_RM ZYAN_BITFIELD(ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS) 747 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR \ 748 ZYDIS_INSTRUCTION_DEFINITION_BASE; \ 749 ZyanU8 constr_NDSNDD ZYAN_BITFIELD(ZYDIS_REG_CONSTRAINTS_REQUIRED_BITS) 751 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL \ 752 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR; \ 753 ZyanBool is_gather ZYAN_BITFIELD( 1) 760 ZYDIS_INSTRUCTION_DEFINITION_BASE;
768 ZYDIS_INSTRUCTION_DEFINITION_BASE;
769 #ifndef ZYDIS_MINIMAL_MODE 770 ZyanBool is_privileged ZYAN_BITFIELD( 1);
772 ZyanBool accepts_LOCK ZYAN_BITFIELD( 1);
773 #ifndef ZYDIS_MINIMAL_MODE 774 ZyanBool accepts_REP ZYAN_BITFIELD( 1);
775 ZyanBool accepts_REPEREPZ ZYAN_BITFIELD( 1);
776 ZyanBool accepts_REPNEREPNZ ZYAN_BITFIELD( 1);
777 ZyanBool accepts_BOUND ZYAN_BITFIELD( 1);
778 ZyanBool accepts_XACQUIRE ZYAN_BITFIELD( 1);
779 ZyanBool accepts_XRELEASE ZYAN_BITFIELD( 1);
780 ZyanBool accepts_hle_without_lock ZYAN_BITFIELD( 1);
781 ZyanBool accepts_branch_hints ZYAN_BITFIELD( 1);
782 ZyanBool accepts_segment ZYAN_BITFIELD( 1);
791 ZYDIS_INSTRUCTION_DEFINITION_BASE;
799 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR;
804 ZYAN_STATIC_ASSERT(ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS <= 8);
811 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL;
812 #ifndef ZYDIS_MINIMAL_MODE 813 ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS);
817 #ifndef ZYDIS_DISABLE_AVX512 821 ZYAN_STATIC_ASSERT(ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS <= 8);
822 ZYAN_STATIC_ASSERT(ZYDIS_TUPLETYPE_REQUIRED_BITS <= 8);
823 ZYAN_STATIC_ASSERT(ZYDIS_IELEMENT_SIZE_REQUIRED_BITS <= 8);
824 ZYAN_STATIC_ASSERT(ZYDIS_EVEX_FUNC_REQUIRED_BITS <= 8);
825 ZYAN_STATIC_ASSERT(ZYDIS_MASK_POLICY_REQUIRED_BITS <= 8);
826 ZYAN_STATIC_ASSERT(ZYDIS_MASK_OVERRIDE_REQUIRED_BITS <= 8);
827 ZYAN_STATIC_ASSERT(ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS <= 8);
834 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL;
835 #ifndef ZYDIS_MINIMAL_MODE 836 ZyanU8 vector_length ZYAN_BITFIELD(ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS);
837 ZyanU8 tuple_type ZYAN_BITFIELD(ZYDIS_TUPLETYPE_REQUIRED_BITS);
838 ZyanU8 element_size ZYAN_BITFIELD(ZYDIS_IELEMENT_SIZE_REQUIRED_BITS);
839 ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_EVEX_FUNC_REQUIRED_BITS);
841 ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS);
842 ZyanBool accepts_zero_mask ZYAN_BITFIELD( 1);
843 #ifndef ZYDIS_MINIMAL_MODE 844 ZyanU8 mask_override ZYAN_BITFIELD(ZYDIS_MASK_OVERRIDE_REQUIRED_BITS);
845 ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS);
850 #ifndef ZYDIS_DISABLE_KNC 854 ZYAN_STATIC_ASSERT(ZYDIS_MVEX_FUNC_REQUIRED_BITS <= 8);
855 ZYAN_STATIC_ASSERT(ZYDIS_MASK_POLICY_REQUIRED_BITS <= 8);
856 ZYAN_STATIC_ASSERT(ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS <= 8);
863 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL;
864 ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_MVEX_FUNC_REQUIRED_BITS);
865 ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS);
866 #ifndef ZYDIS_MINIMAL_MODE 867 ZyanBool has_element_granularity ZYAN_BITFIELD( 1);
868 ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS);
887 # pragma warning(pop) 913 #ifndef ZYDIS_MINIMAL_MODE 931 #ifndef ZYDIS_MINIMAL_MODE 939 ZYDIS_NO_EXPORT
void ZydisGetElementInfo(ZydisInternalElementType element,
ZydisElementType* type,
947 #ifndef ZYDIS_MINIMAL_MODE Mnemonic constant definitions and helper functions.
Defines the ZydisInstructionDefinition3DNOW struct.
Definition: SharedData.h:789
Defines the ZydisInstructionDefinition struct.
Definition: SharedData.h:758
Defines the ZydisInstructionDefinitionLEGACY struct.
Definition: SharedData.h:766
Definition: SharedData.h:877
Defines the ZydisInstructionDefinitionEVEX struct.
Definition: SharedData.h:832
The minimum number of bits required to represent all values of this enum.
Definition: SharedTypes.h:316
Defines the ZydisInstructionDefinitionMVEX struct.
Definition: SharedData.h:861
Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.
Defines the ZydisInstructionDefinitionXOP struct.
Definition: SharedData.h:797
enum ZydisElementType_ ZydisElementType
Defines the ZydisElementType enum.
Defines decoder/encoder-shared macros and types.
The minimum number of bits required to represent all values of this enum.
Definition: DecoderTypes.h:675
enum ZydisInstructionEncoding_ ZydisInstructionEncoding
Defines the ZydisInstructionEncoding enum.
enum ZydisCPUFlagAction_ ZydisCPUFlagAction
Defines the ZydisCPUFlagAction enum.
Defines the ZydisInstructionDefinitionVEX struct.
Definition: SharedData.h:809
Maximum value of this enum.
Definition: DecoderTypes.h:530
The minimum number of bits required to represent all values of this bitset.
Definition: SharedTypes.h:391
The minimum number of bits required to represent all values of this enum.
Definition: DecoderTypes.h:614
ZyanU16 ZydisElementSize
Defines the ZydisElementSize datatype.
Definition: SharedTypes.h:189
Defines the ZydisOperandDefinition struct.
Definition: SharedData.h:213
Utility functions and constants for registers.
The minimum number of bits required to represent all values of this enum.
Definition: SharedTypes.h:283