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)
705 #define ZYDIS_OPDEF_REQUIRED_BITS \
706 ZYAN_MAX(ZYDIS_REGKIND_REQUIRED_BITS, ZYDIS_MEMOP_TYPE_REQUIRED_BITS + 1) + 1
708 #define ZYDIS_OPDEF_GET_REG(operand_definition) \
709 ((operand_definition) & ((1 << ZYDIS_REGKIND_REQUIRED_BITS ) - 1))
711 #define ZYDIS_OPDEF_GET_MEM(operand_definition) \
712 ((operand_definition) & ((1 << ZYDIS_MEMOP_TYPE_REQUIRED_BITS) - 1))
714 #define ZYDIS_OPDEF_GET_REG_HIGH_BIT(operand_definition) \
715 (((operand_definition) >> ZYDIS_REGKIND_REQUIRED_BITS ) & 0x01)
717 #define ZYDIS_OPDEF_GET_MEM_HIGH_BIT(operand_definition) \
718 (((operand_definition) >> ZYDIS_MEMOP_TYPE_REQUIRED_BITS) & 0x01)
731 #ifndef ZYDIS_MINIMAL_MODE
732 # define ZYDIS_INSTRUCTION_DEFINITION_BASE \
733 ZyanU16 mnemonic ZYAN_BITFIELD(ZYDIS_MNEMONIC_REQUIRED_BITS); \
734 ZyanU8 operand_count ZYAN_BITFIELD( 4); \
735 ZyanU8 operand_count_visible ZYAN_BITFIELD( 3); \
736 ZyanU16 operand_reference ZYAN_BITFIELD(15); \
737 ZyanU8 operand_size_map ZYAN_BITFIELD( 3); \
738 ZyanU8 address_size_map ZYAN_BITFIELD( 2); \
739 ZyanU8 flags_reference ZYAN_BITFIELD( 7); \
740 ZyanBool requires_protected_mode ZYAN_BITFIELD( 1); \
741 ZyanBool no_compat_mode ZYAN_BITFIELD( 1); \
742 ZyanU8 category ZYAN_BITFIELD(ZYDIS_CATEGORY_REQUIRED_BITS); \
743 ZyanU8 isa_set ZYAN_BITFIELD(ZYDIS_ISA_SET_REQUIRED_BITS); \
744 ZyanU8 isa_ext ZYAN_BITFIELD(ZYDIS_ISA_EXT_REQUIRED_BITS); \
745 ZyanU8 branch_type ZYAN_BITFIELD(ZYDIS_BRANCH_TYPE_REQUIRED_BITS); \
746 ZyanU8 exception_class ZYAN_BITFIELD(ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS); \
747 ZyanU8 op_reg ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS); \
748 ZyanU8 op_rm ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS); \
749 ZyanU8 cpu_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \
750 ZyanU8 fpu_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \
751 ZyanU8 xmm_state ZYAN_BITFIELD(ZYDIS_RW_ACTION_REQUIRED_BITS); \
752 ZyanBool accepts_segment ZYAN_BITFIELD( 1)
754 # define ZYDIS_INSTRUCTION_DEFINITION_BASE \
755 ZyanU16 mnemonic ZYAN_BITFIELD(ZYDIS_MNEMONIC_REQUIRED_BITS); \
756 ZyanU8 operand_size_map ZYAN_BITFIELD( 3); \
757 ZyanU8 address_size_map ZYAN_BITFIELD( 2); \
758 ZyanBool requires_protected_mode ZYAN_BITFIELD( 1); \
759 ZyanBool no_compat_mode ZYAN_BITFIELD( 1); \
760 ZyanU8 op_reg ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS); \
761 ZyanU8 op_rm ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS)
764 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR \
765 ZYDIS_INSTRUCTION_DEFINITION_BASE; \
766 ZyanU8 op_ndsndd ZYAN_BITFIELD(ZYDIS_OPDEF_REQUIRED_BITS)
768 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL \
769 ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR; \
770 ZyanBool is_gather ZYAN_BITFIELD( 1); \
771 ZyanBool no_source_dest_match ZYAN_BITFIELD( 1); \
772 ZyanBool no_source_source_match ZYAN_BITFIELD( 1)
788 #ifndef ZYDIS_MINIMAL_MODE
792 #ifndef ZYDIS_MINIMAL_MODE
831 #ifndef ZYDIS_MINIMAL_MODE
836 #ifndef ZYDIS_DISABLE_AVX512
854 #ifndef ZYDIS_MINIMAL_MODE
862 #ifndef ZYDIS_MINIMAL_MODE
873 #ifndef ZYDIS_DISABLE_KNC
889 #ifndef ZYDIS_MINIMAL_MODE
901 # pragma warning(pop)
945 #ifndef ZYDIS_MINIMAL_MODE
980 #ifndef ZYDIS_MINIMAL_MODE
996 #ifndef ZYDIS_MINIMAL_MODE
Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.
@ ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: DecoderTypes.h:557
@ ZYDIS_BRANCH_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: DecoderTypes.h:464
#define ZYDIS_NO_EXPORT
Symbol is not exported and for internal use only.
Definition: Defines.h:74
@ ZYDIS_ISA_EXT_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: EnumISAExt.h:121
@ ZYDIS_ISA_SET_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: EnumISASet.h:235
@ ZYDIS_CATEGORY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: EnumInstructionCategory.h:132
@ ZYDIS_MNEMONIC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: EnumMnemonic.h:1900
@ ZYDIS_REGISTER_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: EnumRegister.h:385
Mnemonic constant definitions and helper functions.
Utility functions and constants for registers.
enum ZydisSemanticOperandType_ ZydisSemanticOperandType
Defines the ZydisSemanticOperandType enum.
enum ZydisEVEXStaticBroadcast_ ZydisEVEXStaticBroadcast
Defines the ZydisEVEXStaticBroadcast enum.
struct ZydisInstructionDefinition_ ZydisInstructionDefinition
Defines the ZydisInstructionDefinition struct.
ZydisEVEXTupleType_
Defines the ZydisEVEXTupleType enum.
Definition: SharedData.h:365
@ ZYDIS_TUPLETYPE_M128
Mem128.
Definition: SharedData.h:426
@ ZYDIS_TUPLETYPE_GSCAT
Gather / Scatter.
Definition: SharedData.h:398
@ ZYDIS_TUPLETYPE_T1F
Tuple1 Fixed.
Definition: SharedData.h:390
@ ZYDIS_TUPLETYPE_T8
Tuple8.
Definition: SharedData.h:410
@ ZYDIS_TUPLETYPE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:439
@ ZYDIS_TUPLETYPE_QUARTER
Quarter of the vector-length.
Definition: SharedData.h:434
@ ZYDIS_TUPLETYPE_T4
Tuple4.
Definition: SharedData.h:406
@ ZYDIS_TUPLETYPE_T1S
Tuple1 Scalar.
Definition: SharedData.h:386
@ ZYDIS_TUPLETYPE_FV
Full Vector.
Definition: SharedData.h:374
@ ZYDIS_TUPLETYPE_OVM
OctMem.
Definition: SharedData.h:422
@ ZYDIS_TUPLETYPE_FVM
Full Vector Mem.
Definition: SharedData.h:382
@ ZYDIS_TUPLETYPE_NO_SCALE
No CD8 scaling.
Definition: SharedData.h:370
@ ZYDIS_TUPLETYPE_QVM
QuarterMem.
Definition: SharedData.h:418
@ ZYDIS_TUPLETYPE_HV
Half Vector.
Definition: SharedData.h:378
@ ZYDIS_TUPLETYPE_DUP
MOVDDUP.
Definition: SharedData.h:430
@ ZYDIS_TUPLETYPE_INVALID
Definition: SharedData.h:366
@ ZYDIS_TUPLETYPE_HVM
Half Mem.
Definition: SharedData.h:414
@ ZYDIS_TUPLETYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:443
@ ZYDIS_TUPLETYPE_T1_4X
Tuple1 4x32.
Definition: SharedData.h:394
@ ZYDIS_TUPLETYPE_T2
Tuple2.
Definition: SharedData.h:402
enum ZydisMVEXFunctionality_ ZydisMVEXFunctionality
Defines the ZydisMVEXFunctionality enum.
ZydisMVEXFunctionality_
Defines the ZydisMVEXFunctionality enum.
Definition: SharedData.h:452
@ ZYDIS_MVEX_FUNC_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:561
@ ZYDIS_MVEX_FUNC_F_32
No special operation (32bit float elements).
Definition: SharedData.h:472
@ ZYDIS_MVEX_FUNC_SF_64
Sf64(mem).
Definition: SharedData.h:508
@ ZYDIS_MVEX_FUNC_DI_32
Di32.
Definition: SharedData.h:552
@ ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16
Si32(mem) broadcast 4to16 only.
Definition: SharedData.h:520
@ ZYDIS_MVEX_FUNC_SF_32_BCST
Sf32(mem) broadcast only.
Definition: SharedData.h:500
@ ZYDIS_MVEX_FUNC_DF_64
Df64.
Definition: SharedData.h:548
@ ZYDIS_MVEX_FUNC_F_64
No special operation (64bit float elements).
Definition: SharedData.h:480
@ ZYDIS_MVEX_FUNC_SI_32_BCST
Si32(mem) broadcast only.
Definition: SharedData.h:516
@ ZYDIS_MVEX_FUNC_INVALID
MVEX.SSS must be 000b.
Definition: SharedData.h:460
@ ZYDIS_MVEX_FUNC_I_64
No special operation (64bit uint elements).
Definition: SharedData.h:484
@ ZYDIS_MVEX_FUNC_SI_32
Si32(mem).
Definition: SharedData.h:512
@ ZYDIS_MVEX_FUNC_SWIZZLE_64
Sf64(reg) or Si64(reg).
Definition: SharedData.h:492
@ ZYDIS_MVEX_FUNC_SI_64
Si64(mem).
Definition: SharedData.h:524
@ ZYDIS_MVEX_FUNC_I_32
No special operation (32bit uint elements).
Definition: SharedData.h:476
@ ZYDIS_MVEX_FUNC_SF_32
Sf32(mem).
Definition: SharedData.h:496
@ ZYDIS_MVEX_FUNC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:565
@ ZYDIS_MVEX_FUNC_SAE
MVEX.SSS controls sae functionality.
Definition: SharedData.h:468
@ ZYDIS_MVEX_FUNC_SWIZZLE_32
Sf32(reg) or Si32(reg).
Definition: SharedData.h:488
@ ZYDIS_MVEX_FUNC_UI_64
Ui64.
Definition: SharedData.h:540
@ ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16
Sf32(mem) broadcast 4to16 only.
Definition: SharedData.h:504
@ ZYDIS_MVEX_FUNC_DI_64
Di64.
Definition: SharedData.h:556
@ ZYDIS_MVEX_FUNC_DF_32
Df32.
Definition: SharedData.h:544
@ ZYDIS_MVEX_FUNC_UI_32
Ui32.
Definition: SharedData.h:536
@ ZYDIS_MVEX_FUNC_IGNORED
The MVEX.SSS value is ignored.
Definition: SharedData.h:456
@ ZYDIS_MVEX_FUNC_UF_32
Uf32.
Definition: SharedData.h:528
@ ZYDIS_MVEX_FUNC_UF_64
Uf64.
Definition: SharedData.h:532
@ ZYDIS_MVEX_FUNC_RC
MVEX.SSS controls embedded-rounding functionality.
Definition: SharedData.h:464
enum ZydisImplicitMemBase_ ZydisImplicitMemBase
Defines the ZydisImplicitMemBase enum.
ZydisEVEXFunctionality_
Defines the ZydisEVEXFunctionality enum.
Definition: SharedData.h:334
@ ZYDIS_EVEX_FUNC_INVALID
Definition: SharedData.h:335
@ ZYDIS_EVEX_FUNC_SAE
EVEX.b enables sae functionality.
Definition: SharedData.h:347
@ ZYDIS_EVEX_FUNC_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:352
@ ZYDIS_EVEX_FUNC_BC
EVEX.b enables broadcast functionality.
Definition: SharedData.h:339
@ ZYDIS_EVEX_FUNC_RC
EVEX.b enables embedded-rounding functionality.
Definition: SharedData.h:343
@ ZYDIS_EVEX_FUNC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:356
enum ZydisEVEXFunctionality_ ZydisEVEXFunctionality
Defines the ZydisEVEXFunctionality enum.
#define ZYDIS_OPDEF_REQUIRED_BITS
Definition: SharedData.h:705
ZYDIS_NO_EXPORT ZyanBool ZydisGetAccessedFlags(const ZydisInstructionDefinition *definition, const ZydisDefinitionAccessedFlags **flags)
Returns the the operand-definitions for the given instruction-definition.
enum ZydisImplicitRegisterType_ ZydisImplicitRegisterType
Defines the ZydisImplicitRegisterType enum.
ZydisImplicitRegisterType_
Defines the ZydisImplicitRegisterType enum.
Definition: SharedData.h:160
@ ZYDIS_IMPLREG_TYPE_IP_ASZ
Definition: SharedData.h:165
@ ZYDIS_IMPLREG_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:177
@ ZYDIS_IMPLREG_TYPE_GPR_ASZ
Definition: SharedData.h:164
@ ZYDIS_IMPLREG_TYPE_STATIC
Definition: SharedData.h:162
@ ZYDIS_IMPLREG_TYPE_GPR_OSZ
Definition: SharedData.h:163
@ ZYDIS_IMPLREG_TYPE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:173
@ ZYDIS_IMPLREG_TYPE_IP_SSZ
Definition: SharedData.h:166
@ ZYDIS_IMPLREG_TYPE_FLAGS_SSZ
Definition: SharedData.h:168
@ ZYDIS_IMPLREG_TYPE_GPR_SSZ
Definition: SharedData.h:167
ZydisInternalElementType_
Defines the ZydisInternalElementType enum.
Definition: SharedData.h:112
@ ZYDIS_IELEMENT_TYPE_FLOAT16X2
Definition: SharedData.h:135
@ ZYDIS_IELEMENT_TYPE_STRUCT
Definition: SharedData.h:115
@ ZYDIS_IELEMENT_TYPE_FLOAT64
Definition: SharedData.h:137
@ ZYDIS_IELEMENT_TYPE_INT
Definition: SharedData.h:116
@ ZYDIS_IELEMENT_TYPE_FLOAT16
Definition: SharedData.h:134
@ ZYDIS_IELEMENT_TYPE_UINT32
Definition: SharedData.h:130
@ ZYDIS_IELEMENT_TYPE_BFLOAT16X2
Definition: SharedData.h:139
@ ZYDIS_IELEMENT_TYPE_UINT8
Definition: SharedData.h:126
@ ZYDIS_IELEMENT_TYPE_FLOAT80
Definition: SharedData.h:138
@ ZYDIS_IELEMENT_TYPE_UINT16X2
Definition: SharedData.h:129
@ ZYDIS_IELEMENT_TYPE_UINT16
Definition: SharedData.h:128
@ ZYDIS_IELEMENT_TYPE_VARIABLE
Definition: SharedData.h:114
@ ZYDIS_IELEMENT_TYPE_UINT64
Definition: SharedData.h:131
@ ZYDIS_IELEMENT_TYPE_INT8X4
Definition: SharedData.h:120
@ ZYDIS_IELEMENT_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:151
@ ZYDIS_IELEMENT_TYPE_INT128
Definition: SharedData.h:125
@ ZYDIS_IELEMENT_TYPE_UINT8X4
Definition: SharedData.h:127
@ ZYDIS_IELEMENT_TYPE_UINT256
Definition: SharedData.h:133
@ ZYDIS_IELEMENT_TYPE_INT16
Definition: SharedData.h:121
@ ZYDIS_IELEMENT_TYPE_INT16X2
Definition: SharedData.h:122
@ ZYDIS_IELEMENT_TYPE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:147
@ ZYDIS_IELEMENT_TYPE_INT8
Definition: SharedData.h:119
@ ZYDIS_IELEMENT_TYPE_BCD80
Definition: SharedData.h:140
@ ZYDIS_IELEMENT_TYPE_INT32
Definition: SharedData.h:123
@ ZYDIS_IELEMENT_TYPE_UINT
Definition: SharedData.h:117
@ ZYDIS_IELEMENT_TYPE_CC5
Definition: SharedData.h:142
@ ZYDIS_IELEMENT_TYPE_INT1
Definition: SharedData.h:118
@ ZYDIS_IELEMENT_TYPE_FLOAT32
Definition: SharedData.h:136
@ ZYDIS_IELEMENT_TYPE_INT64
Definition: SharedData.h:124
@ ZYDIS_IELEMENT_TYPE_INVALID
Definition: SharedData.h:113
@ ZYDIS_IELEMENT_TYPE_UINT128
Definition: SharedData.h:132
@ ZYDIS_IELEMENT_TYPE_CC3
Definition: SharedData.h:141
ZYDIS_NO_EXPORT const ZydisOperandDetails * ZydisGetOperandDetails(const ZydisOperandDefinition *definition)
Returns pointer to ZydisOperandDetails structure associated with given operand definition.
enum ZydisMaskOverride_ ZydisMaskOverride
Defines the ZydisMaskOverride enum.
struct ZydisInstructionDefinitionVEX_ ZydisInstructionDefinitionVEX
Defines the ZydisInstructionDefinitionVEX struct.
enum ZydisReadWriteAction_ ZydisReadWriteAction
Defines the ZydisReadWriteAction enum.
ZydisInternalElementSize_
Defines the ZydisInternalElementSize enum.
Definition: SharedData.h:310
@ ZYDIS_IELEMENT_SIZE_INVALID
Definition: SharedData.h:311
@ ZYDIS_IELEMENT_SIZE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:321
@ ZYDIS_IELEMENT_SIZE_128
Definition: SharedData.h:316
@ ZYDIS_IELEMENT_SIZE_32
Definition: SharedData.h:314
@ ZYDIS_IELEMENT_SIZE_16
Definition: SharedData.h:313
@ ZYDIS_IELEMENT_SIZE_64
Definition: SharedData.h:315
@ ZYDIS_IELEMENT_SIZE_8
Definition: SharedData.h:312
@ ZYDIS_IELEMENT_SIZE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:325
union ZydisOperandDetails_ ZydisOperandDetails
Defines the ZydisOperandDetails struct.
ZydisVEXStaticBroadcast
Defines the ZydisVEXStaticBroadcast enum.
Definition: SharedData.h:574
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_4
Definition: SharedData.h:577
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:578
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_2
Definition: SharedData.h:576
@ ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:590
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_32
Definition: SharedData.h:580
@ ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:586
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:579
@ ZYDIS_VEX_STATIC_BROADCAST_2_TO_4
Definition: SharedData.h:581
@ ZYDIS_VEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:575
struct ZydisDefinitionAccessedFlags_ ZydisDefinitionAccessedFlags
struct ZydisInstructionDefinition3DNOW_ ZydisInstructionDefinition3DNOW
Defines the ZydisInstructionDefinition3DNOW struct.
ZYDIS_NO_EXPORT void ZydisGetInstructionDefinition(ZydisInstructionEncoding encoding, ZyanU16 id, const ZydisInstructionDefinition **definition)
Returns the instruction-definition with the given encoding and id.
ZYDIS_NO_EXPORT const ZydisOperandDefinition * ZydisGetOperandDefinitions(const ZydisInstructionDefinition *definition)
Returns the the operand-definitions for the given instruction-definition.
enum ZydisInternalVectorLength_ ZydisInternalVectorLength
Defines the ZydisInternalVectorLength enum.
ZydisMaskOverride_
Defines the ZydisMaskOverride enum.
Definition: SharedData.h:688
@ ZYDIS_MASK_OVERRIDE_DEFAULT
Definition: SharedData.h:689
@ ZYDIS_MASK_OVERRIDE_ZEROING
Definition: SharedData.h:690
@ ZYDIS_MASK_OVERRIDE_CONTROL
Definition: SharedData.h:691
@ ZYDIS_MASK_OVERRIDE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:700
@ ZYDIS_MASK_OVERRIDE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:696
ZydisMaskPolicy_
Defines the ZydisMaskPolicy enum.
Definition: SharedData.h:656
@ ZYDIS_MASK_POLICY_INVALID
Definition: SharedData.h:657
@ ZYDIS_MASK_POLICY_FORBIDDEN
The instruction does not allow a mask-register other than the default-mask (K0).
Definition: SharedData.h:670
@ ZYDIS_MASK_POLICY_ALLOWED
The instruction accepts mask-registers other than the default-mask (K0), but does not require them.
Definition: SharedData.h:662
@ ZYDIS_MASK_POLICY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:679
@ ZYDIS_MASK_POLICY_REQUIRED
The instruction requires a mask-register other than the default-mask (K0).
Definition: SharedData.h:666
@ ZYDIS_MASK_POLICY_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:675
enum ZydisEVEXTupleType_ ZydisEVEXTupleType
Defines the ZydisEVEXTupleType enum.
enum ZydisMVEXStaticBroadcast_ ZydisMVEXStaticBroadcast
Defines the ZydisMVEXStaticBroadcast enum.
ZYDIS_NO_EXPORT void ZydisGetElementInfo(ZydisInternalElementType element, ZydisElementType *type, ZydisElementSize *size)
Returns the actual type and size of an internal element-type.
ZydisMVEXStaticBroadcast_
Defines the ZydisMVEXStaticBroadcast enum.
Definition: SharedData.h:632
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8
Definition: SharedData.h:636
@ ZYDIS_MVEX_STATIC_BROADCAST_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:642
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16
Definition: SharedData.h:637
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:635
@ ZYDIS_MVEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:633
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:634
@ ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:646
struct ZydisOperandDefinition_ ZydisOperandDefinition
Defines the ZydisOperandDefinition struct.
ZydisInternalVectorLength_
Defines the ZydisInternalVectorLength enum.
Definition: SharedData.h:288
@ ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:301
@ ZYDIS_IVECTOR_LENGTH_DEFAULT
Definition: SharedData.h:289
@ ZYDIS_IVECTOR_LENGTH_FIXED_256
Definition: SharedData.h:291
@ ZYDIS_IVECTOR_LENGTH_FIXED_128
Definition: SharedData.h:290
@ ZYDIS_IVECTOR_LENGTH_FIXED_512
Definition: SharedData.h:292
@ ZYDIS_IVECTOR_LENGTH_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:297
struct ZydisInstructionDefinitionMVEX_ ZydisInstructionDefinitionMVEX
Defines the ZydisInstructionDefinitionMVEX struct.
ZydisReadWriteAction_
Defines the ZydisReadWriteAction enum.
Definition: SharedData.h:266
@ ZYDIS_RW_ACTION_READ
Definition: SharedData.h:268
@ ZYDIS_RW_ACTION_NONE
Definition: SharedData.h:267
@ ZYDIS_RW_ACTION_READWRITE
Definition: SharedData.h:270
@ ZYDIS_RW_ACTION_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:279
@ ZYDIS_RW_ACTION_WRITE
Definition: SharedData.h:269
@ ZYDIS_RW_ACTION_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:275
ZydisImplicitMemBase_
Defines the ZydisImplicitMemBase enum.
Definition: SharedData.h:186
@ ZYDIS_IMPLMEM_BASE_AGPR_RM
Definition: SharedData.h:189
@ ZYDIS_IMPLMEM_BASE_AGPR_REG
Definition: SharedData.h:188
@ ZYDIS_IMPLMEM_BASE_SBP
Definition: SharedData.h:196
@ ZYDIS_IMPLMEM_BASE_SSP
Definition: SharedData.h:195
@ ZYDIS_IMPLMEM_BASE_ASI
Definition: SharedData.h:193
@ ZYDIS_IMPLMEM_BASE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:201
@ ZYDIS_IMPLMEM_BASE_ABX
Definition: SharedData.h:192
@ ZYDIS_IMPLMEM_BASE_AAX
Definition: SharedData.h:190
@ ZYDIS_IMPLMEM_BASE_ADI
Definition: SharedData.h:194
@ ZYDIS_IMPLMEM_BASE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:205
@ ZYDIS_IMPLMEM_BASE_ADX
Definition: SharedData.h:191
enum ZydisMaskPolicy_ ZydisMaskPolicy
Defines the ZydisMaskPolicy enum.
ZydisSemanticOperandType_
Defines the ZydisSemanticOperandType enum.
Definition: SharedData.h:60
@ ZYDIS_SEMANTIC_OPTYPE_MMX
Definition: SharedData.h:74
@ ZYDIS_SEMANTIC_OPTYPE_ZMM
Definition: SharedData.h:77
@ ZYDIS_SEMANTIC_OPTYPE_BND
Definition: SharedData.h:79
@ ZYDIS_SEMANTIC_OPTYPE_GPR32_32_64
Definition: SharedData.h:70
@ ZYDIS_SEMANTIC_OPTYPE_MEM
Definition: SharedData.h:84
@ ZYDIS_SEMANTIC_OPTYPE_AGEN
Definition: SharedData.h:92
@ ZYDIS_SEMANTIC_OPTYPE_CR
Definition: SharedData.h:81
@ ZYDIS_SEMANTIC_OPTYPE_DR
Definition: SharedData.h:82
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_MEM
Definition: SharedData.h:63
@ ZYDIS_SEMANTIC_OPTYPE_GPR32
Definition: SharedData.h:67
@ ZYDIS_SEMANTIC_OPTYPE_ABS
Definition: SharedData.h:90
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBY
Definition: SharedData.h:86
@ ZYDIS_SEMANTIC_OPTYPE_FPR
Definition: SharedData.h:73
@ ZYDIS_SEMANTIC_OPTYPE_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:99
@ ZYDIS_SEMANTIC_OPTYPE_XMM
Definition: SharedData.h:75
@ ZYDIS_SEMANTIC_OPTYPE_GPR8
Definition: SharedData.h:65
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBX
Definition: SharedData.h:85
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBZ
Definition: SharedData.h:87
@ ZYDIS_SEMANTIC_OPTYPE_GPR16
Definition: SharedData.h:66
@ ZYDIS_SEMANTIC_OPTYPE_MIB
Definition: SharedData.h:94
@ ZYDIS_SEMANTIC_OPTYPE_SREG
Definition: SharedData.h:80
@ ZYDIS_SEMANTIC_OPTYPE_TMM
Definition: SharedData.h:78
@ ZYDIS_SEMANTIC_OPTYPE_IMM
Definition: SharedData.h:88
@ ZYDIS_SEMANTIC_OPTYPE_MOFFS
Definition: SharedData.h:93
@ ZYDIS_SEMANTIC_OPTYPE_GPR64
Definition: SharedData.h:68
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_IMM1
Definition: SharedData.h:64
@ ZYDIS_SEMANTIC_OPTYPE_GPR16_32_32
Definition: SharedData.h:71
@ ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:103
@ ZYDIS_SEMANTIC_OPTYPE_UNUSED
Definition: SharedData.h:61
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG
Definition: SharedData.h:62
@ ZYDIS_SEMANTIC_OPTYPE_GPR16_32_64
Definition: SharedData.h:69
@ ZYDIS_SEMANTIC_OPTYPE_YMM
Definition: SharedData.h:76
@ ZYDIS_SEMANTIC_OPTYPE_REL
Definition: SharedData.h:89
@ ZYDIS_SEMANTIC_OPTYPE_PTR
Definition: SharedData.h:91
@ ZYDIS_SEMANTIC_OPTYPE_MASK
Definition: SharedData.h:83
@ ZYDIS_SEMANTIC_OPTYPE_GPR_ASZ
Definition: SharedData.h:72
struct ZydisInstructionDefinitionXOP_ ZydisInstructionDefinitionXOP
Defines the ZydisInstructionDefinitionXOP struct.
ZYAN_STATIC_ASSERT(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS<=8)
enum ZydisInternalElementType_ ZydisInternalElementType
Defines the ZydisInternalElementType enum.
enum ZydisInternalElementSize_ ZydisInternalElementSize
Defines the ZydisInternalElementSize enum.
struct ZydisInstructionDefinitionEVEX_ ZydisInstructionDefinitionEVEX
Defines the ZydisInstructionDefinitionEVEX struct.
ZydisEVEXStaticBroadcast_
Defines the ZydisEVEXStaticBroadcast enum.
Definition: SharedData.h:600
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4
Definition: SharedData.h:603
@ ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16
Definition: SharedData.h:613
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:605
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8
Definition: SharedData.h:611
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4
Definition: SharedData.h:608
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32
Definition: SharedData.h:606
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16
Definition: SharedData.h:612
@ ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE
Maximum value of this enum.
Definition: SharedData.h:618
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2
Definition: SharedData.h:602
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64
Definition: SharedData.h:607
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8
Definition: SharedData.h:609
@ ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedData.h:622
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:604
@ ZYDIS_EVEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:601
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16
Definition: SharedData.h:610
ZYDIS_NO_EXPORT const ZyanU16 * ZydisGetOperandSizes(const ZydisOperandDefinition *definition)
Returns size table associated with given operand definition.
struct ZydisInstructionDefinitionLEGACY_ ZydisInstructionDefinitionLEGACY
Defines the ZydisInstructionDefinitionLEGACY struct.
Defines decoder/encoder-shared macros and types.
@ ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: SharedTypes.h:325
enum ZydisInstructionEncoding_ ZydisInstructionEncoding
Defines the ZydisInstructionEncoding enum.
@ 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
The minimum number of bits required to represent all values of this bitset.
Definition: SharedTypes.h:400
enum ZydisElementType_ ZydisElementType
Defines the ZydisElementType enum.
ZyanU16 ZydisElementSize
Defines the ZydisElementSize datatype.
Definition: SharedTypes.h:194
Definition: DecoderTypes.h:404
Definition: SharedData.h:915
ZydisAccessedFlags fpu_flags
Definition: SharedData.h:917
ZydisAccessedFlags cpu_flags
Definition: SharedData.h:916
Defines the ZydisInstructionDefinition3DNOW struct.
Definition: SharedData.h:809
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:810
Defines the ZydisInstructionDefinitionEVEX struct.
Definition: SharedData.h:852
ZyanU8 tuple_type ZYAN_BITFIELD(ZYDIS_TUPLETYPE_REQUIRED_BITS)
ZyanU8 has_apx_nf ZYAN_BITFIELD(1)
ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_EVEX_FUNC_REQUIRED_BITS)
ZyanU8 mask_override ZYAN_BITFIELD(ZYDIS_MASK_OVERRIDE_REQUIRED_BITS)
ZyanU8 has_apx_ppx ZYAN_BITFIELD(1)
ZyanU8 vector_length ZYAN_BITFIELD(ZYDIS_IVECTOR_LENGTH_REQUIRED_BITS)
ZyanBool accepts_zero_mask ZYAN_BITFIELD(1)
ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_EVEX_STATIC_BROADCAST_REQUIRED_BITS)
ZyanU8 element_size ZYAN_BITFIELD(ZYDIS_IELEMENT_SIZE_REQUIRED_BITS)
ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS)
ZyanU8 is_eevex ZYAN_BITFIELD(1)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition: SharedData.h:853
ZyanU8 has_apx_zu ZYAN_BITFIELD(1)
Defines the ZydisInstructionDefinitionLEGACY struct.
Definition: SharedData.h:786
ZyanBool accepts_branch_hints ZYAN_BITFIELD(1)
ZyanBool accepts_XACQUIRE ZYAN_BITFIELD(1)
ZyanBool accepts_XRELEASE ZYAN_BITFIELD(1)
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:787
ZyanBool accepts_REPNEREPNZ ZYAN_BITFIELD(1)
ZyanBool accepts_BOUND ZYAN_BITFIELD(1)
ZyanBool accepts_LOCK ZYAN_BITFIELD(1)
ZyanBool accepts_REP ZYAN_BITFIELD(1)
ZyanBool accepts_REPEREPZ ZYAN_BITFIELD(1)
ZyanBool accepts_NOTRACK ZYAN_BITFIELD(1)
ZyanBool accepts_hle_without_lock ZYAN_BITFIELD(1)
ZyanBool is_privileged ZYAN_BITFIELD(1)
Defines the ZydisInstructionDefinitionMVEX struct.
Definition: SharedData.h:885
ZyanBool has_element_granularity ZYAN_BITFIELD(1)
ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_MVEX_STATIC_BROADCAST_REQUIRED_BITS)
ZyanU8 functionality ZYAN_BITFIELD(ZYDIS_MVEX_FUNC_REQUIRED_BITS)
ZyanU8 mask_policy ZYAN_BITFIELD(ZYDIS_MASK_POLICY_REQUIRED_BITS)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition: SharedData.h:886
Defines the ZydisInstructionDefinitionVEX struct.
Definition: SharedData.h:829
ZyanU8 broadcast ZYAN_BITFIELD(ZYDIS_VEX_STATIC_BROADCAST_REQUIRED_BITS)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition: SharedData.h:830
Defines the ZydisInstructionDefinitionXOP struct.
Definition: SharedData.h:817
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR
Definition: SharedData.h:818
Defines the ZydisInstructionDefinition struct.
Definition: SharedData.h:778
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:779
Defines the ZydisOperandDefinition struct.
Definition: SharedData.h:247
ZyanU8 details_reference
Definition: SharedData.h:255
ZyanBool ignore_seg_override ZYAN_BITFIELD(1)
ZyanU8 type ZYAN_BITFIELD(ZYDIS_SEMANTIC_OPTYPE_REQUIRED_BITS)
ZyanU8 element_type ZYAN_BITFIELD(ZYDIS_IELEMENT_TYPE_REQUIRED_BITS)
ZyanBool is_multisource4 ZYAN_BITFIELD(1)
ZyanU8 actions ZYAN_BITFIELD(ZYDIS_OPERAND_ACTION_REQUIRED_BITS)
ZyanU8 visibility ZYAN_BITFIELD(ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS)
ZyanU8 size_reference
Definition: SharedData.h:254
Defines the ZydisOperandDetails struct.
Definition: SharedData.h:225
struct ZydisOperandDetails_::@12 mem
ZyanU8 encoding ZYAN_BITFIELD(ZYDIS_OPERAND_ENCODING_REQUIRED_BITS)
union ZydisOperandDetails_::@11::@13 reg