Zydis  v2.0.0-beta1
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 {
206 };
207 
208 /* ---------------------------------------------------------------------------------------------- */
209 
214 
219 {
226 };
227 
228 /* ---------------------------------------------------------------------------------------------- */
229 
234 
239 {
253 };
254 
255 /* ---------------------------------------------------------------------------------------------- */
256 
261 
266 {
328 };
329 
330 /* ---------------------------------------------------------------------------------------------- */
331 
336 
341 {
446 };
447 
448 /* ---------------------------------------------------------------------------------------------- */
449 
454 
459 {
467 };
468 
469 /* ---------------------------------------------------------------------------------------------- */
470 
475 
480 {
494 };
495 
496 /* ---------------------------------------------------------------------------------------------- */
497 
502 
507 {
513 };
514 
515 /* ---------------------------------------------------------------------------------------------- */
516 
521 
526 {
541 };
542 
543 /* ---------------------------------------------------------------------------------------------- */
544 
545 #define ZYDIS_INSTRUCTION_DEFINITION_BASE \
546  ZydisMnemonic mnemonic ZYDIS_BITFIELD(ZYDIS_MNEMONIC_MIN_BITS); \
547  ZydisU8 operandCount ZYDIS_BITFIELD( 4); \
548  ZydisU16 operandReference ZYDIS_BITFIELD(15); \
549  ZydisU8 operandSizeMap ZYDIS_BITFIELD( 3); \
550  ZydisU8 flagsReference ZYDIS_BITFIELD( 7); \
551  ZydisBool requiresProtectedMode ZYDIS_BITFIELD( 1); \
552  ZydisBool acceptsAddressSizeOverride ZYDIS_BITFIELD( 1); \
553  ZydisInstructionCategory category ZYDIS_BITFIELD(ZYDIS_CATEGORY_MIN_BITS); \
554  ZydisISASet isaSet ZYDIS_BITFIELD(ZYDIS_ISA_SET_MIN_BITS); \
555  ZydisISAExt isaExt ZYDIS_BITFIELD(ZYDIS_ISA_EXT_MIN_BITS); \
556  ZydisExceptionClass exceptionClass ZYDIS_BITFIELD( 6)
557 
558 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR \
559  ZYDIS_INSTRUCTION_DEFINITION_BASE; \
560  ZydisBool hasNDSNDDOperand ZYDIS_BITFIELD( 1)
561 
562 #define ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_EX \
563  ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR; \
564  ZydisBool hasVSIB ZYDIS_BITFIELD( 1)
565 
570 {
573 
575 {
577  ZydisBool isPrivileged ZYDIS_BITFIELD( 1);
578  ZydisBool isFarBranch ZYDIS_BITFIELD( 1);
579  ZydisBool acceptsLock ZYDIS_BITFIELD( 1);
580  ZydisBool acceptsREP ZYDIS_BITFIELD( 1);
581  ZydisBool acceptsREPEREPZ ZYDIS_BITFIELD( 1);
582  ZydisBool acceptsREPNEREPNZ ZYDIS_BITFIELD( 1);
583  ZydisBool acceptsBOUND ZYDIS_BITFIELD( 1);
584  ZydisBool acceptsXACQUIRE ZYDIS_BITFIELD( 1);
585  ZydisBool acceptsXRELEASE ZYDIS_BITFIELD( 1);
586  ZydisBool acceptsHLEWithoutLock ZYDIS_BITFIELD( 1);
587  ZydisBool acceptsBranchHints ZYDIS_BITFIELD( 1);
588  ZydisBool acceptsSegment ZYDIS_BITFIELD( 1);
590 
592 {
595 
597 {
600 
602 {
606 
607 #ifndef ZYDIS_DISABLE_EVEX
609 {
616  ZydisBool acceptsZeroMask ZYDIS_BITFIELD( 1);
617  ZydisBool isControlMask ZYDIS_BITFIELD( 1);
620 #endif
621 
622 #ifndef ZYDIS_DISABLE_MVEX
624 {
628  ZydisBool hasElementGranularity ZYDIS_BITFIELD( 1);
631 #endif
632 
633 /* ---------------------------------------------------------------------------------------------- */
634 /* Accessed CPU flags */
635 /* ---------------------------------------------------------------------------------------------- */
636 
637 typedef struct ZydisAccessedFlags_
638 {
641 
642 /* ---------------------------------------------------------------------------------------------- */
643 
644 #pragma pack(pop)
645 
646 #ifdef ZYDIS_MSVC
647 # pragma warning(pop)
648 #endif
649 
650 /* ============================================================================================== */
651 /* Functions */
652 /* ============================================================================================== */
653 
654 /* ---------------------------------------------------------------------------------------------- */
655 /* Instruction definition */
656 /* ---------------------------------------------------------------------------------------------- */
657 
667  ZydisU16 id, const ZydisInstructionDefinition** definition);
668 
669 /* ---------------------------------------------------------------------------------------------- */
670 /* Operand definition */
671 /* ---------------------------------------------------------------------------------------------- */
672 
683  const ZydisOperandDefinition** operand);
684 
685 /* ---------------------------------------------------------------------------------------------- */
686 /* Element info */
687 /* ---------------------------------------------------------------------------------------------- */
688 
697  ZydisElementSize* size);
698 
699 /* ---------------------------------------------------------------------------------------------- */
700 /* Accessed CPU flags */
701 /* ---------------------------------------------------------------------------------------------- */
702 
709 ZYDIS_NO_EXPORT void ZydisGetAccessedFlags(const ZydisInstructionDefinition* definition,
710  const ZydisAccessedFlags** flags);
711 
712 /* ---------------------------------------------------------------------------------------------- */
713 
714 /* ============================================================================================== */
715 
716 #ifdef __cplusplus
717 }
718 #endif
719 
720 #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:511
@ ZYDIS_CPUFLAG_MAX_VALUE
Maximum value of this enum.
Definition: DecoderTypes.h:505
General helper and platform detection macros.
Mnemonic constant definitions and helper functions.
Utility functions and constants for registers.
@ ZYDIS_REGISTER_MIN_BITS
Minimum amount of bits required to store a value of this enum.
Definition: Register.h:155
ZydisU8 ZydisRegister
Defines the ZydisRegister datatype.
Definition: Register.h:54
ZydisU8 ZydisMVEXFunctionality
Defines the ZydisMVEXFunctionality datatype.
Definition: SharedData.h:335
ZydisU8 ZydisEVEXTupleType
Defines the ZydisEVEXTupleType datatype.
Definition: SharedData.h:260
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
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:341
@ ZYDIS_MVEX_FUNC_F_32
No special operation (32bit float elements).
Definition: SharedData.h:361
@ ZYDIS_MVEX_FUNC_SF_64
Sf64(mem).
Definition: SharedData.h:397
@ ZYDIS_MVEX_FUNC_DI_32
Di32.
Definition: SharedData.h:441
@ ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16
Si32(mem) broadcast 4to16 only.
Definition: SharedData.h:409
@ ZYDIS_MVEX_FUNC_SF_32_BCST
Sf32(mem) broadcast only.
Definition: SharedData.h:389
@ ZYDIS_MVEX_FUNC_DF_64
Df64.
Definition: SharedData.h:437
@ ZYDIS_MVEX_FUNC_F_64
No special operation (64bit float elements).
Definition: SharedData.h:369
@ ZYDIS_MVEX_FUNC_SI_32_BCST
Si32(mem) broadcast only.
Definition: SharedData.h:405
@ ZYDIS_MVEX_FUNC_INVALID
MVEX.SSS must be 000b.
Definition: SharedData.h:349
@ ZYDIS_MVEX_FUNC_I_64
No special operation (64bit uint elements).
Definition: SharedData.h:373
@ ZYDIS_MVEX_FUNC_SI_32
Si32(mem).
Definition: SharedData.h:401
@ ZYDIS_MVEX_FUNC_SWIZZLE_64
Sf64(reg) or Si64(reg).
Definition: SharedData.h:381
@ ZYDIS_MVEX_FUNC_SI_64
Si64(mem).
Definition: SharedData.h:413
@ ZYDIS_MVEX_FUNC_I_32
No special operation (32bit uint elements).
Definition: SharedData.h:365
@ ZYDIS_MVEX_FUNC_SF_32
Sf32(mem).
Definition: SharedData.h:385
@ ZYDIS_MVEX_FUNC_SAE
MVEX.SSS controls sae functionality.
Definition: SharedData.h:357
@ ZYDIS_MVEX_FUNC_SWIZZLE_32
Sf32(reg) or Si32(reg).
Definition: SharedData.h:377
@ ZYDIS_MVEX_FUNC_UI_64
Ui64.
Definition: SharedData.h:429
@ ZYDIS_MVEX_FUNC_SF_32_BCST_4TO16
Sf32(mem) broadcast 4to16 only.
Definition: SharedData.h:393
@ ZYDIS_MVEX_FUNC_DI_64
Di64.
Definition: SharedData.h:445
@ ZYDIS_MVEX_FUNC_DF_32
Df32.
Definition: SharedData.h:433
@ ZYDIS_MVEX_FUNC_UI_32
Ui32.
Definition: SharedData.h:425
@ ZYDIS_MVEX_FUNC_IGNORED
The MVEX.SSS value is ignored.
Definition: SharedData.h:345
@ ZYDIS_MVEX_FUNC_UF_32
Uf32.
Definition: SharedData.h:417
@ ZYDIS_MVEX_FUNC_UF_64
Uf64.
Definition: SharedData.h:421
@ ZYDIS_MVEX_FUNC_RC
MVEX.SSS controls embedded-rounding functionality.
Definition: SharedData.h:353
struct ZydisInstructionDefinition_ ZydisInstructionDefinition
Defines the ZydisInstructionDefinition struct.
ZydisU8 ZydisMaskPolicy
Defines the ZydisMaskPolicy datatype.
Definition: SharedData.h:520
ZydisInternalElementSizes
Values that represent internal element-sizes.
Definition: SharedData.h:219
@ ZYDIS_IELEMENT_SIZE_INVALID
Definition: SharedData.h:220
@ ZYDIS_IELEMENT_SIZE_128
Definition: SharedData.h:225
@ ZYDIS_IELEMENT_SIZE_32
Definition: SharedData.h:223
@ ZYDIS_IELEMENT_SIZE_16
Definition: SharedData.h:222
@ ZYDIS_IELEMENT_SIZE_64
Definition: SharedData.h:224
@ ZYDIS_IELEMENT_SIZE_8
Definition: SharedData.h:221
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.
ZydisEVEXStaticBroadcasts
Values that represent static EVEX-broadcasts.
Definition: SharedData.h:480
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_4
Definition: SharedData.h:483
@ ZYDIS_EVEX_STATIC_BROADCAST_8_TO_16
Definition: SharedData.h:493
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:485
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_8
Definition: SharedData.h:491
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_4
Definition: SharedData.h:488
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_32
Definition: SharedData.h:486
@ ZYDIS_EVEX_STATIC_BROADCAST_4_TO_16
Definition: SharedData.h:492
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_2
Definition: SharedData.h:482
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_64
Definition: SharedData.h:487
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_8
Definition: SharedData.h:489
@ ZYDIS_EVEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:484
@ ZYDIS_EVEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:481
@ ZYDIS_EVEX_STATIC_BROADCAST_2_TO_16
Definition: SharedData.h:490
ZydisVEXStaticBroadcasts
Values that represent static VEX-broadcasts.
Definition: SharedData.h:459
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_4
Definition: SharedData.h:462
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:463
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_2
Definition: SharedData.h:461
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_32
Definition: SharedData.h:465
@ ZYDIS_VEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:464
@ ZYDIS_VEX_STATIC_BROADCAST_2_TO_4
Definition: SharedData.h:466
@ ZYDIS_VEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:460
ZydisEVEXTupleTypes
Values that represent EVEX tuple-types.
Definition: SharedData.h:266
@ ZYDIS_TUPLETYPE_M128
Mem128.
Definition: SharedData.h:323
@ ZYDIS_TUPLETYPE_GSCAT
Gather / Scatter.
Definition: SharedData.h:295
@ ZYDIS_TUPLETYPE_T1F
Tuple1 Fixed.
Definition: SharedData.h:287
@ ZYDIS_TUPLETYPE_T8
Tuple8.
Definition: SharedData.h:307
@ ZYDIS_TUPLETYPE_T4
Tuple4.
Definition: SharedData.h:303
@ ZYDIS_TUPLETYPE_T1S
Tuple1 Scalar.
Definition: SharedData.h:283
@ ZYDIS_TUPLETYPE_FV
Full Vector.
Definition: SharedData.h:271
@ ZYDIS_TUPLETYPE_OVM
OctMem.
Definition: SharedData.h:319
@ ZYDIS_TUPLETYPE_FVM
Full Vector Mem.
Definition: SharedData.h:279
@ ZYDIS_TUPLETYPE_QVM
QuarterMem.
Definition: SharedData.h:315
@ ZYDIS_TUPLETYPE_HV
Half Vector.
Definition: SharedData.h:275
@ ZYDIS_TUPLETYPE_DUP
MOVDDUP.
Definition: SharedData.h:327
@ ZYDIS_TUPLETYPE_INVALID
Definition: SharedData.h:267
@ ZYDIS_TUPLETYPE_HVM
Half Mem.
Definition: SharedData.h:311
@ ZYDIS_TUPLETYPE_T1_4X
Tuple1 4x32.
Definition: SharedData.h:291
@ ZYDIS_TUPLETYPE_T2
Tuple2.
Definition: SharedData.h:299
ZydisU8 ZydisInternalVectorLength
Defines the ZydisInternalVectorLength datatype.
Definition: SharedData.h:195
ZydisU8 ZydisInternalElementSize
Defines the ZydisInternalElementSize datatype.
Definition: SharedData.h:213
struct ZydisInstructionDefinitionVEX_ ZydisInstructionDefinitionVEX
ZydisMaskPolicies
Values that represent AVX mask policies.
Definition: SharedData.h:526
@ ZYDIS_MASK_POLICY_INVALID
Definition: SharedData.h:527
@ ZYDIS_MASK_POLICY_FORBIDDEN
The instruction does not allow a mask-register other than the default-mask (K0).
Definition: SharedData.h:540
@ ZYDIS_MASK_POLICY_ALLOWED
The instruction accepts mask-registers other than the default-mask (K0), but does not require them.
Definition: SharedData.h:532
@ ZYDIS_MASK_POLICY_REQUIRED
The instruction requires a mask-register other than the default-mask (K0).
Definition: SharedData.h:536
struct ZydisInstructionDefinition3DNOW_ ZydisInstructionDefinition3DNOW
ZydisEVEXFunctionalities
Values that represent EVEX-functionalities.
Definition: SharedData.h:239
@ ZYDIS_EVEX_FUNC_INVALID
Definition: SharedData.h:240
@ ZYDIS_EVEX_FUNC_SAE
EVEX.b enables sae functionality.
Definition: SharedData.h:252
@ ZYDIS_EVEX_FUNC_BC
EVEX.b enables broadcast functionality.
Definition: SharedData.h:244
@ ZYDIS_EVEX_FUNC_RC
EVEX.b enables embedded-rounding functionality.
Definition: SharedData.h:248
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:453
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.
struct ZydisOperandDefinition_ ZydisOperandDefinition
Defines the ZydisOperandDefinition struct.
struct ZydisInstructionDefinitionMVEX_ ZydisInstructionDefinitionMVEX
ZydisU8 ZydisMVEXStaticBroadcast
Defines the ZydisMVEXStaticBroadcast datatype.
Definition: SharedData.h:501
ZydisU8 ZydisEVEXStaticBroadcast
Defines the ZydisEVEXStaticBroadcast datatype.
Definition: SharedData.h:474
struct ZydisInstructionDefinitionXOP_ ZydisInstructionDefinitionXOP
struct ZydisAccessedFlags_ ZydisAccessedFlags
struct ZydisInstructionDefinitionEVEX_ ZydisInstructionDefinitionEVEX
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:201
@ ZYDIS_IVECTOR_LENGTH_DEFAULT
Definition: SharedData.h:202
@ ZYDIS_IVECTOR_LENGTH_FIXED_256
Definition: SharedData.h:204
@ ZYDIS_IVECTOR_LENGTH_FIXED_128
Definition: SharedData.h:203
@ ZYDIS_IVECTOR_LENGTH_FIXED_512
Definition: SharedData.h:205
ZydisU8 ZydisEVEXFunctionality
Defines the ZydisEVEXFunctionality datatype.
Definition: SharedData.h:233
ZydisU8 ZydisSemanticOperandType
Defines the ZydisSemanticOperandType datatype.
Definition: SharedData.h:59
ZydisMVEXStaticBroadcasts
Values that represent static MVEX-broadcasts.
Definition: SharedData.h:507
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_8
Definition: SharedData.h:511
@ ZYDIS_MVEX_STATIC_BROADCAST_4_TO_16
Definition: SharedData.h:512
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16
Definition: SharedData.h:510
@ ZYDIS_MVEX_STATIC_BROADCAST_NONE
Definition: SharedData.h:508
@ ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8
Definition: SharedData.h:509
Defines decoder/encoder-shared macros and types.
ZydisU8 ZydisOperandEncoding
Defines the ZydisOperandEncoding datatype.
Definition: SharedTypes.h:202
ZydisU8 ZydisInstructionEncoding
Defines the ZydisInstructionEncoding datatype.
Definition: SharedTypes.h:350
ZydisU16 ZydisElementSize
Defines the ZydisElementSize datatype.
Definition: SharedTypes.h:153
ZydisU8 ZydisElementType
Defines the ZydisElementType datatype.
Definition: SharedTypes.h:131
ZydisU8 ZydisOperandVisibility
Defines the ZydisOperandVisibility datatype.
Definition: SharedTypes.h:254
ZydisU8 ZydisOperandAction
Defines the ZydisOperandAction datatype.
Definition: SharedTypes.h:287
Definition: SharedData.h:638
ZydisCPUFlagAction action[ZYDIS_CPUFLAG_MAX_VALUE+1]
Definition: SharedData.h:639
Definition: SharedData.h:592
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:593
Definition: SharedData.h:575
ZydisBool acceptsREPNEREPNZ ZYDIS_BITFIELD(1)
ZydisBool acceptsREP ZYDIS_BITFIELD(1)
ZydisBool acceptsXACQUIRE ZYDIS_BITFIELD(1)
ZydisBool acceptsLock ZYDIS_BITFIELD(1)
ZydisBool acceptsXRELEASE ZYDIS_BITFIELD(1)
ZydisBool acceptsBOUND ZYDIS_BITFIELD(1)
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:576
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)
Definition: SharedData.h:609
ZydisInternalElementSize elementSize ZYDIS_BITFIELD(3)
ZydisBool acceptsZeroMask ZYDIS_BITFIELD(1)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_EX
Definition: SharedData.h:610
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)
ZydisEVEXFunctionality functionality ZYDIS_BITFIELD(2)
Definition: SharedData.h:624
ZydisBool hasElementGranularity ZYDIS_BITFIELD(1)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR_EX
Definition: SharedData.h:625
ZydisMVEXStaticBroadcast broadcast ZYDIS_BITFIELD(3)
ZydisMaskPolicy maskPolicy ZYDIS_BITFIELD(2)
ZydisMVEXFunctionality functionality ZYDIS_BITFIELD(5)
Definition: SharedData.h:602
ZydisVEXStaticBroadcast broadcast ZYDIS_BITFIELD(3)
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR
Definition: SharedData.h:603
Definition: SharedData.h:597
ZYDIS_INSTRUCTION_DEFINITION_BASE_VECTOR
Definition: SharedData.h:598
Defines the ZydisInstructionDefinition struct.
Definition: SharedData.h:570
ZYDIS_INSTRUCTION_DEFINITION_BASE
Definition: SharedData.h:571
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)