MCPcopy Create free account
hub / github.com/OFFTKP/felix86 / ZydisDecoderTreeGetChildNode

Function ZydisDecoderTreeGetChildNode

external/zydis/src/DecoderData.c:68–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66const ZydisDecoderTreeNode zydis_decoder_tree_root = { ZYDIS_NODETYPE_FILTER_OPCODE, 0x0000 };
67
68const ZydisDecoderTreeNode* ZydisDecoderTreeGetChildNode(const ZydisDecoderTreeNode* parent,
69 ZyanU16 index)
70{
71 switch (parent->type)
72 {
73 case ZYDIS_NODETYPE_FILTER_XOP:
74 ZYAN_ASSERT(index < 13);
75 return &FILTERS_XOP[parent->value][index];
76 case ZYDIS_NODETYPE_FILTER_VEX:
77 ZYAN_ASSERT(index < 17);
78 return &FILTERS_VEX[parent->value][index];
79 case ZYDIS_NODETYPE_FILTER_EMVEX:
80 ZYAN_ASSERT(index < 49);
81 return &FILTERS_EMVEX[parent->value][index];
82 case ZYDIS_NODETYPE_FILTER_OPCODE:
83 ZYAN_ASSERT(index < 256);
84 return &FILTERS_OPCODE[parent->value][index];
85 case ZYDIS_NODETYPE_FILTER_MODE:
86 ZYAN_ASSERT(index < 4);
87 return &FILTERS_MODE[parent->value][index];
88 case ZYDIS_NODETYPE_FILTER_MODE_COMPACT:
89 ZYAN_ASSERT(index < 3);
90 return &FILTERS_MODE_COMPACT[parent->value][index];
91 case ZYDIS_NODETYPE_FILTER_MODRM_MOD:
92 ZYAN_ASSERT(index < 4);
93 return &FILTERS_MODRM_MOD[parent->value][index];
94 case ZYDIS_NODETYPE_FILTER_MODRM_MOD_COMPACT:
95 ZYAN_ASSERT(index < 2);
96 return &FILTERS_MODRM_MOD_COMPACT[parent->value][index];
97 case ZYDIS_NODETYPE_FILTER_MODRM_REG:
98 ZYAN_ASSERT(index < 8);
99 return &FILTERS_MODRM_REG[parent->value][index];
100 case ZYDIS_NODETYPE_FILTER_MODRM_RM:
101 ZYAN_ASSERT(index < 8);
102 return &FILTERS_MODRM_RM[parent->value][index];
103 case ZYDIS_NODETYPE_FILTER_PREFIX_GROUP1:
104 ZYAN_ASSERT(index < 2);
105 return &FILTERS_PREFIX_GROUP1[parent->value][index];
106 case ZYDIS_NODETYPE_FILTER_MANDATORY_PREFIX:
107 ZYAN_ASSERT(index < 5);
108 return &FILTERS_MANDATORY_PREFIX[parent->value][index];
109 case ZYDIS_NODETYPE_FILTER_OPERAND_SIZE:
110 ZYAN_ASSERT(index < 3);
111 return &FILTERS_OPERAND_SIZE[parent->value][index];
112 case ZYDIS_NODETYPE_FILTER_ADDRESS_SIZE:
113 ZYAN_ASSERT(index < 3);
114 return &FILTERS_ADDRESS_SIZE[parent->value][index];
115 case ZYDIS_NODETYPE_FILTER_VECTOR_LENGTH:
116 ZYAN_ASSERT(index < 3);
117 return &FILTERS_VECTOR_LENGTH[parent->value][index];
118 case ZYDIS_NODETYPE_FILTER_REX_W:
119 ZYAN_ASSERT(index < 2);
120 return &FILTERS_REX_W[parent->value][index];
121 case ZYDIS_NODETYPE_FILTER_REX_B:
122 ZYAN_ASSERT(index < 2);
123 return &FILTERS_REX_B[parent->value][index];
124#ifndef ZYDIS_DISABLE_AVX512
125 case ZYDIS_NODETYPE_FILTER_EVEX_B:

Callers 1

ZydisDecodeInstructionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected