mirror of https://github.com/x64dbg/zydis
Minor changes to the internal formatter logic
- `ZYDIS_FORMATTER_HOOK_PRINT_MEMSIZE` is now directly invoked by `ZYDIS_FORMATTER_HOOK_FORMAT_OPERAND_MEM`
This commit is contained in:
parent
1483f854f2
commit
0e60679470
|
@ -308,7 +308,7 @@ enum ZydisFormatterHookTypes
|
|||
*/
|
||||
ZYDIS_FORMATTER_HOOK_PRE_INSTRUCTION,
|
||||
/**
|
||||
* @brief This function is invoked before the formatter formatted an instruction.
|
||||
* @brief This function is invoked after the formatter formatted an instruction.
|
||||
*/
|
||||
ZYDIS_FORMATTER_HOOK_POST_INSTRUCTION,
|
||||
/**
|
||||
|
@ -316,7 +316,7 @@ enum ZydisFormatterHookTypes
|
|||
*/
|
||||
ZYDIS_FORMATTER_HOOK_PRE_OPERAND,
|
||||
/**
|
||||
* @brief This function is invoked before the formatter formatted an operand.
|
||||
* @brief This function is invoked after the formatter formatted an operand.
|
||||
*/
|
||||
ZYDIS_FORMATTER_HOOK_POST_OPERAND,
|
||||
|
||||
|
@ -336,7 +336,8 @@ enum ZydisFormatterHookTypes
|
|||
* @brief This function is invoked to format a memory operand.
|
||||
*
|
||||
* Replacing this function might indirectly disable some specific calls to the
|
||||
* `ZYDIS_FORMATTER_HOOK_PRINT_ADDRESS` and `ZYDIS_FORMATTER_HOOK_PRINT_DISP` functions.
|
||||
* `ZYDIS_FORMATTER_HOOK_PRINT_MEMSIZE`, `ZYDIS_FORMATTER_HOOK_PRINT_ADDRESS` and
|
||||
* `ZYDIS_FORMATTER_HOOK_PRINT_DISP` functions.
|
||||
*/
|
||||
ZYDIS_FORMATTER_HOOK_FORMAT_OPERAND_MEM,
|
||||
/**
|
||||
|
|
|
@ -120,15 +120,8 @@ static ZydisStatus ZydisFormatInstrIntel(const ZydisFormatter* formatter, ZydisS
|
|||
break;
|
||||
case ZYDIS_OPERAND_TYPE_MEMORY:
|
||||
{
|
||||
ZYDIS_CHECK(formatter->funcPrintMemSize(formatter, string, instruction,
|
||||
&instruction->operands[i], userData));
|
||||
const ZydisUSize strLenTemp = string->length;
|
||||
status = formatter->funcFormatOperandMem(formatter, string, instruction,
|
||||
&instruction->operands[i], userData);
|
||||
if ((status == ZYDIS_STATUS_SUCCESS) && (strLenTemp == string->length))
|
||||
{
|
||||
string->length = strLenPreOperand;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ZYDIS_OPERAND_TYPE_POINTER:
|
||||
|
@ -242,6 +235,8 @@ static ZydisStatus ZydisFormatOperandMemIntel(const ZydisFormatter* formatter, Z
|
|||
return ZYDIS_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ZYDIS_CHECK(formatter->funcPrintMemSize(formatter, string, instruction, operand, userData));
|
||||
|
||||
switch (operand->mem.segment)
|
||||
{
|
||||
case ZYDIS_REGISTER_ES:
|
||||
|
@ -1252,11 +1247,6 @@ ZydisStatus ZydisFormatterFormatOperandEx(const ZydisFormatter* formatter,
|
|||
userData);
|
||||
break;
|
||||
case ZYDIS_OPERAND_TYPE_MEMORY:
|
||||
status = formatter->funcPrintMemSize(formatter, &string, instruction, operand, userData);
|
||||
if (!ZYDIS_SUCCESS(status))
|
||||
{
|
||||
goto FinalizeString;
|
||||
}
|
||||
status = formatter->funcFormatOperandMem(formatter, &string, instruction, operand,
|
||||
userData);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue