diff options
Diffstat (limited to 'Source/Core/Common/Src/x64Analyzer.cpp')
| -rw-r--r-- | Source/Core/Common/Src/x64Analyzer.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/Source/Core/Common/Src/x64Analyzer.cpp b/Source/Core/Common/Src/x64Analyzer.cpp index 66a2fe217f..37a9030a4b 100644 --- a/Source/Core/Common/Src/x64Analyzer.cpp +++ b/Source/Core/Common/Src/x64Analyzer.cpp @@ -60,18 +60,18 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo &info, int acc codeByte = *codePtr++; - // Skip two-byte opcode byte - bool twoByte = false; - if(codeByte == 0x0F) - { - twoByte = true; + // Skip two-byte opcode byte + bool twoByte = false; + if(codeByte == 0x0F) + { + twoByte = true; codeByte2 = *codePtr++; - } + } if (!twoByte) { - if ((codeByte & 0xF0) == 0x80 || - ((codeByte & 0xF8) == 0xC0 && (codeByte & 0x0E) != 0x02)) + if ((codeByte & 0xF0) == 0x80 || + ((codeByte & 0xF8) == 0xC0 && (codeByte & 0x0E) != 0x02)) { modRMbyte = *codePtr++; hasModRM = true; @@ -79,20 +79,20 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo &info, int acc } else { - if (((codeByte2 & 0xF0) == 0x00 && (codeByte2 & 0x0F) >= 0x04 && (codeByte2 & 0x0D) != 0x0D) || - (codeByte2 & 0xF0) == 0x30 || - codeByte2 == 0x77 || - (codeByte2 & 0xF0) == 0x80 || - ((codeByte2 & 0xF0) == 0xA0 && (codeByte2 & 0x07) <= 0x02) || - (codeByte2 & 0xF8) == 0xC8) - { - // No mod R/M byte - } - else - { + if (((codeByte2 & 0xF0) == 0x00 && (codeByte2 & 0x0F) >= 0x04 && (codeByte2 & 0x0D) != 0x0D) || + (codeByte2 & 0xF0) == 0x30 || + codeByte2 == 0x77 || + (codeByte2 & 0xF0) == 0x80 || + ((codeByte2 & 0xF0) == 0xA0 && (codeByte2 & 0x07) <= 0x02) || + (codeByte2 & 0xF8) == 0xC8) + { + // No mod R/M byte + } + else + { modRMbyte = *codePtr++; hasModRM = true; - } + } } if (hasModRM) @@ -130,7 +130,7 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo &info, int acc info.displacement = *((s32 *)codePtr); codePtr += displacementSize; - + if (accessType == 1) { info.isMemoryWrite = true; |
