mirror of https://github.com/x64dbg/TitanEngine
fix a bug in MMX get
This commit is contained in:
parent
0599f49277
commit
dce958c748
|
|
@ -910,35 +910,59 @@ __declspec(dllexport) bool TITCALL SetContextDataEx(HANDLE hActiveThread, DWORD
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX0)
|
else if(IndexOfRegister == UE_MMX0)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[0 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 0)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX1)
|
else if(IndexOfRegister == UE_MMX1)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[1 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 1)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX2)
|
else if(IndexOfRegister == UE_MMX2)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[2 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 2)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX3)
|
else if(IndexOfRegister == UE_MMX3)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[3 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 3)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX4)
|
else if(IndexOfRegister == UE_MMX4)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[4 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 4)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX5)
|
else if(IndexOfRegister == UE_MMX5)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[5 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 5)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX6)
|
else if(IndexOfRegister == UE_MMX6)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[0 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 6)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_MMX7)
|
else if(IndexOfRegister == UE_MMX7)
|
||||||
{
|
{
|
||||||
memcpy(&(titcontext.RegisterArea[0 * 10]), (void*) NewRegisterValue, 8);
|
int STInTopStack = GetSTInTOPStackFromStatusWord(titcontext.x87fpu.StatusWord);
|
||||||
|
DWORD x87r0_position = Getx87r0PositionInRegisterArea(STInTopStack);
|
||||||
|
|
||||||
|
memcpy(((uint64_t*) GetRegisterAreaOf87register(titcontext.RegisterArea, x87r0_position, 7)), (char*) NewRegisterValue, 8);
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_x87_r0)
|
else if(IndexOfRegister == UE_x87_r0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue