mirror of https://github.com/x64dbg/zydis
cosmetic changes
This commit is contained in:
parent
48fd678632
commit
0df2deb78a
|
@ -79,7 +79,8 @@ typedef struct _VXMemoryDataSource
|
||||||
uint64_t inputBufferPos;
|
uint64_t inputBufferPos;
|
||||||
} VXMemoryDataSource;
|
} VXMemoryDataSource;
|
||||||
|
|
||||||
static void VXMemoryDataSource_Construct(VXBaseDataSourceContext *ctx, const void* buffer, size_t bufferLen);
|
static void VXMemoryDataSource_Construct(VXBaseDataSourceContext *ctx, const void* buffer,
|
||||||
|
size_t bufferLen);
|
||||||
static void VXMemoryDataSource_Destruct(VXBaseDataSourceContext *ctx);
|
static void VXMemoryDataSource_Destruct(VXBaseDataSourceContext *ctx);
|
||||||
VXBaseDataSourceContext* VXMemoryDataSource_Create(const void* buffer, size_t bufferLen);
|
VXBaseDataSourceContext* VXMemoryDataSource_Create(const void* buffer, size_t bufferLen);
|
||||||
static uint8_t VXMemoryDataSource_InternalInputPeek(VXBaseDataSourceContext *ctx);
|
static uint8_t VXMemoryDataSource_InternalInputPeek(VXBaseDataSourceContext *ctx);
|
||||||
|
@ -108,37 +109,70 @@ typedef enum _VXRegisterClass /* : uint8_t */
|
||||||
RC_XMM
|
RC_XMM
|
||||||
} VXRegisterClass;
|
} VXRegisterClass;
|
||||||
|
|
||||||
static uint8_t VXInstructionDecoder_InputPeek(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
static uint8_t VXInstructionDecoder_InputPeek(VXInstructionDecoderContext *ctx,
|
||||||
static uint8_t VXInstructionDecoder_InputNext8(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXInstructionInfo *info);
|
||||||
static uint16_t VXInstructionDecoder_InputNext16(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
static uint8_t VXInstructionDecoder_InputNext8(VXInstructionDecoderContext *ctx,
|
||||||
static uint32_t VXInstructionDecoder_InputNext32(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXInstructionInfo *info);
|
||||||
static uint64_t VXInstructionDecoder_InputNext64(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
static uint16_t VXInstructionDecoder_InputNext16(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
static uint32_t VXInstructionDecoder_InputNext32(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
static uint64_t VXInstructionDecoder_InputNext64(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
static uint8_t VXInstructionDecoder_InputCurrent(const VXInstructionDecoderContext *ctx);
|
static uint8_t VXInstructionDecoder_InputCurrent(const VXInstructionDecoderContext *ctx);
|
||||||
VXBaseDataSourceContext* VXInstructionDecoder_GetDataSource(const VXInstructionDecoderContext *ctx);
|
VXBaseDataSourceContext* VXInstructionDecoder_GetDataSource(
|
||||||
void VXInstructionDecoder_SetDataSource(VXInstructionDecoderContext *ctx, VXBaseDataSourceContext *input);
|
const VXInstructionDecoderContext *ctx);
|
||||||
VXDisassemblerMode VXInstructionDecoder_GetDisassemblerMode(const VXInstructionDecoderContext *ctx);
|
void VXInstructionDecoder_SetDataSource(VXInstructionDecoderContext *ctx,
|
||||||
void VXInstructionDecoder_SetDisassemblerMode(VXInstructionDecoderContext *ctx, VXDisassemblerMode disassemblerMode);
|
VXBaseDataSourceContext *input);
|
||||||
VXInstructionSetVendor VXInstructionDecoder_GetPreferredVendor(const VXInstructionDecoderContext *ctx);
|
VXDisassemblerMode VXInstructionDecoder_GetDisassemblerMode(
|
||||||
void VXInstructionDecoder_SetPreferredVendor(VXInstructionDecoderContext *ctx, VXInstructionSetVendor preferredVendor);
|
const VXInstructionDecoderContext *ctx);
|
||||||
|
void VXInstructionDecoder_SetDisassemblerMode(VXInstructionDecoderContext *ctx,
|
||||||
|
VXDisassemblerMode disassemblerMode);
|
||||||
|
VXInstructionSetVendor VXInstructionDecoder_GetPreferredVendor(
|
||||||
|
const VXInstructionDecoderContext *ctx);
|
||||||
|
void VXInstructionDecoder_SetPreferredVendor(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionSetVendor preferredVendor);
|
||||||
uint64_t VXInstructionDecoder_GetInstructionPointer(const VXInstructionDecoderContext *ctx);
|
uint64_t VXInstructionDecoder_GetInstructionPointer(const VXInstructionDecoderContext *ctx);
|
||||||
void VXInstructionDecoder_SetInstructionPointer(VXInstructionDecoderContext *ctx, uint64_t instructionPointer);
|
void VXInstructionDecoder_SetInstructionPointer(VXInstructionDecoderContext *ctx,
|
||||||
static bool VXInstructionDecoder_DecodeRegisterOperand(const VXInstructionDecoderContext *ctx, VXInstructionInfo *info, VXOperandInfo *operand, VXRegisterClass registerClass, uint8_t registerId, VXDefinedOperandSize operandSize);
|
uint64_t instructionPointer);
|
||||||
static bool VXInstructionDecoder_DecodeRegisterMemoryOperand(VXInstructionDecoderContext *ctx, VXInstructionInfo *info, VXOperandInfo *operand, VXRegisterClass registerClass, VXDefinedOperandSize operandSize);
|
static bool VXInstructionDecoder_DecodeRegisterOperand(const VXInstructionDecoderContext *ctx,
|
||||||
static bool VXInstructionDecoder_DecodeImmediate(VXInstructionDecoderContext *ctx, VXInstructionInfo *info, VXOperandInfo *operand, VXDefinedOperandSize operandSize);
|
VXInstructionInfo *info, VXOperandInfo *operand, VXRegisterClass registerClass,
|
||||||
static bool VXInstructionDecoder_DecodeDisplacement(VXInstructionDecoderContext *ctx, VXInstructionInfo *info, VXOperandInfo *operand, uint8_t size);
|
uint8_t registerId, VXDefinedOperandSize operandSize);
|
||||||
static bool VXInstructionDecoder_DecodeModrm(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
static bool VXInstructionDecoder_DecodeRegisterMemoryOperand(VXInstructionDecoderContext *ctx,
|
||||||
static bool VXInstructionDecoder_DecodeSIB(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXInstructionInfo *info, VXOperandInfo *operand, VXRegisterClass registerClass,
|
||||||
static bool VXInstructionDecoder_DecodeVex(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXDefinedOperandSize operandSize);
|
||||||
static uint16_t VXInstructionDecoder_GetEffectiveOperandSize(const VXInstructionDecoderContext *ctx, const VXInstructionInfo *info, VXDefinedOperandSize operandSize);
|
static bool VXInstructionDecoder_DecodeImmediate(VXInstructionDecoderContext *ctx,
|
||||||
static bool VXInstructionDecoder_DecodeOperands(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXInstructionInfo *info, VXOperandInfo *operand, VXDefinedOperandSize operandSize);
|
||||||
static bool VXInstructionDecoder_DecodeOperand(VXInstructionDecoderContext *ctx, VXInstructionInfo *info, VXOperandInfo *operand, VXDefinedOperandType operandType, VXDefinedOperandSize operandSize);
|
static bool VXInstructionDecoder_DecodeDisplacement(VXInstructionDecoderContext *ctx,
|
||||||
static void VXInstructionDecoder_ResolveOperandAndAddressMode(const VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXInstructionInfo *info, VXOperandInfo *operand, uint8_t size);
|
||||||
static void VXInstructionDecoder_CalculateEffectiveRexVexValues(const VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
static bool VXInstructionDecoder_DecodeModrm(VXInstructionDecoderContext *ctx,
|
||||||
static bool VXInstructionDecoder_DecodePrefixes(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXInstructionInfo *info);
|
||||||
static bool VXInstructionDecoder_DecodeOpcode(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
static bool VXInstructionDecoder_DecodeSIB(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
static bool VXInstructionDecoder_DecodeVex(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
static uint16_t VXInstructionDecoder_GetEffectiveOperandSize(
|
||||||
|
const VXInstructionDecoderContext *ctx, const VXInstructionInfo *info,
|
||||||
|
VXDefinedOperandSize operandSize);
|
||||||
|
static bool VXInstructionDecoder_DecodeOperands(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
static bool VXInstructionDecoder_DecodeOperand(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info, VXOperandInfo *operand, VXDefinedOperandType operandType,
|
||||||
|
VXDefinedOperandSize operandSize);
|
||||||
|
static void VXInstructionDecoder_ResolveOperandAndAddressMode(
|
||||||
|
const VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
||||||
|
static void VXInstructionDecoder_CalculateEffectiveRexVexValues(
|
||||||
|
const VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
||||||
|
static bool VXInstructionDecoder_DecodePrefixes(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
static bool VXInstructionDecoder_DecodeOpcode(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
VXInstructionDecoderContext* VXInstructionDecoder_Create(void);
|
VXInstructionDecoderContext* VXInstructionDecoder_Create(void);
|
||||||
VXInstructionDecoderContext* VXInstructionDecoder_CreateEx(VXBaseDataSourceContext *input, VXDisassemblerMode disassemblerMode, VXInstructionSetVendor preferredVendor, uint64_t instructionPointer);
|
VXInstructionDecoderContext* VXInstructionDecoder_CreateEx(
|
||||||
bool VXInstructionDecoder_DecodeInstruction(VXInstructionDecoderContext *ctx, VXInstructionInfo *info);
|
VXBaseDataSourceContext *input, VXDisassemblerMode disassemblerMode,
|
||||||
|
VXInstructionSetVendor preferredVendor, uint64_t instructionPointer);
|
||||||
|
bool VXInstructionDecoder_DecodeInstruction(VXInstructionDecoderContext *ctx,
|
||||||
|
VXInstructionInfo *info);
|
||||||
|
|
||||||
/* Implementation ============================================================================== */
|
/* Implementation ============================================================================== */
|
||||||
|
|
||||||
|
@ -330,12 +364,9 @@ static bool VXMemoryDataSource_SetPosition(VXBaseDataSourceContext *ctx, uint64_
|
||||||
|
|
||||||
/* VXInstructionDecoder ------------------------------------------------------------------------ */
|
/* VXInstructionDecoder ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
void VXInstructionDecoder_Construct(
|
void VXInstructionDecoder_Construct(VXInstructionDecoderContext *ctx,
|
||||||
VXInstructionDecoderContext *ctx,
|
VXBaseDataSourceContext *input, VXDisassemblerMode disassemblerMode,
|
||||||
VXBaseDataSourceContext *input,
|
VXInstructionSetVendor preferredVendor, uint64_t instructionPointer)
|
||||||
VXDisassemblerMode disassemblerMode,
|
|
||||||
VXInstructionSetVendor preferredVendor,
|
|
||||||
uint64_t instructionPointer)
|
|
||||||
{
|
{
|
||||||
VXInstructionDecoder *thiz = VXInstructionDecoder_thiz(ctx);
|
VXInstructionDecoder *thiz = VXInstructionDecoder_thiz(ctx);
|
||||||
|
|
||||||
|
@ -355,10 +386,8 @@ VXInstructionDecoderContext* VXInstructionDecoder_Create(void)
|
||||||
return VXInstructionDecoder_CreateEx(NULL, DM_M32BIT, ISV_ANY, 0);
|
return VXInstructionDecoder_CreateEx(NULL, DM_M32BIT, ISV_ANY, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
VXInstructionDecoderContext* VXInstructionDecoder_CreateEx(
|
VXInstructionDecoderContext* VXInstructionDecoder_CreateEx(VXBaseDataSourceContext *input,
|
||||||
VXBaseDataSourceContext *input,
|
VXDisassemblerMode disassemblerMode, VXInstructionSetVendor preferredVendor,
|
||||||
VXDisassemblerMode disassemblerMode,
|
|
||||||
VXInstructionSetVendor preferredVendor,
|
|
||||||
uint64_t instructionPointer)
|
uint64_t instructionPointer)
|
||||||
{
|
{
|
||||||
VXInstructionDecoder *thiz = malloc(sizeof(VXInstructionDecoder));
|
VXInstructionDecoder *thiz = malloc(sizeof(VXInstructionDecoder));
|
||||||
|
@ -1679,8 +1708,7 @@ static bool VXInstructionDecoder_DecodeOpcode(VXInstructionDecoderContext *ctx,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VXInstructionDecoder_DecodeInstruction(
|
bool VXInstructionDecoder_DecodeInstruction(VXInstructionDecoderContext *ctx,
|
||||||
VXInstructionDecoderContext *ctx,
|
|
||||||
VXInstructionInfo *info)
|
VXInstructionInfo *info)
|
||||||
{
|
{
|
||||||
VXInstructionDecoder *thiz = VXInstructionDecoder_thiz(ctx);
|
VXInstructionDecoder *thiz = VXInstructionDecoder_thiz(ctx);
|
||||||
|
|
|
@ -62,7 +62,8 @@ typedef struct _VXBaseSymbolResolver
|
||||||
static void VXBaseSymbolResolver_Construct(VXBaseSymbolResolverContext *ctx);
|
static void VXBaseSymbolResolver_Construct(VXBaseSymbolResolverContext *ctx);
|
||||||
static void VXBaseSymbolResolver_Destruct(VXBaseSymbolResolverContext *ctx);
|
static void VXBaseSymbolResolver_Destruct(VXBaseSymbolResolverContext *ctx);
|
||||||
void VXBaseSymbolResolver_Release(VXBaseSymbolResolverContext *ctx);
|
void VXBaseSymbolResolver_Release(VXBaseSymbolResolverContext *ctx);
|
||||||
const char* VXBaseSymbolResolver_ResolveSymbol(VXBaseSymbolResolverContext *ctx, const VXInstructionInfo *info, uint64_t address, uint64_t *offset);
|
const char* VXBaseSymbolResolver_ResolveSymbol(VXBaseSymbolResolverContext *ctx,
|
||||||
|
const VXInstructionInfo *info, uint64_t address, uint64_t *offset);
|
||||||
|
|
||||||
/* VXBaseInstructionFormatter ------------------------------------------------------------------ */
|
/* VXBaseInstructionFormatter ------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
@ -82,22 +83,36 @@ typedef struct _VXBaseInstructionFormatter
|
||||||
bool outputUppercase;
|
bool outputUppercase;
|
||||||
} VXBaseInstructionFormatter;
|
} VXBaseInstructionFormatter;
|
||||||
|
|
||||||
static void VXBaseInstructionFormatter_Construct(VXBaseInstructionFormatterContext *ctx, VXBaseSymbolResolverContext *symbolResolver);
|
static void VXBaseInstructionFormatter_Construct(VXBaseInstructionFormatterContext *ctx,
|
||||||
|
VXBaseSymbolResolverContext *symbolResolver);
|
||||||
static void VXBaseInstructionFormatter_Destruct(VXBaseInstructionFormatterContext *ctx);
|
static void VXBaseInstructionFormatter_Destruct(VXBaseInstructionFormatterContext *ctx);
|
||||||
void VXBaseInstructionFormatter_Release(VXBaseInstructionFormatterContext *ctx);
|
void VXBaseInstructionFormatter_Release(VXBaseInstructionFormatterContext *ctx);
|
||||||
/*static void VXBaseInstructionFormatter_OutputSetUppercase(VXBaseInstructionFormatterContext *ctx, bool uppercase);*/
|
/*static void VXBaseInstructionFormatter_OutputSetUppercase(VXBaseInstructionFormatterContext *ctx, bool uppercase);*/
|
||||||
static char const* VXBaseInstructionFormatter_RegisterToString(const VXBaseInstructionFormatterContext *ctx, VXRegister reg);
|
static char const* VXBaseInstructionFormatter_RegisterToString(
|
||||||
static char const* VXBaseInstructionFormatter_ResolveSymbol(const VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, uint64_t address, uint64_t *offset);
|
const VXBaseInstructionFormatterContext *ctx, VXRegister reg);
|
||||||
VXBaseSymbolResolverContext* VXBaseInstructionFormatter_GetSymbolResolver(const VXBaseInstructionFormatterContext *ctx);
|
static char const* VXBaseInstructionFormatter_ResolveSymbol(
|
||||||
void VXBaseInstructionFormatter_SetSymbolResolver(VXBaseInstructionFormatterContext *ctx, VXBaseSymbolResolverContext *symbolResolver);
|
const VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, uint64_t address,
|
||||||
const char* VXBaseInstructionFormatter_FormatInstruction(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info);
|
uint64_t *offset);
|
||||||
|
VXBaseSymbolResolverContext* VXBaseInstructionFormatter_GetSymbolResolver(
|
||||||
|
const VXBaseInstructionFormatterContext *ctx);
|
||||||
|
void VXBaseInstructionFormatter_SetSymbolResolver(VXBaseInstructionFormatterContext *ctx,
|
||||||
|
VXBaseSymbolResolverContext *symbolResolver);
|
||||||
|
const char* VXBaseInstructionFormatter_FormatInstruction(VXBaseInstructionFormatterContext *ctx,
|
||||||
|
const VXInstructionInfo *info);
|
||||||
static void VXBaseInstructionFormatter_OutputClear(VXBaseInstructionFormatterContext *ctx);
|
static void VXBaseInstructionFormatter_OutputClear(VXBaseInstructionFormatterContext *ctx);
|
||||||
static char const* VXBaseInstructionFormatter_OutputString(VXBaseInstructionFormatterContext *ctx);
|
static char const* VXBaseInstructionFormatter_OutputString(VXBaseInstructionFormatterContext *ctx);
|
||||||
static void VXBaseInstructionFormatter_OutputAppend(VXBaseInstructionFormatterContext *ctx, char const *text);
|
static void VXBaseInstructionFormatter_OutputAppend(VXBaseInstructionFormatterContext *ctx,
|
||||||
static void VXBaseInstructionFormatter_OutputAppendFormatted(VXBaseInstructionFormatterContext *ctx, char const *format, ...);
|
char const *text);
|
||||||
static void VXBaseInstructionFormatter_OutputAppendAddress(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, uint64_t address, bool resolveSymbols);
|
static void VXBaseInstructionFormatter_OutputAppendFormatted(
|
||||||
static void VXBaseInstructionFormatter_OutputAppendImmediate(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, const VXOperandInfo *operand, bool resolveSymbols);
|
VXBaseInstructionFormatterContext *ctx, char const *format, ...);
|
||||||
static void VXBaseInstructionFormatter_OutputAppendDisplacement(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, const VXOperandInfo *operand);
|
static void VXBaseInstructionFormatter_OutputAppendAddress(VXBaseInstructionFormatterContext *ctx,
|
||||||
|
const VXInstructionInfo *info, uint64_t address, bool resolveSymbols);
|
||||||
|
static void VXBaseInstructionFormatter_OutputAppendImmediate(
|
||||||
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info,
|
||||||
|
const VXOperandInfo *operand, bool resolveSymbols);
|
||||||
|
static void VXBaseInstructionFormatter_OutputAppendDisplacement(
|
||||||
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info,
|
||||||
|
const VXOperandInfo *operand);
|
||||||
|
|
||||||
/* VXCustomSymbolResolver ---------------------------------------------------------------------- */
|
/* VXCustomSymbolResolver ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
@ -108,10 +123,13 @@ typedef struct _VXCustomSymbolResolver
|
||||||
void *userData;
|
void *userData;
|
||||||
} VXCustomSymbolResolver;
|
} VXCustomSymbolResolver;
|
||||||
|
|
||||||
static void VXCustomSymbolResolver_Construct(VXBaseSymbolResolverContext *ctx, VXCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData);
|
static void VXCustomSymbolResolver_Construct(VXBaseSymbolResolverContext *ctx,
|
||||||
|
VXCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData);
|
||||||
static void VXCustomSymbolResolver_Destruct(VXBaseSymbolResolverContext *ctx);
|
static void VXCustomSymbolResolver_Destruct(VXBaseSymbolResolverContext *ctx);
|
||||||
VXBaseSymbolResolverContext* VXCustomSymbolResolver_Create(VXCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData);
|
VXBaseSymbolResolverContext* VXCustomSymbolResolver_Create(
|
||||||
static const char* VXCustomSymbolResolver_Resolve(VXBaseSymbolResolverContext *ctx, const VXInstructionInfo *info, uint64_t address, uint64_t *offset);
|
VXCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData);
|
||||||
|
static const char* VXCustomSymbolResolver_Resolve(VXBaseSymbolResolverContext *ctx,
|
||||||
|
const VXInstructionInfo *info, uint64_t address, uint64_t *offset);
|
||||||
|
|
||||||
/* VXIntelInstructionFormatter ----------------------------------------------------------------- */
|
/* VXIntelInstructionFormatter ----------------------------------------------------------------- */
|
||||||
|
|
||||||
|
@ -121,12 +139,18 @@ typedef struct _VXIntelInstructionFormatter
|
||||||
} VXIntelInstructionFormatter;
|
} VXIntelInstructionFormatter;
|
||||||
|
|
||||||
VXBaseInstructionFormatterContext* VXIntelInstructionFormatter_Create(void);
|
VXBaseInstructionFormatterContext* VXIntelInstructionFormatter_Create(void);
|
||||||
VXBaseInstructionFormatterContext* VXIntelInstructionFormatter_CreateEx(VXBaseSymbolResolverContext *resolver);
|
VXBaseInstructionFormatterContext* VXIntelInstructionFormatter_CreateEx(
|
||||||
static void VXIntelInstructionFormatter_Construct(VXBaseInstructionFormatterContext *ctx, VXBaseSymbolResolverContext *symbolResolver);
|
VXBaseSymbolResolverContext *resolver);
|
||||||
|
static void VXIntelInstructionFormatter_Construct(VXBaseInstructionFormatterContext *ctx,
|
||||||
|
VXBaseSymbolResolverContext *symbolResolver);
|
||||||
static void VXIntelInstructionFormatter_Destruct(VXBaseInstructionFormatterContext *ctx);
|
static void VXIntelInstructionFormatter_Destruct(VXBaseInstructionFormatterContext *ctx);
|
||||||
static void VXIntelInstructionFormatter_OutputAppendOperandCast(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, const VXOperandInfo *operand);
|
static void VXIntelInstructionFormatter_OutputAppendOperandCast(
|
||||||
static void VXIntelInstructionFormatter_FormatOperand(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, const VXOperandInfo *operand);
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info,
|
||||||
static void VXIntelInstructionFormatter_InternalFormatInstruction(VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info);
|
const VXOperandInfo *operand);
|
||||||
|
static void VXIntelInstructionFormatter_FormatOperand(VXBaseInstructionFormatterContext *ctx,
|
||||||
|
const VXInstructionInfo *info, const VXOperandInfo *operand);
|
||||||
|
static void VXIntelInstructionFormatter_InternalFormatInstruction(
|
||||||
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info);
|
||||||
|
|
||||||
/* Implementation ============================================================================== */
|
/* Implementation ============================================================================== */
|
||||||
|
|
||||||
|
@ -142,8 +166,7 @@ void VXBaseSymbolResolver_Destruct(VXBaseSymbolResolverContext *ctx)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VXBaseSymbolResolver_Release(
|
void VXBaseSymbolResolver_Release(VXBaseSymbolResolverContext *ctx)
|
||||||
VXBaseSymbolResolverContext *ctx)
|
|
||||||
{
|
{
|
||||||
VXBaseSymbolResolver *thiz = VXBaseSymbolResolver_thiz(ctx);
|
VXBaseSymbolResolver *thiz = VXBaseSymbolResolver_thiz(ctx);
|
||||||
|
|
||||||
|
@ -156,11 +179,8 @@ void VXBaseSymbolResolver_Release(
|
||||||
free(ctx);
|
free(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* VXBaseSymbolResolver_ResolveSymbol(
|
const char* VXBaseSymbolResolver_ResolveSymbol(VXBaseSymbolResolverContext *ctx,
|
||||||
VXBaseSymbolResolverContext *ctx,
|
const VXInstructionInfo *info, uint64_t address, uint64_t *offset)
|
||||||
const VXInstructionInfo *info,
|
|
||||||
uint64_t address,
|
|
||||||
uint64_t *offset)
|
|
||||||
{
|
{
|
||||||
assert(VXBaseSymbolResolver_thiz(ctx)->resolveCallback);
|
assert(VXBaseSymbolResolver_thiz(ctx)->resolveCallback);
|
||||||
return VXBaseSymbolResolver_thiz(ctx)->resolveCallback(ctx, info, address, offset);
|
return VXBaseSymbolResolver_thiz(ctx)->resolveCallback(ctx, info, address, offset);
|
||||||
|
@ -168,10 +188,8 @@ const char* VXBaseSymbolResolver_ResolveSymbol(
|
||||||
|
|
||||||
/* VXCustomSymbolResolver ---------------------------------------------------------------------- */
|
/* VXCustomSymbolResolver ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void VXCustomSymbolResolver_Construct(
|
static void VXCustomSymbolResolver_Construct(VXBaseSymbolResolverContext *ctx,
|
||||||
VXBaseSymbolResolverContext *ctx,
|
VXCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData)
|
||||||
VXCustomSymbolResolver_ResolveSymbolCallback resolverCb,
|
|
||||||
void *userData)
|
|
||||||
{
|
{
|
||||||
VXBaseSymbolResolver_Construct(ctx);
|
VXBaseSymbolResolver_Construct(ctx);
|
||||||
VXCustomSymbolResolver *thiz = VXCustomSymbolResolver_thiz(ctx);
|
VXCustomSymbolResolver *thiz = VXCustomSymbolResolver_thiz(ctx);
|
||||||
|
@ -189,8 +207,7 @@ static void VXCustomSymbolResolver_Destruct(VXBaseSymbolResolverContext *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
VXBaseSymbolResolverContext* VXCustomSymbolResolver_Create(
|
VXBaseSymbolResolverContext* VXCustomSymbolResolver_Create(
|
||||||
VXCustomSymbolResolver_ResolveSymbolCallback resolverCb,
|
VXCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData)
|
||||||
void *userData)
|
|
||||||
{
|
{
|
||||||
VXCustomSymbolResolver *thiz = malloc(sizeof(VXCustomSymbolResolver));
|
VXCustomSymbolResolver *thiz = malloc(sizeof(VXCustomSymbolResolver));
|
||||||
VXBaseSymbolResolverContext *ctx = malloc(sizeof(VXBaseSymbolResolverContext));
|
VXBaseSymbolResolverContext *ctx = malloc(sizeof(VXBaseSymbolResolverContext));
|
||||||
|
@ -208,11 +225,8 @@ VXBaseSymbolResolverContext* VXCustomSymbolResolver_Create(
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* VXCustomSymbolResolver_Resolve(
|
static const char* VXCustomSymbolResolver_Resolve(VXBaseSymbolResolverContext *ctx,
|
||||||
VXBaseSymbolResolverContext *ctx,
|
const VXInstructionInfo *info, uint64_t address, uint64_t *offset)
|
||||||
const VXInstructionInfo *info,
|
|
||||||
uint64_t address,
|
|
||||||
uint64_t *offset)
|
|
||||||
{
|
{
|
||||||
VXCustomSymbolResolver *thiz = VXCustomSymbolResolver_thiz(ctx);
|
VXCustomSymbolResolver *thiz = VXCustomSymbolResolver_thiz(ctx);
|
||||||
return thiz->resolve(info, address, offset, thiz->userData);
|
return thiz->resolve(info, address, offset, thiz->userData);
|
||||||
|
@ -276,8 +290,8 @@ static const char* VXBaseInstructionFormatter_registerStrings[] =
|
||||||
"rip"
|
"rip"
|
||||||
};
|
};
|
||||||
|
|
||||||
static void VXBaseInstructionFormatter_Construct(
|
static void VXBaseInstructionFormatter_Construct(VXBaseInstructionFormatterContext *ctx,
|
||||||
VXBaseInstructionFormatterContext *ctx, VXBaseSymbolResolverContext *symbolResolver)
|
VXBaseSymbolResolverContext *symbolResolver)
|
||||||
{
|
{
|
||||||
VXBaseInstructionFormatter *thiz = VXBaseInstructionFormatter_thiz(ctx);
|
VXBaseInstructionFormatter *thiz = VXBaseInstructionFormatter_thiz(ctx);
|
||||||
|
|
||||||
|
@ -301,8 +315,7 @@ static void VXBaseInstructionFormatter_Destruct(VXBaseInstructionFormatterContex
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VXBaseInstructionFormatter_Release(
|
void VXBaseInstructionFormatter_Release(VXBaseInstructionFormatterContext *ctx)
|
||||||
VXBaseInstructionFormatterContext *ctx)
|
|
||||||
{
|
{
|
||||||
VXBaseInstructionFormatter *thiz = VXBaseInstructionFormatter_thiz(ctx);
|
VXBaseInstructionFormatter *thiz = VXBaseInstructionFormatter_thiz(ctx);
|
||||||
|
|
||||||
|
@ -485,8 +498,8 @@ static void VXBaseInstructionFormatter_OutputAppendFormatted(
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VXBaseInstructionFormatter_OutputAppendAddress(
|
static void VXBaseInstructionFormatter_OutputAppendAddress(
|
||||||
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info,
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info, uint64_t address,
|
||||||
uint64_t address, bool resolveSymbols)
|
bool resolveSymbols)
|
||||||
{
|
{
|
||||||
uint64_t offset = 0;
|
uint64_t offset = 0;
|
||||||
const char* name = NULL;
|
const char* name = NULL;
|
||||||
|
@ -529,10 +542,8 @@ static void VXBaseInstructionFormatter_OutputAppendAddress(
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VXBaseInstructionFormatter_OutputAppendImmediate(
|
static void VXBaseInstructionFormatter_OutputAppendImmediate(
|
||||||
VXBaseInstructionFormatterContext *ctx,
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info,
|
||||||
const VXInstructionInfo *info,
|
const VXOperandInfo *operand, bool resolveSymbols)
|
||||||
const VXOperandInfo *operand,
|
|
||||||
bool resolveSymbols)
|
|
||||||
{
|
{
|
||||||
assert(operand->type == OPTYPE_IMMEDIATE);
|
assert(operand->type == OPTYPE_IMMEDIATE);
|
||||||
uint64_t value = 0;
|
uint64_t value = 0;
|
||||||
|
@ -695,8 +706,7 @@ VXBaseInstructionFormatterContext* VXIntelInstructionFormatter_CreateEx(
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VXIntelInstructionFormatter_OutputAppendOperandCast(
|
static void VXIntelInstructionFormatter_OutputAppendOperandCast(
|
||||||
VXBaseInstructionFormatterContext *ctx,
|
VXBaseInstructionFormatterContext *ctx, const VXInstructionInfo *info,
|
||||||
const VXInstructionInfo *info,
|
|
||||||
const VXOperandInfo *operand)
|
const VXOperandInfo *operand)
|
||||||
{
|
{
|
||||||
switch(operand->size)
|
switch(operand->size)
|
||||||
|
@ -727,10 +737,8 @@ static void VXIntelInstructionFormatter_OutputAppendOperandCast(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VXIntelInstructionFormatter_FormatOperand(
|
static void VXIntelInstructionFormatter_FormatOperand(VXBaseInstructionFormatterContext *ctx,
|
||||||
VXBaseInstructionFormatterContext *ctx,
|
const VXInstructionInfo *info, const VXOperandInfo *operand)
|
||||||
const VXInstructionInfo *info,
|
|
||||||
const VXOperandInfo *operand)
|
|
||||||
{
|
{
|
||||||
switch (operand->type)
|
switch (operand->type)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue