Supermodel/ppc_drc/genx86.h
2006-07-17 11:17:01 +00:00

173 lines
2.2 KiB
C

typedef enum
{
JUMP_TYPE_NONE = 0,
JUMP_TYPE_BACKWARDS = 1,
JUMP_TYPE_FORWARD = 2,
} JUMP_TYPE;
typedef struct
{
void *pointer;
JUMP_TYPE jump_type;
} JUMP_TARGET;
enum
{
REG_EAX = 0,
REG_ECX = 1,
REG_EDX = 2,
REG_EBX = 3,
REG_ESP = 4,
REG_EBP = 5,
REG_ESI = 6,
REG_EDI = 7
} X86_REGS;
enum
{
REG_AL = 0,
REG_CL = 1,
REG_DL = 2,
REG_BL = 3,
REG_AH = 4,
REG_CH = 5,
REG_DH = 6,
REG_BH = 7
} X86_REGS8;
enum
{
REG_AX = 0,
REG_CX = 1,
REG_DX = 2,
REG_BX = 3,
REG_SP = 4,
REG_BP = 5,
REG_SI = 6,
REG_DI = 7
} X86_REGS16;
enum
{
REG_XMM0 = 0,
REG_XMM1 = 1,
REG_XMM2 = 2,
REG_XMM3 = 3,
REG_XMM4 = 4,
REG_XMM5 = 5,
REG_XMM6 = 6,
REG_XMM7 = 7,
} X86_REGS_SSE2;
typedef enum
{
ADD,
ADDI,
ADDIM,
ADDMR,
ADC,
ADCI,
ADCMR,
AND,
ANDI,
ANDIM,
ANDMR,
BSR,
BSWAP,
BTIM,
BTRI,
CALL,
CALLI,
CMOVAMR,
CMOVBMR,
CMOVGMR,
CMOVLMR,
CMOVZMR,
CMP,
CMPI,
CMPIM,
CMPMR,
CVTSD2SS,
CVTSS2SD,
FABS,
FCHS,
FADDM64,
FDIVM64,
FLDM64,
FSTPM64,
IDIV,
IMUL,
JA,
JAE,
JB,
JG,
JL,
JMP,
JMPI,
JMPM,
JMPR,
JNS,
JNZ,
JZ,
MOV,
MOVI,
MOVIM,
MOVMR,
MOVRM,
MOVR8M8,
MOVM8R8,
MOVS_R8R32,
MOVS_R16R32,
MOVZ_M8R32,
MOVZ_R8R32,
MOVZ_R16R32,
MOVDRX,
MOVDXR,
MOVQMX,
MOVQXM,
MUL,
NEG,
NOT,
OR,
ORI,
ORIM,
ORMR,
POP,
POPAD,
PUSH,
PUSHAD,
PUSHI,
RET,
ROLCL,
ROLI,
SETCR8,
SETNCR8,
SETZR8,
SHLCL,
SHLI,
SHRCL,
SHRI,
SUB,
SUBI,
SUBIM,
SUBMR,
TESTI,
XCHGR8R8,
XOR,
XORI,
XORMR,
} GENX86_OPCODE;
void gen(GENX86_OPCODE opcode, INT32 dst_param, INT32 src_param);
void gen_jmp_target(JUMP_TARGET *target);
void gen_jmp(GENX86_OPCODE opcode, JUMP_TARGET *target);
void gen_jmp_rpr(INT32 reg1, INT32 reg2);
void gen_mov_dpr_to_reg(INT32 dst_reg, INT32 disp, INT32 disp_reg);
void gen_mov_dprs_to_reg(INT32 dst_reg, INT32 disp, INT32 disp_reg, INT32 disp_reg_scale);
void gen_mov_reg_to_dpr(INT32 src_reg, INT32 disp, INT32 disp_reg);
void gen_reset_cache(void);
UINT8 *gen_get_cache_pos(void);
UINT32 gen_get_instruction_amount(void);
void init_jmp_target(JUMP_TARGET *target);
void init_genx86(void);
void shutdown_genx86(void);