Zydis  v2.0.1
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 <Zydis/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 bitfields
45 #ifdef ZYDIS_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 
60 
65 {
97 };
98 
103 
108 {
130 };
131 
136 {
142  union
143  {
145  struct
146  {
147  ZydisU8 type ZYDIS_BITFIELD(3);
148  union
149  {
151  ZydisU8 id ZYDIS_BITFIELD(6);
152  } reg;
153  } reg;
154  struct
155  {
156  ZydisU8 seg ZYDIS_BITFIELD(3);
157  ZydisU8 base ZYDIS_BITFIELD(3);
158  } mem;
159  } op;
161 
166 {
174 };
175 
180 {
186 };
187 
188 /* ---------------------------------------------------------------------------------------------- */
189 /* Instruction definition */
190 /* ---------------------------------------------------------------------------------------------- */
191 
196 
201 {
212 
215 };
216 
217 /* ---------------------------------------------------------------------------------------------- */
218 
223 
228 {
233 };
234 
235 /* ---------------------------------------------------------------------------------------------- */
236 
241 
246 {
253 
255 };
256 
257 /* ---------------------------------------------------------------------------------------------- */
258 
263 
268 {
282 };
283 
284 /* ---------------------------------------------------------------------------------------------- */
285 
290 
295 {
357 };
358 
359 /* ---------------------------------------------------------------------------------------------- */
360 
365 
370 {
475 };
476 
477 /* ---------------------------------------------------------------------------------------------- */
478 
483 
488 {
496 
498 };
499 
500 /* ---------------------------------------------------------------------------------------------- */
501 
506 
511 {
525 
527 };
528 
529 /* ---------------------------------------------------------------------------------------------- */
530 
535 
540 {
546 };
547 
548 /* ---------------------------------------------------------------------------------------------- */
549 
554 
559 {
574 };
575 
576 /* ---------------------------------------------------------------------------------------------- */
577 
578 #define ZYDIS_INSTRUCTION_DEFINITION_BASE \
579  ZydisMnemonic mnemonic ZYDIS_BITFIELD(ZYDIS_MNEMONIC_MIN_BITS); \
580  ZydisU8 operandCount ZYDIS_BITFIELD( 4); \
581  ZydisU16 operandReference ZYDIS_BITFIELD(15); \
582  ZydisU8 operandSizeMap ZYDIS_BITFIELD( 3); \
583  ZydisU8 flagsReference ZYDIS_BITFIELD( 7); \
584  ZydisBool requiresProtectedMode ZYDIS_BITFIELD( 1); \
585  ZydisBool acceptsAddressSizeOverride ZYDIS_BITFIELD( 1); \
586  ZydisInstructionCategory category ZYDIS_BITFIELD(ZYDIS_CATEGORY_MIN_BITS); \
587  ZydisISASet isaSet ZYDIS_BITFIELD(ZYDIS_ISA_SET_MIN_BITS); \
588  ZydisISAExt isaExt ZYDIS_BITFIELD(ZYDIS_ISA_EXT_MIN_BITS); \
589  ZydisExceptionClass exceptionClass ZYDIS_BITFIELD( 6); \
590  ZydisRegisterConstraint constrREG ZYDIS_BITFIELD(ZYDIS_REG_CONSTRAINTS_MIN_BITS); \
591  ZydisRegisterConstraint constrRM ZYDIS_BITFIELD(ZYDIS_REG_CONSTRAINTS_MIN_BITS)
592 
593 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR \
594  ZYDIS_INSTRUCTION_DEFINITION_BASE; \
595  ZydisRegisterConstraint constrNDSNDD ZYDIS_BITFIELD(ZYDIS_REG_CONSTRAINTS_MIN_BITS)
596 
597 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL \
598  ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR; \
599  ZydisBool isGather ZYDIS_BITFIELD( 1)
600 
605 {
608 
613 {
615  ZydisBool isPrivileged ZYDIS_BITFIELD( 1);
616  ZydisBool isFarBranch ZYDIS_BITFIELD( 1);
617  ZydisBool acceptsLOCK ZYDIS_BITFIELD( 1);
618  ZydisBool acceptsREP ZYDIS_BITFIELD( 1);
619  ZydisBool acceptsREPEREPZ ZYDIS_BITFIELD( 1);
620  ZydisBool acceptsREPNEREPNZ ZYDIS_BITFIELD( 1);
621  ZydisBool acceptsBOUND ZYDIS_BITFIELD( 1);
622  ZydisBool acceptsXACQUIRE ZYDIS_BITFIELD( 1);
623  ZydisBool acceptsXRELEASE ZYDIS_BITFIELD( 1);
624  ZydisBool acceptsHLEWithoutLock ZYDIS_BITFIELD( 1);
625  ZydisBool acceptsBranchHints ZYDIS_BITFIELD( 1);
626  ZydisBool acceptsSegment ZYDIS_BITFIELD( 1);
628 
633 {
636 
641 {
644 
649 {
653 
654 #ifndef ZYDIS_DISABLE_EVEX
659 {
666  ZydisBool acceptsZeroMask ZYDIS_BITFIELD( 1);
667  ZydisBool isControlMask ZYDIS_BITFIELD( 1);
670 #endif
671 
672 #ifndef ZYDIS_DISABLE_MVEX
677 {
681  ZydisBool hasElementGranularity ZYDIS_BITFIELD( 1);
684 #endif
685 
686 /* ---------------------------------------------------------------------------------------------- */
687 /* Accessed CPU flags */
688 /* ---------------------------------------------------------------------------------------------- */
689 
690 typedef struct ZydisAccessedFlags_
691 {
694 
695 /* ---------------------------------------------------------------------------------------------- */
696 
697 #pragma pack(pop)
698 
699 #ifdef ZYDIS_MSVC
700 # pragma warning(pop)
701 #endif
702 
703 /* ============================================================================================== */
704 /* Functions */
705 /* ============================================================================================== */
706 
707 /* ---------------------------------------------------------------------------------------------- */
708 /* Instruction definition */
709 /* ---------------------------------------------------------------------------------------------- */
710 
720  ZydisU16 id, const ZydisInstructionDefinition** definition);
721 
722 /* ---------------------------------------------------------------------------------------------- */
723 /* Operand definition */
724 /* ---------------------------------------------------------------------------------------------- */
725 
736  const ZydisOperandDefinition** operand);
737 
738 /* ---------------------------------------------------------------------------------------------- */
739 /* Element info */
740 /* ---------------------------------------------------------------------------------------------- */
741 
750  ZydisElementSize* size);
751 
752 /* ---------------------------------------------------------------------------------------------- */
753 /* Accessed CPU flags */
754 /* ---------------------------------------------------------------------------------------------- */
755 
762 ZYDIS_NO_EXPORT void ZydisGetAccessedFlags(const ZydisInstructionDefinition* definition,
763  const ZydisAccessedFlags** flags);
764 
765 /* ---------------------------------------------------------------------------------------------- */
766 
767 /* ============================================================================================== */
768 
769 #ifdef __cplusplus
770 }
771 #endif
772 
773 #endif /* ZYDIS_INTERNAL_SHAREDDATA_H */
uint8_t ZydisU8
Definition: CommonTypes.h:45
ZydisU8 ZydisBool
@briefs Defines the ZydisBool datatype.
Definition: CommonTypes.h:133
uint16_t ZydisU16
Definition: CommonTypes.h:46
Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.
ZydisU8 ZydisCPUFlagAction
Defines the ZydisCPUFlagAction datatype.
Definition: DecoderTypes.h:516
@ ZYDIS_CPUFLAG_MAX_VALUE
Maximum value of this enum.
Definition: DecoderTypes.h:510
General helper and platform detection macros.
@ ZYDIS_REGISTER_MIN_BITS
Minimum amount of bits required to store a value of this enum.
Definition: EnumRegister.h:293
ZydisU8 ZydisRegister
Defines the ZydisRegister datatype.
Definition: EnumRegister.h:4
Mnemonic constant definitions and helper functions.
Utility functions and constants for registers.
ZydisU8 ZydisMVEXFunctionality
Defines the ZydisMVEXFunctionality datatype.
Definition: SharedData.h:364
ZydisU8 ZydisEVEXTupleType
Defines the ZydisEVEXTupleType datatype.
Definition: SharedData.h:289
ZydisImplicitMemBase
Values that represent implicit-memory base-registers.
Definition: SharedData.h:180
@ ZYDIS_IMPLMEM_BASE_ABP
Definition: SharedData.h:183
@ ZYDIS_IMPLMEM_BASE_ASI
Definition: SharedData.h:184
@ ZYDIS_IMPLMEM_BASE_ABX
Definition: SharedData.h:181
@ ZYDIS_IMPLMEM_BASE_ADI
Definition: SharedData.h:185
@ ZYDIS_IMPLMEM_BASE_ASP
Definition: SharedData.h:182
struct ZydisInstructionDefinitionDEFAULT_ ZydisInstructionDefinitionDEFAULT
Defines the ZydisInstructionDefinitionDEFAULT struct.
ZydisInternalElementTypes
Values that represent internal element-types.
Definition: SharedData.h:108
@ ZYDIS_IELEMENT_TYPE_STRUCT
Definition: SharedData.h:111
@ ZYDIS_IELEMENT_TYPE_FLOAT64
Definition: SharedData.h:127
@ ZYDIS_IELEMENT_TYPE_INT
Definition: SharedData.h:112
@ ZYDIS_IELEMENT_TYPE_FLOAT16
Definition: SharedData.h:125
@ ZYDIS_IELEMENT_TYPE_UINT32
Definition: SharedData.h:121
@ ZYDIS_IELEMENT_TYPE_UINT8
Definition: SharedData.h:119
@ ZYDIS_IELEMENT_TYPE_FLOAT80
Definition: SharedData.h:128
@ ZYDIS_IELEMENT_TYPE_UINT16
Definition: SharedData.h:120
@ ZYDIS_IELEMENT_TYPE_VARIABLE
Definition: SharedData.h:110
@ ZYDIS_IELEMENT_TYPE_UINT64
Definition: SharedData.h:122
@ ZYDIS_IELEMENT_TYPE_UINT256
Definition: SharedData.h:124
@ ZYDIS_IELEMENT_TYPE_INT16
Definition: SharedData.h:116
@ ZYDIS_IELEMENT_TYPE_INT8
Definition: SharedData.h:115
@ ZYDIS_IELEMENT_TYPE_BCD80
Definition: SharedData.h:129
@ ZYDIS_IELEMENT_TYPE_INT32
Definition: SharedData.h:117
@ ZYDIS_IELEMENT_TYPE_UINT
Definition: SharedData.h:113
@ ZYDIS_IELEMENT_TYPE_INT1
Definition: SharedData.h:114
@ ZYDIS_IELEMENT_TYPE_FLOAT32
Definition: SharedData.h:126
@ ZYDIS_IELEMENT_TYPE_INT64
Definition: SharedData.h:118
@ ZYDIS_IELEMENT_TYPE_INVALID
Definition: SharedData.h:109
@ ZYDIS_IELEMENT_TYPE_UINT128
Definition: SharedData.h:123
ZydisMVEXFunctionalities
Values that represent MVEX-functionalities.
Definition: SharedData.h:370
@ ZYDIS_MVEX_FUNC_F_32
No special operation (32bit float elements).
Definition: SharedData.h:390
@ ZYDIS_MVEX_FUNC_SF_64
Sf64(mem).
Definition: SharedData.h:426
@ ZYDIS_MVEX_FUNC_DI_32
Di32.
Definition: SharedData.h:470
@ ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16
Si32(mem) broadcast 4to16 only.
Definition: SharedData.h:438
@ ZYDIS_MVEX_FUNC_SF_32_BCST
Sf32(mem) broadcast only.
Definition: SharedData.h:418
@ ZYDIS_MVEX_FUNC_DF_64
Df64.
Definition: SharedData.h:466
@ ZYDIS_MVEX_FUNC_F_64
No special operation (64bit float elements).
Definition: SharedData.h:398
@ ZYDIS_MVEX_FUNC_SI_32_BCST
Si32(mem) broadcast only.
Definition: SharedData.h:434
@ ZYDIS_MVEX_FUNC_INVALID
MVEX.SSS must be 000b.
Definition: SharedData.h:378
@ ZYDIS_MVEX_FUNC_I_64
No special operation (64bit uint elements).
Definition: SharedData.h:402
@ ZYDIS_MVEX_FUNC_SI_32
Si32(mem).
Definition: SharedData.h:430
@ ZYDIS_MVEX_FUNC_SWIZZLE_64
Sf64(reg) or Si64(reg).
Definition: SharedData.h:410
@ ZYDIS_MVEX_FUNC_SI_64
Si64(mem).
Definition: SharedData.h:442
@ ZYDIS_MVEX_FUNC_I_32
No special operation (32bit uint elements).
Definition: SharedData.h:394
@ ZYDIS_MVEX_FUNC_SF_32
Sf32(mem).
Definition: SharedData.h:414
@ ZYDIS_MVEX_FUNC_SAE
MVEX.SSS controls sae functionality.
Definition: SharedData.h:386
@ ZYDIS_MVEX_FUNC_SWIZZLE_32
Sf32(reg) or Si32(reg).
Definition: SharedData.h:406
@ ZYDIS_MVEX_FUNC_UI_64
Ui64.
Definition: SharedData.h:458
@ ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16
Sf32(mem) broadcast 4to16 only.
Definition: SharedData.h:422
@ ZYDIS_MVEX_FUNC_DI_64
Di64.
Definition: SharedData.h:474
@ ZYDIS_MVEX_FUNC_DF_32
Df32.
Definition: SharedData.h:462
@ ZYDIS_MVEX_FUNC_UI_32
Ui32.
Definition: SharedData.h:454
@ ZYDIS_MVEX_FUNC_IGNORED
The MVEX.SSS value is ignored.
Definition: SharedData.h:374
@ ZYDIS_MVEX_FUNC_UF_32
Uf32.
Definition: SharedData.h:446
@ ZYDIS_MVEX_FUNC_UF_64
Uf64.
Definition: SharedData.h:450
@ ZYDIS_MVEX_FUNC_RC
MVEX.SSS controls embedded-rounding functionality.
Definition: SharedData.h:382
struct ZydisInstructionDefinition_ ZydisInstructionDefinition
Defines the ZydisInstructionDefinition struct.
ZydisU8 ZydisMaskPolicy
Defines the ZydisMaskPolicy datatype.
Definition: SharedData.h:553
ZydisInternalElementSizes
Values that represent internal element-sizes.
Definition: SharedData.h:246
@ ZYDIS_IELEMENT_SIZE_INVALID
Definition: SharedData.h:247
@ ZYDIS_IELEMENT_SIZE_MAX_VALUE
Definition: SharedData.h:254
@ ZYDIS_IELEMENT_SIZE_128
Definition: SharedData.h:252
@ ZYDIS_IELEMENT_SIZE_32
Definition: SharedData.h:250
@ ZYDIS_IELEMENT_SIZE_16
Definition: SharedData.h:249
@ ZYDIS_IELEMENT_SIZE_64
Definition: SharedData.h:251
@ ZYDIS_IELEMENT_SIZE_8
Definition: SharedData.h:248
ZydisImplicitRegisterType
Values that represent implicit-register types.
Definition: SharedData.h:166
@ ZYDIS_IMPLREG_TYPE_IP_ASZ
Definition: SharedData.h:171
@ ZYDIS_IMPLREG_TYPE_GPR_ASZ
Definition: SharedData.h:169
@ ZYDIS_IMPLREG_TYPE_STATIC
Definition: SharedData.h:167
@ ZYDIS_IMPLREG_TYPE_GPR_OSZ
Definition: SharedData.h:168
@ ZYDIS_IMPLREG_TYPE_IP_SSZ
Definition: SharedData.h:172
@ ZYDIS_IMPLREG_TYPE_FLAGS_SSZ
Definition: SharedData.h:173
@ ZYDIS_IMPLREG_TYPE_GPR_SSZ
Definition: SharedData.h:170
ZYDIS_NO_EXPORT ZydisU8 ZydisGetOperandDefinitions(const ZydisInstructionDefinition *definition, const ZydisOperandDefinition **operand)
Returns the the operand-definitions for the given instruction-definition.
ZydisRegisterConstraints
Values that represent register-constraints.
Definition: SharedData.h:201
@ ZYDIS_REG_CONSTRAINTS_GPR
Definition: SharedData.h:204
@ ZYDIS_REG_CONSTRAINTS_CR
Definition: SharedData.h:207
@ ZYDIS_REG_CONSTRAINTS_SR
Definition: SharedData.h:206
@ ZYDIS_REG_CONSTRAINTS_VSIB
Definition: SharedData.h:211
@ ZYDIS_REG_CONSTRAINTS_UNUSED
Definition: SharedData.h:202
@ ZYDIS_REG_CONSTRAINTS_BND
Definition: SharedData.h:210
@ ZYDIS_REG_CONSTRAINTS_MAX_VALUE
Definition: SharedData.h:213
@ ZYDIS_REG_CONSTRAINTS_NONE
Definition: SharedData.h:203
@ ZYDIS_REG_CONSTRAINTS_SR_DEST
Definition: SharedData.h:205
@ ZYDIS_REG_CONSTRAINTS_DR
Definition: SharedData.h:208
@ ZYDIS_REG_CONSTRAINTS_MASK
Definition: SharedData.h:209
@ ZYDIS_REG_CONSTRAINTS_MIN_BITS
Definition: SharedData.h:214
ZydisEVEXStaticBroadcasts
Values that represent static EVEX-broadcasts.
Definition: SharedData.h:511
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4
Definition: SharedData.h:514
@ ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16
Definition: SharedData.h:524
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:516
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8
Definition: SharedData.h:522
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4
Definition: SharedData.h:519
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32
Definition: SharedData.h:517
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16
Definition: SharedData.h:523
@ ZYDIS_EVEX_STATIC_BROADCAST_MAX_VALUE
Definition: SharedData.h:526
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2
Definition: SharedData.h:513
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64
Definition: SharedData.h:518
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8
Definition: SharedData.h:520
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:515
@ ZYDIS_EVEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:512
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16
Definition: SharedData.h:521
ZydisVEXStaticBroadcasts
Values that represent static VEX-broadcasts.
Definition: SharedData.h:488
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_4
Definition: SharedData.h:491
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:492
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_2
Definition: SharedData.h:490
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_32
Definition: SharedData.h:494
@ ZYDIS_VEX_STATIC_BROADCAST_MAX_VALUE
Definition: SharedData.h:497
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:493
@ ZYDIS_VEX_STATIC_BROADCAST_2_TO_4
Definition: SharedData.h:495
@ ZYDIS_VEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:489
ZydisEVEXTupleTypes
Values that represent EVEX tuple-types.
Definition: SharedData.h:295
@ ZYDIS_TUPLETYPE_M128
Mem128.
Definition: SharedData.h:352
@ ZYDIS_TUPLETYPE_GSCAT
Gather / Scatter.
Definition: SharedData.h:324
@ ZYDIS_TUPLETYPE_T1F
Tuple1 Fixed.
Definition: SharedData.h:316
@ ZYDIS_TUPLETYPE_T8
Tuple8.
Definition: SharedData.h:336
@ ZYDIS_TUPLETYPE_T4
Tuple4.
Definition: SharedData.h:332
@ ZYDIS_TUPLETYPE_T1S
Tuple1 Scalar.
Definition: SharedData.h:312
@ ZYDIS_TUPLETYPE_FV
Full Vector.
Definition: SharedData.h:300
@ ZYDIS_TUPLETYPE_OVM
OctMem.
Definition: SharedData.h:348
@ ZYDIS_TUPLETYPE_FVM
Full Vector Mem.
Definition: SharedData.h:308
@ ZYDIS_TUPLETYPE_QVM
QuarterMem.
Definition: SharedData.h:344
@ ZYDIS_TUPLETYPE_HV
Half Vector.
Definition: SharedData.h:304
@ ZYDIS_TUPLETYPE_DUP
MOVDDUP.
Definition: SharedData.h:356
@ ZYDIS_TUPLETYPE_INVALID
Definition: SharedData.h:296
@ ZYDIS_TUPLETYPE_HVM
Half Mem.
Definition: SharedData.h:340
@ ZYDIS_TUPLETYPE_T1_4X
Tuple1 4x32.
Definition: SharedData.h:320
@ ZYDIS_TUPLETYPE_T2
Tuple2.
Definition: SharedData.h:328
ZydisU8 ZydisInternalVectorLength
Defines the ZydisInternalVectorLength datatype.
Definition: SharedData.h:222
ZydisU8 ZydisInternalElementSize
Defines the ZydisInternalElementSize datatype.
Definition: SharedData.h:240
struct ZydisInstructionDefinitionVEX_ ZydisInstructionDefinitionVEX
Defines the ZydisInstructionDefinitionVEX struct.
ZydisMaskPolicies
Values that represent AVX mask policies.
Definition: SharedData.h:559
@ ZYDIS_MASK_POLICY_INVALID
Definition: SharedData.h:560
@ ZYDIS_MASK_POLICY_FORBIDDEN
The instruction does not allow a mask-register other than the default-mask (K0).
Definition: SharedData.h:573
@ ZYDIS_MASK_POLICY_ALLOWED
The instruction accepts mask-registers other than the default-mask (K0), but does not require them.
Definition: SharedData.h:565
@ ZYDIS_MASK_POLICY_REQUIRED
The instruction requires a mask-register other than the default-mask (K0).
Definition: SharedData.h:569
struct ZydisInstructionDefinition3DNOW_ ZydisInstructionDefinition3DNOW
Defines the ZydisInstructionDefinition3DNOW struct.
ZydisEVEXFunctionalities
Values that represent EVEX-functionalities.
Definition: SharedData.h:268
@ ZYDIS_EVEX_FUNC_INVALID
Definition: SharedData.h:269
@ ZYDIS_EVEX_FUNC_SAE
EVEX.b enables sae functionality.
Definition: SharedData.h:281
@ ZYDIS_EVEX_FUNC_BC
EVEX.b enables broadcast functionality.
Definition: SharedData.h:273
@ ZYDIS_EVEX_FUNC_RC
EVEX.b enables embedded-rounding functionality.
Definition: SharedData.h:277
ZYDIS_NO_EXPORT void ZydisGetInstructionDefinition(ZydisInstructionEncoding encoding, ZydisU16 id, const ZydisInstructionDefinition **definition)
Returns the instruction-definition with the given encoding and id.
ZydisU8 ZydisVEXStaticBroadcast
Defines the ZydisVEXStaticBroadcast datatype.
Definition: SharedData.h:482
ZydisU8 ZydisInternalElementType
Defines the ZydisInternalElementType datatype.
Definition: SharedData.h:102
ZYDIS_NO_EXPORT void ZydisGetAccessedFlags(const ZydisInstructionDefinition *definition, const ZydisAccessedFlags **flags)
Returns the the operand-definitions for the given instruction-definition.
ZYDIS_NO_EXPORT void ZydisGetElementInfo(ZydisInternalElementType element, ZydisElementType *type, ZydisElementSize *size)
Returns the actual type and size of an internal element-type.
ZydisU8 ZydisRegisterConstraint
Defines the ZydisRegisterConstraint datatype.
Definition: SharedData.h:195
struct ZydisOperandDefinition_ ZydisOperandDefinition
Defines the ZydisOperandDefinition struct.
struct ZydisInstructionDefinitionMVEX_ ZydisInstructionDefinitionMVEX
Defines the ZydisInstructionDefinitionMVEX struct.
ZydisU8 ZydisMVEXStaticBroadcast
Defines the ZydisMVEXStaticBroadcast datatype.
Definition: SharedData.h:534
ZydisU8 ZydisEVEXStaticBroadcast
Defines the ZydisEVEXStaticBroadcast datatype.
Definition: SharedData.h:505
struct ZydisInstructionDefinitionXOP_ ZydisInstructionDefinitionXOP
Defines the ZydisInstructionDefinitionXOP struct.
struct ZydisAccessedFlags_ ZydisAccessedFlags
struct ZydisInstructionDefinitionEVEX_ ZydisInstructionDefinitionEVEX
Defines the ZydisInstructionDefinitionEVEX struct.
ZydisSemanticOperandTypes
Values that represent semantic operand-types.
Definition: SharedData.h:65
@ ZYDIS_SEMANTIC_OPTYPE_MMX
Definition: SharedData.h:78
@ ZYDIS_SEMANTIC_OPTYPE_ZMM
Definition: SharedData.h:81
@ ZYDIS_SEMANTIC_OPTYPE_BND
Definition: SharedData.h:82
@ ZYDIS_SEMANTIC_OPTYPE_GPR32_32_64
Definition: SharedData.h:75
@ ZYDIS_SEMANTIC_OPTYPE_MEM
Definition: SharedData.h:87
@ ZYDIS_SEMANTIC_OPTYPE_AGEN
Definition: SharedData.h:94
@ ZYDIS_SEMANTIC_OPTYPE_CR
Definition: SharedData.h:84
@ ZYDIS_SEMANTIC_OPTYPE_DR
Definition: SharedData.h:85
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_MEM
Definition: SharedData.h:68
@ ZYDIS_SEMANTIC_OPTYPE_GPR32
Definition: SharedData.h:72
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBY
Definition: SharedData.h:89
@ ZYDIS_SEMANTIC_OPTYPE_FPR
Definition: SharedData.h:77
@ ZYDIS_SEMANTIC_OPTYPE_XMM
Definition: SharedData.h:79
@ ZYDIS_SEMANTIC_OPTYPE_GPR8
Definition: SharedData.h:70
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBX
Definition: SharedData.h:88
@ ZYDIS_SEMANTIC_OPTYPE_MEM_VSIBZ
Definition: SharedData.h:90
@ ZYDIS_SEMANTIC_OPTYPE_GPR16
Definition: SharedData.h:71
@ ZYDIS_SEMANTIC_OPTYPE_MIB
Definition: SharedData.h:96
@ ZYDIS_SEMANTIC_OPTYPE_SREG
Definition: SharedData.h:83
@ ZYDIS_SEMANTIC_OPTYPE_IMM
Definition: SharedData.h:91
@ ZYDIS_SEMANTIC_OPTYPE_MOFFS
Definition: SharedData.h:95
@ ZYDIS_SEMANTIC_OPTYPE_GPR64
Definition: SharedData.h:73
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_IMM1
Definition: SharedData.h:69
@ ZYDIS_SEMANTIC_OPTYPE_GPR16_32_32
Definition: SharedData.h:76
@ ZYDIS_SEMANTIC_OPTYPE_UNUSED
Definition: SharedData.h:66
@ ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG
Definition: SharedData.h:67
@ ZYDIS_SEMANTIC_OPTYPE_GPR16_32_64
Definition: SharedData.h:74
@ ZYDIS_SEMANTIC_OPTYPE_YMM
Definition: SharedData.h:80
@ ZYDIS_SEMANTIC_OPTYPE_REL
Definition: SharedData.h:92
@ ZYDIS_SEMANTIC_OPTYPE_PTR
Definition: SharedData.h:93
@ ZYDIS_SEMANTIC_OPTYPE_MASK
Definition: SharedData.h:86
ZydisInternalVectorLengths
Values that represent internal vector-lengths.
Definition: SharedData.h:228
@ ZYDIS_IVECTOR_LENGTH_DEFAULT
Definition: SharedData.h:229
@ ZYDIS_IVECTOR_LENGTH_FIXED_256
Definition: SharedData.h:231
@ ZYDIS_IVECTOR_LENGTH_FIXED_128
Definition: SharedData.h:230
@ ZYDIS_IVECTOR_LENGTH_FIXED_512
Definition: SharedData.h:232
ZydisU8 ZydisEVEXFunctionality
Defines the ZydisEVEXFunctionality datatype.
Definition: SharedData.h:262
ZydisU8 ZydisSemanticOperandType
Defines the ZydisSemanticOperandType datatype.
Definition: SharedData.h:59
ZydisMVEXStaticBroadcasts
Values that represent static MVEX-broadcasts.
Definition: SharedData.h:540
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8
Definition: SharedData.h:544
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16
Definition: SharedData.h:545
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:543
@ ZYDIS_MVEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:541
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:542
Defines decoder/encoder-shared macros and types.
ZydisU8 ZydisOperandEncoding
Defines the ZydisOperandEncoding datatype.
Definition: SharedTypes.h:212
ZydisU8 ZydisInstructionEncoding
Defines the ZydisInstructionEncoding datatype.
Definition: SharedTypes.h:365
ZydisU16 ZydisElementSize
Defines the ZydisElementSize datatype.
Definition: SharedTypes.h:162
ZydisU8 ZydisElementType
Defines the ZydisElementType datatype.
Definition: SharedTypes.h:136
ZydisU8 ZydisOperandVisibility
Defines the ZydisOperandVisibility datatype.
Definition: SharedTypes.h:268
ZydisU8 ZydisOperandAction
Defines the ZydisOperandAction datatype.
Definition: SharedTypes.h:302
Definition: SharedData.h:691
ZydisCPUFlagAction action[ZYDIS_CPUFLAG_MAX_VALUE+1]
Definition: SharedData.h:692
Defines the ZydisInstructionDefinition3DNOW struct.
Definition: SharedData.h:633
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:634
Defines the ZydisInstructionDefinitionDEFAULT struct.
Definition: SharedData.h:613
ZydisBool acceptsREPNEREPNZ ZYDIS_BITFIELD(1)
ZydisBool acceptsREP ZYDIS_BITFIELD(1)
ZydisBool acceptsXACQUIRE ZYDIS_BITFIELD(1)
ZydisBool acceptsXRELEASE ZYDIS_BITFIELD(1)
ZydisBool acceptsBOUND ZYDIS_BITFIELD(1)
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:614
ZydisBool acceptsHLEWithoutLock ZYDIS_BITFIELD(1)
ZydisBool acceptsREPEREPZ ZYDIS_BITFIELD(1)
ZydisBool acceptsBranchHints ZYDIS_BITFIELD(1)
ZydisBool acceptsSegment ZYDIS_BITFIELD(1)
ZydisBool isFarBranch ZYDIS_BITFIELD(1)
ZydisBool isPrivileged ZYDIS_BITFIELD(1)
ZydisBool acceptsLOCK ZYDIS_BITFIELD(1)
Defines the ZydisInstructionDefinitionEVEX struct.
Definition: SharedData.h:659
ZydisInternalElementSize elementSize ZYDIS_BITFIELD(3)
ZydisBool acceptsZeroMask ZYDIS_BITFIELD(1)
ZydisEVEXStaticBroadcast broadcast ZYDIS_BITFIELD(4)
ZydisBool isControlMask ZYDIS_BITFIELD(1)
ZydisMaskPolicy maskPolicy ZYDIS_BITFIELD(2)
ZydisEVEXTupleType tupleType ZYDIS_BITFIELD(4)
ZydisInternalVectorLength vectorLength ZYDIS_BITFIELD(2)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition: SharedData.h:660
ZydisEVEXFunctionality functionality ZYDIS_BITFIELD(2)
Defines the ZydisInstructionDefinitionMVEX struct.
Definition: SharedData.h:677
ZydisBool hasElementGranularity ZYDIS_BITFIELD(1)
ZydisMVEXStaticBroadcast broadcast ZYDIS_BITFIELD(3)
ZydisMaskPolicy maskPolicy ZYDIS_BITFIELD(2)
ZydisMVEXFunctionality functionality ZYDIS_BITFIELD(5)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition: SharedData.h:678
Defines the ZydisInstructionDefinitionVEX struct.
Definition: SharedData.h:649
ZydisVEXStaticBroadcast broadcast ZYDIS_BITFIELD(3)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_INTEL
Definition: SharedData.h:650
Defines the ZydisInstructionDefinitionXOP struct.
Definition: SharedData.h:641
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR
Definition: SharedData.h:642
Defines the ZydisInstructionDefinition struct.
Definition: SharedData.h:605
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:606
Defines the ZydisOperandDefinition struct.
Definition: SharedData.h:136
ZydisOperandAction action ZYDIS_BITFIELD(3)
ZydisOperandEncoding encoding
Definition: SharedData.h:144
union ZydisOperandDefinition_::@28 op
ZydisOperandVisibility visibility ZYDIS_BITFIELD(2)
union ZydisOperandDefinition_::@28::@29::@31 reg
ZydisInternalElementType elementType ZYDIS_BITFIELD(5)
ZydisU16 size[3]
Definition: SharedData.h:140
struct ZydisOperandDefinition_::@28::@30 mem
ZydisSemanticOperandType type ZYDIS_BITFIELD(5)