fixed x86 compiler address writes
This commit is contained in:
parent
e7fed940de
commit
354cf1bf5d
|
@ -35,6 +35,8 @@
|
|||
#define PUTDST8(dest,value) (*((BYTE *)(dest))=(BYTE)(value)); dest += 1;
|
||||
#define PUTDST16(dest,value) (*((WORD *)(dest))=(WORD)(value)); dest += 2;
|
||||
#define PUTDST32(dest,value) (*((DWORD *)(dest))=(DWORD)(value)); dest += 4;
|
||||
#define PUTDSTPTR(dest, value) \
|
||||
*(void **)(dest) = (void *)(value); dest += sizeof(void *);
|
||||
|
||||
char * mmx_Strings[8] = {
|
||||
"mm0", "mm1", "mm2", "mm3",
|
||||
|
@ -96,7 +98,7 @@ void MmxMoveQwordVariableToReg(int Dest, void *Variable, char *VariableName) {
|
|||
|
||||
PUTDST16(RecompPos,0x6f0f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxMoveQwordRegToVariable(int Dest, void *Variable, char *VariableName) {
|
||||
|
@ -117,7 +119,7 @@ void MmxMoveQwordRegToVariable(int Dest, void *Variable, char *VariableName) {
|
|||
|
||||
PUTDST16(RecompPos,0x7f0f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxPorRegToReg(int Dest, int Source) {
|
||||
|
@ -167,7 +169,7 @@ void MmxPorVariableToReg(void * Variable, char * VariableName, int Dest) {
|
|||
|
||||
PUTDST16(RecompPos,0xeb0f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxPandRegToReg(int Dest, int Source) {
|
||||
|
@ -217,7 +219,7 @@ void MmxPandVariableToReg(void * Variable, char * VariableName, int Dest) {
|
|||
|
||||
PUTDST16(RecompPos,0xdb0f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxPandnRegToReg(int Dest, int Source) {
|
||||
|
@ -296,7 +298,7 @@ void MmxShuffleMemoryToReg(int Dest, void * Variable, char * VariableName, BYTE
|
|||
|
||||
PUTDST16(RecompPos,0x700f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST8(RecompPos, Immed);
|
||||
}
|
||||
|
||||
|
@ -375,7 +377,7 @@ void MmxPmullwVariableToReg(int Dest, void * Variable, char * VariableName) {
|
|||
}
|
||||
PUTDST16(RecompPos,0xd50f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxPmulhuwRegToReg(int Dest, int Source) {
|
||||
|
@ -453,7 +455,7 @@ void MmxPmulhwRegToVariable(int Dest, void * Variable, char * VariableName) {
|
|||
}
|
||||
PUTDST16(RecompPos,0xe50f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
|
||||
|
@ -596,7 +598,7 @@ void MmxPaddswVariableToReg(int Dest, void * Variable, char * VariableName) {
|
|||
|
||||
PUTDST16(RecompPos,0xed0f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxPsubswVariableToReg(int Dest, void * Variable, char * VariableName) {
|
||||
|
@ -617,7 +619,7 @@ void MmxPsubswVariableToReg(int Dest, void * Variable, char * VariableName) {
|
|||
|
||||
PUTDST16(RecompPos,0xe90f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MmxPaddwRegToReg(int Dest, int Source) {
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
#define PUTDST8(dest,value) (*((BYTE *)(dest))=(BYTE)(value)); dest += 1;
|
||||
#define PUTDST16(dest,value) (*((WORD *)(dest))=(WORD)(value)); dest += 2;
|
||||
#define PUTDST32(dest,value) (*((DWORD *)(dest))=(DWORD)(value)); dest += 4;
|
||||
#define PUTDSTPTR(dest, value) \
|
||||
*(void **)(dest) = (void *)(value); dest += sizeof(void *);
|
||||
|
||||
char * sse_Strings[8] = {
|
||||
"xmm0", "xmm1", "xmm2", "xmm3",
|
||||
|
@ -61,7 +63,7 @@ void SseMoveAlignedVariableToReg(void *Variable, char *VariableName, int sseReg)
|
|||
|
||||
PUTDST16(RecompPos,0x280f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SseMoveAlignedN64MemToReg(int sseReg, int AddrReg) {
|
||||
|
@ -92,7 +94,7 @@ void SseMoveAlignedN64MemToReg(int sseReg, int AddrReg) {
|
|||
|
||||
PUTDST16(RecompPos,0x280f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void SseMoveAlignedRegToVariable(int sseReg, void *Variable, char *VariableName) {
|
||||
|
@ -113,7 +115,7 @@ void SseMoveAlignedRegToVariable(int sseReg, void *Variable, char *VariableName)
|
|||
|
||||
PUTDST16(RecompPos,0x290f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SseMoveAlignedRegToN64Mem(int sseReg, int AddrReg) {
|
||||
|
@ -144,7 +146,7 @@ void SseMoveAlignedRegToN64Mem(int sseReg, int AddrReg) {
|
|||
|
||||
PUTDST16(RecompPos,0x290f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void SseMoveUnalignedVariableToReg(void *Variable, char *VariableName, int sseReg) {
|
||||
|
@ -165,7 +167,7 @@ void SseMoveUnalignedVariableToReg(void *Variable, char *VariableName, int sseRe
|
|||
|
||||
PUTDST16(RecompPos,0x100f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SseMoveUnalignedN64MemToReg(int sseReg, int AddrReg) {
|
||||
|
@ -196,7 +198,7 @@ void SseMoveUnalignedN64MemToReg(int sseReg, int AddrReg) {
|
|||
|
||||
PUTDST16(RecompPos,0x100f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void SseMoveUnalignedRegToVariable(int sseReg, void *Variable, char *VariableName) {
|
||||
|
@ -217,7 +219,7 @@ void SseMoveUnalignedRegToVariable(int sseReg, void *Variable, char *VariableNam
|
|||
|
||||
PUTDST16(RecompPos,0x110f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SseMoveUnalignedRegToN64Mem(int sseReg, int AddrReg) {
|
||||
|
@ -248,7 +250,7 @@ void SseMoveUnalignedRegToN64Mem(int sseReg, int AddrReg) {
|
|||
|
||||
PUTDST16(RecompPos,0x110f);
|
||||
PUTDST8(RecompPos, x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void SseMoveRegToReg(int Dest, int Source) {
|
||||
|
|
132
Source/RSP/X86.c
132
Source/RSP/X86.c
|
@ -37,6 +37,8 @@
|
|||
#define PUTDST8(dest,value) (*((BYTE *)(dest))=(BYTE)(value)); dest += 1;
|
||||
#define PUTDST16(dest,value) (*((WORD *)(dest))=(WORD)(value)); dest += 2;
|
||||
#define PUTDST32(dest,value) (*((DWORD *)(dest))=(DWORD)(value)); dest += 4;
|
||||
#define PUTDSTPTR(dest, value) \
|
||||
*(void **)(dest) = (void *)(value); dest += sizeof(void *);
|
||||
|
||||
char * x86_Strings[8] = {
|
||||
"eax", "ebx", "ecx", "edx",
|
||||
|
@ -99,7 +101,7 @@ void AdcX86regToVariable(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("AddVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AdcX86regHalfToVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -118,13 +120,13 @@ void AdcX86regHalfToVariable(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("AdcX86regHalfToVariable\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AdcConstToVariable(void *Variable, char *VariableName, BYTE Constant) {
|
||||
CPU_Message(" adc dword ptr [%s], %Xh", VariableName, Constant);
|
||||
PUTDST16(RecompPos,0x1583);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST8(RecompPos,Constant);
|
||||
}
|
||||
|
||||
|
@ -148,7 +150,7 @@ void AdcConstToX86reg( BYTE Constant, int x86reg ) {
|
|||
void AddConstToVariable (DWORD Const, void *Variable, char *VariableName) {
|
||||
CPU_Message(" add dword ptr [%s], 0x%X",VariableName, Const);
|
||||
PUTDST16(RecompPos,0x0581);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -194,7 +196,7 @@ void AdcConstHalfToVariable(void *Variable, char *VariableName, BYTE Constant) {
|
|||
PUTDST8(RecompPos,0x83);
|
||||
PUTDST8(RecompPos,0x15);
|
||||
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
|
||||
PUTDST8(RecompPos,Constant);
|
||||
}
|
||||
|
@ -213,7 +215,7 @@ void AddVariableToX86reg(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("AddVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AddX86regToVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -230,7 +232,7 @@ void AddX86regToVariable(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("AddVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AddX86regHalfToVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -250,7 +252,7 @@ void AddX86regHalfToVariable(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("AddVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AddX86RegToX86Reg(int Destination, int Source) {
|
||||
|
@ -283,7 +285,7 @@ void AddX86RegToX86Reg(int Destination, int Source) {
|
|||
void AndConstToVariable (DWORD Const, void *Variable, char *VariableName) {
|
||||
CPU_Message(" and dword ptr [%s], 0x%X",VariableName, Const);
|
||||
PUTDST16(RecompPos,0x2581);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -328,7 +330,7 @@ void AndVariableToX86Reg(void * Variable, char * VariableName, int x86Reg) {
|
|||
case x86_ESP: PUTDST16(RecompPos,0x2523); break;
|
||||
case x86_EBP: PUTDST16(RecompPos,0x2D23); break;
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AndVariableToX86regHalf(void * Variable, char * VariableName, int x86Reg) {
|
||||
|
@ -344,7 +346,7 @@ void AndVariableToX86regHalf(void * Variable, char * VariableName, int x86Reg) {
|
|||
case x86_ESP: PUTDST16(RecompPos,0x2523); break;
|
||||
case x86_EBP: PUTDST16(RecompPos,0x2D23); break;
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AndX86RegToVariable(void * Variable, char * VariableName, int x86Reg) {
|
||||
|
@ -359,7 +361,7 @@ void AndX86RegToVariable(void * Variable, char * VariableName, int x86Reg) {
|
|||
case x86_ESP: PUTDST16(RecompPos,0x2521); break;
|
||||
case x86_EBP: PUTDST16(RecompPos,0x2D21); break;
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void AndX86RegToX86Reg(int Destination, int Source) {
|
||||
|
@ -466,13 +468,13 @@ void BsrX86RegToX86Reg(int Destination, int Source) {
|
|||
void Call_Direct(void * FunctAddress, char * FunctName) {
|
||||
CPU_Message(" call offset %s",FunctName);
|
||||
PUTDST8(RecompPos,0xE8);
|
||||
PUTDST32(RecompPos,(DWORD)FunctAddress-(DWORD)RecompPos - 4);
|
||||
PUTDSTPTR(RecompPos, (size_t)FunctAddress - (size_t)RecompPos - sizeof(void *));
|
||||
}
|
||||
|
||||
void Call_Indirect(void * FunctAddress, char * FunctName) {
|
||||
CPU_Message(" call [%s]",FunctName);
|
||||
PUTDST16(RecompPos,0x15FF);
|
||||
PUTDST32(RecompPos,FunctAddress);
|
||||
PUTDSTPTR(RecompPos, FunctAddress);
|
||||
}
|
||||
|
||||
void CondMoveEqual(int Destination, int Source) {
|
||||
|
@ -730,7 +732,7 @@ void CondMoveLessEqual(int Destination, int Source) {
|
|||
void CompConstToVariable(DWORD Const, void * Variable, char * VariableName) {
|
||||
CPU_Message(" cmp dword ptr [%s], 0x%X",VariableName, Const);
|
||||
PUTDST16(RecompPos,0x3D81);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -740,7 +742,7 @@ void CompConstHalfToVariable(WORD Const, void * Variable, char * VariableName) {
|
|||
PUTDST8(RecompPos,0x81);
|
||||
PUTDST8(RecompPos,0x3D);
|
||||
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST16(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -789,7 +791,7 @@ void CompX86regToVariable(int x86Reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("Unknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void CompVariableToX86reg(int x86Reg, void * Variable, char * VariableName) {
|
||||
|
@ -806,7 +808,7 @@ void CompVariableToX86reg(int x86Reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("Unknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void CompX86RegToX86Reg(int Destination, int Source) {
|
||||
|
@ -1149,7 +1151,7 @@ void LeaSourceAndOffset(int x86DestReg, int x86SourceReg, size_t offset) {
|
|||
void MoveConstByteToVariable (BYTE Const,void *Variable, char *VariableName) {
|
||||
CPU_Message(" mov byte ptr [%s], %Xh",VariableName,Const);
|
||||
PUTDST16(RecompPos,0x05C6);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST8(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -1157,14 +1159,14 @@ void MoveConstHalfToVariable (WORD Const,void *Variable, char *VariableName) {
|
|||
CPU_Message(" mov word ptr [%s], %Xh",VariableName,Const);
|
||||
PUTDST8(RecompPos,0x66);
|
||||
PUTDST16(RecompPos,0x05C7);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST16(RecompPos,Const);
|
||||
}
|
||||
|
||||
void MoveConstToVariable (DWORD Const,void *Variable, char *VariableName) {
|
||||
CPU_Message(" mov dword ptr [%s], %Xh",VariableName,Const);
|
||||
PUTDST16(RecompPos,0x05C7);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -1481,7 +1483,7 @@ void MoveN64MemDispToX86reg(int x86reg, int AddrReg, BYTE Disp) {
|
|||
case x86_EBP: x86Command += 0xA800; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM + Disp);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM + Disp);
|
||||
}
|
||||
|
||||
void MoveN64MemToX86reg(int x86reg, int AddrReg) {
|
||||
|
@ -1510,7 +1512,7 @@ void MoveN64MemToX86reg(int x86reg, int AddrReg) {
|
|||
case x86_EBP: x86Command += 0xA800; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveN64MemToX86regByte(int x86reg, int AddrReg) {
|
||||
|
@ -1537,7 +1539,7 @@ void MoveN64MemToX86regByte(int x86reg, int AddrReg) {
|
|||
break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveN64MemToX86regHalf(int x86reg, int AddrReg) {
|
||||
|
@ -1567,7 +1569,7 @@ void MoveN64MemToX86regHalf(int x86reg, int AddrReg) {
|
|||
case x86_EBP: x86Command += 0xA800; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveX86regByteToN64Mem(int x86reg, int AddrReg) {
|
||||
|
@ -1590,7 +1592,7 @@ void MoveX86regByteToN64Mem(int x86reg, int AddrReg) {
|
|||
case x86_EDX: x86Command += 0x9000; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveX86regHalfToN64Mem(int x86reg, int AddrReg) {
|
||||
|
@ -1619,7 +1621,7 @@ void MoveX86regHalfToN64Mem(int x86reg, int AddrReg) {
|
|||
case x86_EBP: x86Command += 0xA800; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveX86regToN64Mem(int x86reg, int AddrReg) {
|
||||
|
@ -1647,7 +1649,7 @@ void MoveX86regToN64Mem(int x86reg, int AddrReg) {
|
|||
case x86_EBP: x86Command += 0xA800; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveX86regToN64MemDisp(int x86reg, int AddrReg, BYTE Disp) {
|
||||
|
@ -1675,7 +1677,7 @@ void MoveX86regToN64MemDisp(int x86reg, int AddrReg, BYTE Disp) {
|
|||
case x86_EBP: x86Command += 0xA800; break;
|
||||
}
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM+Disp);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM + Disp);
|
||||
}
|
||||
|
||||
void MoveVariableToX86reg(void *Variable, char *VariableName, int x86reg) {
|
||||
|
@ -1691,7 +1693,7 @@ void MoveVariableToX86reg(void *Variable, char *VariableName, int x86reg) {
|
|||
case x86_EBP: PUTDST16(RecompPos,0x2D8B); break;
|
||||
default: DisplayError("MoveVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveVariableToX86regByte(void *Variable, char *VariableName, int x86reg) {
|
||||
|
@ -1703,7 +1705,7 @@ void MoveVariableToX86regByte(void *Variable, char *VariableName, int x86reg) {
|
|||
case x86_EDX: PUTDST16(RecompPos,0x158A); break;
|
||||
default: DisplayError("MoveVariableToX86regByte\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveVariableToX86regHalf(void *Variable, char *VariableName, int x86reg) {
|
||||
|
@ -1720,7 +1722,7 @@ void MoveVariableToX86regHalf(void *Variable, char *VariableName, int x86reg) {
|
|||
case x86_EBP: PUTDST16(RecompPos,0x2D8B); break;
|
||||
default: DisplayError("MoveVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveX86regByteToVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -1733,7 +1735,7 @@ void MoveX86regByteToVariable(int x86reg, void * Variable, char * VariableName)
|
|||
default:
|
||||
DisplayError("MoveX86regByteToVariable\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveX86regHalfToVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -1751,7 +1753,7 @@ void MoveX86regHalfToVariable(int x86reg, void * Variable, char * VariableName)
|
|||
default:
|
||||
DisplayError("MoveX86regHalfToVariable\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveX86regToVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -1768,7 +1770,7 @@ void MoveX86regToVariable(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("MoveX86regToVariable\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveX86RegToX86Reg(int Source, int Destination) {
|
||||
|
@ -1877,7 +1879,7 @@ void MoveSxVariableToX86regByte(void *Variable, char *VariableName, int x86reg)
|
|||
case x86_EBP: PUTDST8(RecompPos,0x2D); break;
|
||||
default: DisplayError("MoveSxVariableToX86regByte\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveSxVariableToX86regHalf(void *Variable, char *VariableName, int x86reg) {
|
||||
|
@ -1896,7 +1898,7 @@ void MoveSxVariableToX86regHalf(void *Variable, char *VariableName, int x86reg)
|
|||
case x86_EBP: PUTDST8(RecompPos,0x2D); break;
|
||||
default: DisplayError("MoveSxVariableToX86regHalf\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveSxN64MemToX86regByte(int x86reg, int AddrReg) {
|
||||
|
@ -1924,7 +1926,7 @@ void MoveSxN64MemToX86regByte(int x86reg, int AddrReg) {
|
|||
}
|
||||
PUTDST8(RecompPos,0x0f);
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveSxN64MemToX86regHalf(int x86reg, int AddrReg) {
|
||||
|
@ -1955,7 +1957,7 @@ void MoveSxN64MemToX86regHalf(int x86reg, int AddrReg) {
|
|||
|
||||
PUTDST8(RecompPos, 0x0f);
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveZxX86RegHalfToX86Reg(int Source, int Destination) {
|
||||
|
@ -2035,7 +2037,7 @@ void MoveZxVariableToX86regByte(void *Variable, char *VariableName, int x86reg)
|
|||
case x86_EBP: PUTDST8(RecompPos,0x2D); break;
|
||||
default: DisplayError("MoveZxVariableToX86regByte\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveZxVariableToX86regHalf(void *Variable, char *VariableName, int x86reg) {
|
||||
|
@ -2054,7 +2056,7 @@ void MoveZxVariableToX86regHalf(void *Variable, char *VariableName, int x86reg)
|
|||
case x86_EBP: PUTDST8(RecompPos,0x2D); break;
|
||||
default: DisplayError("MoveZxVariableToX86regHalf\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void MoveZxN64MemToX86regByte(int x86reg, int AddrReg) {
|
||||
|
@ -2082,7 +2084,7 @@ void MoveZxN64MemToX86regByte(int x86reg, int AddrReg) {
|
|||
}
|
||||
PUTDST8(RecompPos,0x0f);
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MoveZxN64MemToX86regHalf(int x86reg, int AddrReg) {
|
||||
|
@ -2113,7 +2115,7 @@ void MoveZxN64MemToX86regHalf(int x86reg, int AddrReg) {
|
|||
|
||||
PUTDST8(RecompPos, 0x0f);
|
||||
PUTDST16(RecompPos,x86Command);
|
||||
PUTDST32(RecompPos,RSPInfo.DMEM);
|
||||
PUTDSTPTR(RecompPos, RSPInfo.DMEM);
|
||||
}
|
||||
|
||||
void MulX86reg(int x86reg) {
|
||||
|
@ -2167,7 +2169,7 @@ void NotX86reg(int x86reg) {
|
|||
void OrConstToVariable(DWORD Const, void * Variable, char * VariableName) {
|
||||
CPU_Message(" or dword ptr [%s], 0x%X",VariableName, Const);
|
||||
PUTDST16(RecompPos,0x0D81);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -2212,7 +2214,7 @@ void OrVariableToX86Reg(void * Variable, char * VariableName, int x86Reg) {
|
|||
case x86_ESP: PUTDST16(RecompPos,0x250B); break;
|
||||
case x86_EBP: PUTDST16(RecompPos,0x2D0B); break;
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void OrVariableToX86regHalf(void * Variable, char * VariableName, int x86Reg) {
|
||||
|
@ -2228,7 +2230,7 @@ void OrVariableToX86regHalf(void * Variable, char * VariableName, int x86Reg) {
|
|||
case x86_ESP: PUTDST16(RecompPos,0x250B); break;
|
||||
case x86_EBP: PUTDST16(RecompPos,0x2D0B); break;
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void OrX86RegToVariable(void * Variable, char * VariableName, int x86Reg) {
|
||||
|
@ -2243,7 +2245,7 @@ void OrX86RegToVariable(void * Variable, char * VariableName, int x86Reg) {
|
|||
case x86_ESP: PUTDST16(RecompPos,0x2509); break;
|
||||
case x86_EBP: PUTDST16(RecompPos,0x2D09); break;
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void OrX86RegToX86Reg(int Destination, int Source) {
|
||||
|
@ -2341,14 +2343,14 @@ void SetlVariable(void * Variable, char * VariableName) {
|
|||
CPU_Message(" setl byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x9C0F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SetleVariable(void * Variable, char * VariableName) {
|
||||
CPU_Message(" setle byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x9E0F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void Setb(int x86reg) {
|
||||
|
@ -2368,7 +2370,7 @@ void SetbVariable(void * Variable, char * VariableName) {
|
|||
CPU_Message(" setb byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x920F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void Setg(int x86reg) {
|
||||
|
@ -2388,14 +2390,14 @@ void SetgVariable(void * Variable, char * VariableName) {
|
|||
CPU_Message(" setg byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x9F0F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SetgeVariable(void * Variable, char * VariableName) {
|
||||
CPU_Message(" setge byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x9D0F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void Seta(int x86reg) {
|
||||
|
@ -2415,7 +2417,7 @@ void SetaVariable(void * Variable, char * VariableName) {
|
|||
CPU_Message(" seta byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x970F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void Setae(int x86reg) {
|
||||
|
@ -2448,7 +2450,7 @@ void SetzVariable(void * Variable, char * VariableName) {
|
|||
CPU_Message(" setz byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x940F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void Setnz(int x86reg) {
|
||||
|
@ -2468,7 +2470,7 @@ void SetnzVariable(void * Variable, char * VariableName) {
|
|||
CPU_Message(" setnz byte ptr [%s]",VariableName);
|
||||
PUTDST16(RecompPos,0x950F);
|
||||
PUTDST8(RecompPos,0x05);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void ShiftLeftDoubleImmed(int Destination, int Source, BYTE Immediate) {
|
||||
|
@ -2568,7 +2570,7 @@ void ShiftLeftSignVariableImmed(void *Variable, char *VariableName, BYTE Immedia
|
|||
CPU_Message(" shl dword ptr [%s], %Xh",VariableName, Immediate);
|
||||
|
||||
PUTDST16(RecompPos,0x25C1)
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST8(RecompPos,Immediate);
|
||||
}
|
||||
|
||||
|
@ -2593,7 +2595,7 @@ void ShiftRightSignVariableImmed(void *Variable, char *VariableName, BYTE Immedi
|
|||
CPU_Message(" sar dword ptr [%s], %Xh",VariableName, Immediate);
|
||||
|
||||
PUTDST16(RecompPos,0x3DC1)
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST8(RecompPos,Immediate);
|
||||
}
|
||||
|
||||
|
@ -2630,14 +2632,14 @@ void ShiftRightUnsignVariableImmed(void *Variable, char *VariableName, BYTE Imme
|
|||
CPU_Message(" shr dword ptr [%s], %Xh",VariableName, Immediate);
|
||||
|
||||
PUTDST16(RecompPos,0x2DC1)
|
||||
PUTDST32(RecompPos, Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST8(RecompPos,Immediate);
|
||||
}
|
||||
|
||||
void SubConstFromVariable (DWORD Const, void *Variable, char *VariableName) {
|
||||
CPU_Message(" sub dword ptr [%s], 0x%X",VariableName, Const);\
|
||||
PUTDST16(RecompPos,0x2D81);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -2684,7 +2686,7 @@ void SubVariableFromX86reg(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("SubVariableFromX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SubX86regFromVariable(int x86reg, void * Variable, char * VariableName) {
|
||||
|
@ -2701,7 +2703,7 @@ void SubX86regFromVariable(int x86reg, void * Variable, char * VariableName) {
|
|||
default:
|
||||
DisplayError("SubX86regFromVariable\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void SubX86RegToX86Reg(int Destination, int Source) {
|
||||
|
@ -2759,7 +2761,7 @@ void SbbX86RegToX86Reg(int Destination, int Source) {
|
|||
void TestConstToVariable(DWORD Const, void * Variable, char * VariableName) {
|
||||
CPU_Message(" test dword ptr [%s], 0x%X",VariableName, Const);
|
||||
PUTDST16(RecompPos,0x05F7);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos,Const);
|
||||
}
|
||||
|
||||
|
@ -2840,7 +2842,7 @@ void XorConstToVariable(void *Variable, char *VariableName, DWORD Const) {
|
|||
CPU_Message(" xor dword ptr [%s], 0x%X",VariableName, Const);
|
||||
|
||||
PUTDST16(RecompPos, 0x3581);
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
PUTDST32(RecompPos, Const);
|
||||
}
|
||||
|
||||
|
@ -2885,7 +2887,7 @@ void XorVariableToX86reg(void *Variable, char *VariableName, int x86reg) {
|
|||
case x86_EBP: PUTDST16(RecompPos,0x2D33); break;
|
||||
default: DisplayError("XorVariableToX86reg\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
||||
void XorX86RegToVariable(void *Variable, char *VariableName, int x86reg) {
|
||||
|
@ -2901,5 +2903,5 @@ void XorX86RegToVariable(void *Variable, char *VariableName, int x86reg) {
|
|||
case x86_EBP: PUTDST16(RecompPos,0x2D31); break;
|
||||
default: DisplayError("XorX86RegToVariable\nUnknown x86 Register");
|
||||
}
|
||||
PUTDST32(RecompPos,Variable);
|
||||
PUTDSTPTR(RecompPos, Variable);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue