mirror of https://github.com/x64dbg/TitanEngine
Merged in Dreg_fr33project/titanengine-update (pull request #6)
Basic FPU support
This commit is contained in:
commit
b421e7e00e
|
|
@ -253,6 +253,51 @@
|
|||
#define UE_SEG_DS 40
|
||||
#define UE_SEG_CS 41
|
||||
#define UE_SEG_SS 42
|
||||
#define UE_x87_r0 43
|
||||
#define UE_x87_r1 44
|
||||
#define UE_x87_r2 45
|
||||
#define UE_x87_r3 46
|
||||
#define UE_x87_r4 47
|
||||
#define UE_x87_r5 48
|
||||
#define UE_x87_r6 49
|
||||
#define UE_x87_r7 50
|
||||
#define UE_X87_STATUSWORD 51
|
||||
#define UE_X87_CONTROLWORD 52
|
||||
#define UE_X87_TAGWORD 53
|
||||
#define UE_MXCSR 54
|
||||
#define UE_MMX0 55
|
||||
#define UE_MMX1 56
|
||||
#define UE_MMX2 57
|
||||
#define UE_MMX3 58
|
||||
#define UE_MMX4 59
|
||||
#define UE_MMX5 60
|
||||
#define UE_MMX6 61
|
||||
#define UE_MMX7 62
|
||||
#define UE_XMM0 63
|
||||
#define UE_XMM1 64
|
||||
#define UE_XMM2 65
|
||||
#define UE_XMM3 66
|
||||
#define UE_XMM4 67
|
||||
#define UE_XMM5 68
|
||||
#define UE_XMM6 69
|
||||
#define UE_XMM7 70
|
||||
#define UE_XMM8 71
|
||||
#define UE_XMM9 72
|
||||
#define UE_XMM10 73
|
||||
#define UE_XMM11 74
|
||||
#define UE_XMM12 75
|
||||
#define UE_XMM13 76
|
||||
#define UE_XMM14 77
|
||||
#define UE_XMM15 78
|
||||
#define UE_x87_ST0 79
|
||||
#define UE_x87_ST1 80
|
||||
#define UE_x87_ST2 81
|
||||
#define UE_x87_ST3 82
|
||||
#define UE_x87_ST4 83
|
||||
#define UE_x87_ST5 84
|
||||
#define UE_x87_ST6 85
|
||||
#define UE_x87_ST7 86
|
||||
|
||||
|
||||
#ifndef CONTEXT_EXTENDED_REGISTERS
|
||||
#define CONTEXT_EXTENDED_REGISTERS 0
|
||||
|
|
@ -262,18 +307,18 @@ typedef struct
|
|||
{
|
||||
BYTE data[10];
|
||||
int st_value;
|
||||
int tag;
|
||||
} x87FPURegister_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD ControlWord;
|
||||
DWORD StatusWord;
|
||||
DWORD TagWord;
|
||||
WORD ControlWord;
|
||||
WORD StatusWord;
|
||||
WORD TagWord;
|
||||
DWORD ErrorOffset;
|
||||
DWORD ErrorSelector;
|
||||
DWORD DataOffset;
|
||||
DWORD DataSelector;
|
||||
x87FPURegister_t x87FPURegister[8];
|
||||
DWORD Cr0NpxState;
|
||||
} x87FPU_t;
|
||||
|
||||
|
|
@ -314,7 +359,6 @@ typedef struct
|
|||
BYTE RegisterArea[80];
|
||||
x87FPU_t x87fpu;
|
||||
DWORD MxCsr;
|
||||
uint64_t mmx[8];
|
||||
#ifdef _WIN64
|
||||
M128A XmmRegisters[16];
|
||||
#else // x86
|
||||
|
|
@ -765,6 +809,8 @@ __declspec(dllexport) bool TITCALL SetMemoryBPX(ULONG_PTR MemoryStart, SIZE_T Si
|
|||
__declspec(dllexport) bool TITCALL SetMemoryBPXEx(ULONG_PTR MemoryStart, SIZE_T SizeOfMemory, DWORD BreakPointType, bool RestoreOnHit, LPVOID bpxCallBack);
|
||||
__declspec(dllexport) bool TITCALL RemoveMemoryBPX(ULONG_PTR MemoryStart, SIZE_T SizeOfMemory);
|
||||
__declspec(dllexport) bool TITCALL GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea);
|
||||
__declspec(dllexport) void TITCALL Getx87FPURegisters(x87FPURegister_t x87FPURegisters[8], TITAN_ENGINE_CONTEXT_t* titcontext);
|
||||
__declspec(dllexport) void TITCALL GetMMXRegisters(uint64_t mmx[8], TITAN_ENGINE_CONTEXT_t* titcontext);
|
||||
__declspec(dllexport) bool TITCALL GetFullContextDataEx(HANDLE hActiveThread, TITAN_ENGINE_CONTEXT_t* titcontext);
|
||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister);
|
||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextData(DWORD IndexOfRegister);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
#ifndef _GLOBAL_ENGINE_THREADING_H
|
||||
#define _GLOBAL_ENGINE_THREADING_H
|
||||
|
||||
#define GetSTInTOPStackFromStatusWord(StatusWord) ((StatusWord & 0x3800) >> 11)
|
||||
#define Getx87r0PositionInRegisterArea(STInTopStack) ((8 - STInTopStack) % 8)
|
||||
#define Calculatex87registerPositionInRegisterArea(x87r0_position, index) (((x87r0_position + index) % 8))
|
||||
#define GetRegisterAreaOf87register(register_area, x87r0_position, index) (((char *) register_area) + 10 * Calculatex87registerPositionInRegisterArea(x87r0_position, index) )
|
||||
#define GetSTValueFromIndex(x87r0_position, index) ((x87r0_position + index) % 8)
|
||||
|
||||
enum CriticalSectionLock
|
||||
{
|
||||
LockBreakPointBuffer,
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -180,6 +180,8 @@ __declspec(dllexport) bool TITCALL SetMemoryBPXEx(ULONG_PTR MemoryStart, SIZE_T
|
|||
__declspec(dllexport) bool TITCALL RemoveMemoryBPX(ULONG_PTR MemoryStart, SIZE_T SizeOfMemory);
|
||||
__declspec(dllexport) bool TITCALL GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea);
|
||||
__declspec(dllexport) bool TITCALL GetFullContextDataEx(HANDLE hActiveThread, TITAN_ENGINE_CONTEXT_t* titcontext);
|
||||
__declspec(dllexport) void TITCALL Getx87FPURegisters(x87FPURegister_t x87FPURegisters[8], TITAN_ENGINE_CONTEXT_t* titcontext);
|
||||
__declspec(dllexport) void TITCALL GetMMXRegisters(uint64_t mmx[8], TITAN_ENGINE_CONTEXT_t* titcontext);
|
||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister);
|
||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextData(DWORD IndexOfRegister);
|
||||
__declspec(dllexport) bool TITCALL SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea);
|
||||
|
|
|
|||
|
|
@ -94,18 +94,18 @@ typedef struct
|
|||
{
|
||||
BYTE data[10];
|
||||
int st_value;
|
||||
int tag;
|
||||
} x87FPURegister_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD ControlWord;
|
||||
DWORD StatusWord;
|
||||
DWORD TagWord;
|
||||
WORD ControlWord;
|
||||
WORD StatusWord;
|
||||
WORD TagWord;
|
||||
DWORD ErrorOffset;
|
||||
DWORD ErrorSelector;
|
||||
DWORD DataOffset;
|
||||
DWORD DataSelector;
|
||||
x87FPURegister_t x87FPURegister[8];
|
||||
DWORD Cr0NpxState;
|
||||
} x87FPU_t;
|
||||
|
||||
|
|
@ -146,7 +146,6 @@ typedef struct
|
|||
BYTE RegisterArea[80];
|
||||
x87FPU_t x87fpu;
|
||||
DWORD MxCsr;
|
||||
uint64_t mmx[8];
|
||||
#ifdef _WIN64
|
||||
M128A XmmRegisters[16];
|
||||
#else // x86
|
||||
|
|
@ -620,6 +619,50 @@ typedef struct
|
|||
#define UE_SEG_DS 40
|
||||
#define UE_SEG_CS 41
|
||||
#define UE_SEG_SS 42
|
||||
#define UE_x87_r0 43
|
||||
#define UE_x87_r1 44
|
||||
#define UE_x87_r2 45
|
||||
#define UE_x87_r3 46
|
||||
#define UE_x87_r4 47
|
||||
#define UE_x87_r5 48
|
||||
#define UE_x87_r6 49
|
||||
#define UE_x87_r7 50
|
||||
#define UE_X87_STATUSWORD 51
|
||||
#define UE_X87_CONTROLWORD 52
|
||||
#define UE_X87_TAGWORD 53
|
||||
#define UE_MXCSR 54
|
||||
#define UE_MMX0 55
|
||||
#define UE_MMX1 56
|
||||
#define UE_MMX2 57
|
||||
#define UE_MMX3 58
|
||||
#define UE_MMX4 59
|
||||
#define UE_MMX5 60
|
||||
#define UE_MMX6 61
|
||||
#define UE_MMX7 62
|
||||
#define UE_XMM0 63
|
||||
#define UE_XMM1 64
|
||||
#define UE_XMM2 65
|
||||
#define UE_XMM3 66
|
||||
#define UE_XMM4 67
|
||||
#define UE_XMM5 68
|
||||
#define UE_XMM6 69
|
||||
#define UE_XMM7 70
|
||||
#define UE_XMM8 71
|
||||
#define UE_XMM9 72
|
||||
#define UE_XMM10 73
|
||||
#define UE_XMM11 74
|
||||
#define UE_XMM12 75
|
||||
#define UE_XMM13 76
|
||||
#define UE_XMM14 77
|
||||
#define UE_XMM15 78
|
||||
#define UE_x87_ST0 79
|
||||
#define UE_x87_ST1 80
|
||||
#define UE_x87_ST2 81
|
||||
#define UE_x87_ST3 82
|
||||
#define UE_x87_ST4 83
|
||||
#define UE_x87_ST5 84
|
||||
#define UE_x87_ST6 85
|
||||
#define UE_x87_ST7 86
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue