mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
4c3230bcde
It isn't easily accessible with sigaction or Mach exceptions (well, requires an additional system call in the latter), and isn't necessary. (and get rid of the enum, because it's only used once, and the comments are more expressive than enum names)
45 lines
747 B
C
45 lines
747 B
C
// Copyright 2013 Dolphin Emulator Project
|
|
// Licensed under GPLv2
|
|
// Refer to the license.txt file included.
|
|
|
|
#ifndef _X64ANALYZER_H_
|
|
#define _X64ANALYZER_H_
|
|
|
|
#include "Common.h"
|
|
|
|
struct InstructionInfo
|
|
{
|
|
int operandSize; //8, 16, 32, 64
|
|
int instructionSize;
|
|
int regOperandReg;
|
|
int otherReg;
|
|
int scaledReg;
|
|
bool zeroExtend;
|
|
bool signExtend;
|
|
bool hasImmediate;
|
|
bool isMemoryWrite;
|
|
u64 immediate;
|
|
s32 displacement;
|
|
};
|
|
|
|
struct ModRM
|
|
{
|
|
int mod, reg, rm;
|
|
ModRM(u8 modRM, u8 rex)
|
|
{
|
|
mod = modRM >> 6;
|
|
reg = ((modRM >> 3) & 7) | ((rex & 4)?8:0);
|
|
rm = modRM & 7;
|
|
}
|
|
};
|
|
|
|
enum AccessType
|
|
{
|
|
OP_ACCESS_READ = 0,
|
|
OP_ACCESS_WRITE = 1
|
|
};
|
|
|
|
bool DisassembleMov(const unsigned char *codePtr, InstructionInfo *info);
|
|
|
|
#endif // _X64ANALYZER_H_
|