6502/vasm/cpus/x86/registers.h

181 lines
5.3 KiB
C

{"st", FloatReg|FloatAcc, 0, 0},
/* 8 bit regs */
#define AL_INDEX 1
{"al", Reg8|Acc, 0, 0},
{"cl", Reg8|ShiftCntReg, 0, 1},
{"dl", Reg8, 0, 2},
{"bl", Reg8, 0, 3},
{"ah", Reg8, 0, 4},
{"ch", Reg8, 0, 5},
{"dh", Reg8, 0, 6},
{"bh", Reg8, 0, 7},
{"axl", Reg8|Acc, RegRex64, 0},
{"cxl", Reg8, RegRex64, 1},
{"dxl", Reg8, RegRex64, 2},
{"bxl", Reg8, RegRex64, 3},
{"spl", Reg8, RegRex64, 4},
{"bpl", Reg8, RegRex64, 5},
{"sil", Reg8, RegRex64, 6},
{"dil", Reg8, RegRex64, 7},
{"r8b", Reg8, RegRex64|RegRex, 0},
{"r9b", Reg8, RegRex64|RegRex, 1},
{"r10b", Reg8, RegRex64|RegRex, 2},
{"r11b", Reg8, RegRex64|RegRex, 3},
{"r12b", Reg8, RegRex64|RegRex, 4},
{"r13b", Reg8, RegRex64|RegRex, 5},
{"r14b", Reg8, RegRex64|RegRex, 6},
{"r15b", Reg8, RegRex64|RegRex, 7},
/* 16 bit regs */
#define AX_INDEX 25
{"ax", Reg16|Acc, 0, 0},
{"cx", Reg16, 0, 1},
{"dx", Reg16|IOPortReg, 0, 2},
{"bx", Reg16|BaseIndex, 0, 3},
{"sp", Reg16, 0, 4},
{"bp", Reg16|BaseIndex, 0, 5},
{"si", Reg16|BaseIndex, 0, 6},
{"di", Reg16|BaseIndex, 0, 7},
{"r8w", Reg16, RegRex, 0},
{"r9w", Reg16, RegRex, 1},
{"r10w", Reg16, RegRex, 2},
{"r11w", Reg16, RegRex, 3},
{"r12w", Reg16, RegRex, 4},
{"r13w", Reg16, RegRex, 5},
{"r14w", Reg16, RegRex, 6},
{"r15w", Reg16, RegRex, 7},
/* 32 bit regs */
#define EAX_INDEX 41
{"eax", Reg32|BaseIndex|Acc, 0, 0},
{"ecx", Reg32|BaseIndex, 0, 1},
{"edx", Reg32|BaseIndex, 0, 2},
{"ebx", Reg32|BaseIndex, 0, 3},
{"esp", Reg32, 0, 4},
{"ebp", Reg32|BaseIndex, 0, 5},
{"esi", Reg32|BaseIndex, 0, 6},
{"edi", Reg32|BaseIndex, 0, 7},
{"r8d", Reg32|BaseIndex, RegRex, 0},
{"r9d", Reg32|BaseIndex, RegRex, 1},
{"r10d", Reg32|BaseIndex, RegRex, 2},
{"r11d", Reg32|BaseIndex, RegRex, 3},
{"r12d", Reg32|BaseIndex, RegRex, 4},
{"r13d", Reg32|BaseIndex, RegRex, 5},
{"r14d", Reg32|BaseIndex, RegRex, 6},
{"r15d", Reg32|BaseIndex, RegRex, 7},
{"rax", Reg64|BaseIndex|Acc, 0, 0},
{"rcx", Reg64|BaseIndex, 0, 1},
{"rdx", Reg64|BaseIndex, 0, 2},
{"rbx", Reg64|BaseIndex, 0, 3},
{"rsp", Reg64, 0, 4},
{"rbp", Reg64|BaseIndex, 0, 5},
{"rsi", Reg64|BaseIndex, 0, 6},
{"rdi", Reg64|BaseIndex, 0, 7},
{"r8", Reg64|BaseIndex, RegRex, 0},
{"r9", Reg64|BaseIndex, RegRex, 1},
{"r10", Reg64|BaseIndex, RegRex, 2},
{"r11", Reg64|BaseIndex, RegRex, 3},
{"r12", Reg64|BaseIndex, RegRex, 4},
{"r13", Reg64|BaseIndex, RegRex, 5},
{"r14", Reg64|BaseIndex, RegRex, 6},
{"r15", Reg64|BaseIndex, RegRex, 7},
/* segment registers */
{"es", SegReg2, 0, 0},
{"cs", SegReg2, 0, 1},
{"ss", SegReg2, 0, 2},
{"ds", SegReg2, 0, 3},
{"fs", SegReg3, 0, 4},
{"gs", SegReg3, 0, 5},
/* control registers */
{"cr0", CtrlReg, 0, 0},
{"cr1", CtrlReg, 0, 1},
{"cr2", CtrlReg, 0, 2},
{"cr3", CtrlReg, 0, 3},
{"cr4", CtrlReg, 0, 4},
{"cr5", CtrlReg, 0, 5},
{"cr6", CtrlReg, 0, 6},
{"cr7", CtrlReg, 0, 7},
{"cr8", CtrlReg, RegRex, 0},
{"cr9", CtrlReg, RegRex, 1},
{"cr10", CtrlReg, RegRex, 2},
{"cr11", CtrlReg, RegRex, 3},
{"cr12", CtrlReg, RegRex, 4},
{"cr13", CtrlReg, RegRex, 5},
{"cr14", CtrlReg, RegRex, 6},
{"cr15", CtrlReg, RegRex, 7},
/* debug registers */
{"db0", DebugReg, 0, 0},
{"db1", DebugReg, 0, 1},
{"db2", DebugReg, 0, 2},
{"db3", DebugReg, 0, 3},
{"db4", DebugReg, 0, 4},
{"db5", DebugReg, 0, 5},
{"db6", DebugReg, 0, 6},
{"db7", DebugReg, 0, 7},
{"db8", DebugReg, RegRex, 0},
{"db9", DebugReg, RegRex, 1},
{"db10", DebugReg, RegRex, 2},
{"db11", DebugReg, RegRex, 3},
{"db12", DebugReg, RegRex, 4},
{"db13", DebugReg, RegRex, 5},
{"db14", DebugReg, RegRex, 6},
{"db15", DebugReg, RegRex, 7},
{"dr0", DebugReg, 0, 0},
{"dr1", DebugReg, 0, 1},
{"dr2", DebugReg, 0, 2},
{"dr3", DebugReg, 0, 3},
{"dr4", DebugReg, 0, 4},
{"dr5", DebugReg, 0, 5},
{"dr6", DebugReg, 0, 6},
{"dr7", DebugReg, 0, 7},
{"dr8", DebugReg, RegRex, 0},
{"dr9", DebugReg, RegRex, 1},
{"dr10", DebugReg, RegRex, 2},
{"dr11", DebugReg, RegRex, 3},
{"dr12", DebugReg, RegRex, 4},
{"dr13", DebugReg, RegRex, 5},
{"dr14", DebugReg, RegRex, 6},
{"dr15", DebugReg, RegRex, 7},
/* test registers */
{"tr0", TestReg, 0, 0},
{"tr1", TestReg, 0, 1},
{"tr2", TestReg, 0, 2},
{"tr3", TestReg, 0, 3},
{"tr4", TestReg, 0, 4},
{"tr5", TestReg, 0, 5},
{"tr6", TestReg, 0, 6},
{"tr7", TestReg, 0, 7},
/* mmx and simd registers */
{"mm0", MMXReg, 0, 0},
{"mm1", MMXReg, 0, 1},
{"mm2", MMXReg, 0, 2},
{"mm3", MMXReg, 0, 3},
{"mm4", MMXReg, 0, 4},
{"mm5", MMXReg, 0, 5},
{"mm6", MMXReg, 0, 6},
{"mm7", MMXReg, 0, 7},
{"xmm0", XMMReg, 0, 0},
{"xmm1", XMMReg, 0, 1},
{"xmm2", XMMReg, 0, 2},
{"xmm3", XMMReg, 0, 3},
{"xmm4", XMMReg, 0, 4},
{"xmm5", XMMReg, 0, 5},
{"xmm6", XMMReg, 0, 6},
{"xmm7", XMMReg, 0, 7},
{"xmm8", XMMReg, RegRex, 0},
{"xmm9", XMMReg, RegRex, 1},
{"xmm10", XMMReg, RegRex, 2},
{"xmm11", XMMReg, RegRex, 3},
{"xmm12", XMMReg, RegRex, 4},
{"xmm13", XMMReg, RegRex, 5},
{"xmm14", XMMReg, RegRex, 6},
{"xmm15", XMMReg, RegRex, 7},
{"st(0)", FloatReg|FloatAcc, 0, 0},
{"st(1)", FloatReg, 0, 1},
{"st(2)", FloatReg, 0, 2},
{"st(3)", FloatReg, 0, 3},
{"st(4)", FloatReg, 0, 4},
{"st(5)", FloatReg, 0, 5},
{"st(6)", FloatReg, 0, 6},
{"st(7)", FloatReg, 0, 7},
{"rip", BaseIndex, 0, 0},
{NULL, 0, 0, 0}