mirror of
https://github.com/capstone-engine/capstone.git
synced 2026-10-12 02:11:43 +00:00
Extend M680X support to HCS12X (#2898)
Signed-off-by: Naren Sirigere <[email protected]>
This commit is contained in:
@@ -58,7 +58,6 @@ By default all are enabled.
|
||||
- `CAPSTONE_TRICORE_SUPPORT`: Support TriCore.
|
||||
- `CAPSTONE_X86_SUPPORT`: Support X86.
|
||||
- `CAPSTONE_TMS320C64X_SUPPORT`: Support TMS320C64X.
|
||||
- `CAPSTONE_M680X_SUPPORT`: Support M680X.
|
||||
- `CAPSTONE_EVM_SUPPORT`: Support EVM.
|
||||
- `CAPSTONE_WASM_SUPPORT`: Support Web Assembly.
|
||||
- `CAPSTONE_BPF_SUPPORT`: Support BPF.
|
||||
|
||||
@@ -148,6 +148,7 @@ typedef struct insn_props {
|
||||
#include "m6809.inc"
|
||||
#include "hd6309.inc"
|
||||
#include "rs08.inc"
|
||||
#include "hcs12x.inc"
|
||||
|
||||
#include "insn_props.inc"
|
||||
|
||||
@@ -2020,6 +2021,11 @@ static const uint8_t g_rs08_reg_byte_size[23] = {
|
||||
0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 1, 1, 0, 2, 0, 0, 0, 2, 2, 0, 0
|
||||
};
|
||||
|
||||
static const uint8_t g_hcs12x_reg_byte_size[23] = {
|
||||
// A B E F 0 D W CC DP MD HX H X Y S U V Q PC SPC T2 T3
|
||||
0, 1, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 2, 2
|
||||
};
|
||||
|
||||
// Table to check for a valid register nibble on the M6809 CPU
|
||||
// used for TFR and EXG instruction.
|
||||
static const bool m6809_tfr_reg_valid[16] = {
|
||||
@@ -2157,6 +2163,16 @@ static const cpu_tables g_cpu_tables[] = {
|
||||
&g_rs08_reg_byte_size[0],
|
||||
NULL,
|
||||
{ M680X_INS_INVLD, M680X_INS_INVLD } },
|
||||
{ // M680X_CPU_TYPE_HCS12X
|
||||
&g_cpu12_inst_page1_table[0],
|
||||
{ NULL, NULL },
|
||||
{ 0, 0 },
|
||||
{ 0x18, 0x00, 0x00 },
|
||||
{ &g_hcs12x_inst_page2_table[0], NULL, NULL },
|
||||
{ ARR_SIZE(g_hcs12x_inst_page2_table), 0, 0 },
|
||||
&g_hcs12x_reg_byte_size[0],
|
||||
NULL,
|
||||
{ M680X_INS_INVLD, M680X_INS_INVLD } },
|
||||
};
|
||||
|
||||
static bool m680x_setup_internals(m680x_info *info, e_cpu_type cpu_type,
|
||||
@@ -2221,6 +2237,9 @@ bool M680X_getInstruction(csh ud, const uint8_t *code, size_t code_len,
|
||||
else if (handle->mode & CS_MODE_M680X_RS08)
|
||||
cpu_type = M680X_CPU_TYPE_RS08;
|
||||
|
||||
else if (handle->mode & CS_MODE_M680X_HCS12X)
|
||||
cpu_type = M680X_CPU_TYPE_HCS12X;
|
||||
|
||||
if (cpu_type != M680X_CPU_TYPE_INVALID &&
|
||||
m680x_setup_internals(info, cpu_type, (uint16_t)address, code,
|
||||
(uint16_t)code_len))
|
||||
@@ -2291,6 +2310,12 @@ cs_err M680X_disassembler_init(cs_struct *ud)
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
if (M680X_REG_ENDING != ARR_SIZE(g_hcs12x_reg_byte_size)) {
|
||||
CS_ASSERT(M680X_REG_ENDING == ARR_SIZE(g_hcs12x_reg_byte_size));
|
||||
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
if (M680X_INS_ENDING != ARR_SIZE(g_insn_props)) {
|
||||
CS_ASSERT(M680X_INS_ENDING == ARR_SIZE(g_insn_props));
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ typedef enum e_cpu_type {
|
||||
// used on M68HC12/HCS12
|
||||
M680X_CPU_TYPE_HCS08, // M680X Freescale HCS08 mode
|
||||
M680X_CPU_TYPE_RS08, // M680X Freescale RSS08 mode
|
||||
M680X_CPU_TYPE_HCS12X, // M680X Freescale HCS12X mode
|
||||
M680X_CPU_TYPE_ENDING,
|
||||
} e_cpu_type;
|
||||
|
||||
|
||||
@@ -28,49 +28,56 @@ static const char s_reg_names[][10] = {
|
||||
static const char s_instruction_names[][6] = {
|
||||
"invld", "aba", "abx", "aby", "adc", "adca", "adcb", "adcd",
|
||||
"adcr", "add", "adda", "addb", "addd", "adde", "addf", "addr",
|
||||
"addw", "aim", "ais", "aix", "and", "anda", "andb", "andcc",
|
||||
"andd", "andr", "asl", "asla", "aslb", "asld", "asr", "asra",
|
||||
"asrb", "asrd", "asrx", "band", "bcc", "bclr", "bcs", "beor",
|
||||
"beq", "bge", "bgnd", "bgt", "bhcc", "bhcs", "bhi", "biand",
|
||||
"bieor", "bih", "bil", "bior", "bit", "bita", "bitb", "bitd",
|
||||
"bitmd", "ble", "bls", "blt", "bmc", "bmi", "bms", "bne",
|
||||
"bor", "bpl", "brclr", "brset", "bra", "brn", "bset", "bsr",
|
||||
"bvc", "bvs", "call", "cba", "cbeq", "cbeqa", "cbeqx", "clc",
|
||||
"cli", "clr", "clra", "clrb", "clrd", "clre", "clrf", "clrh",
|
||||
"clrw", "clrx", "clv", "cmp", "cmpa", "cmpb", "cmpd", "cmpe",
|
||||
"addw", "addx", "addy", "aded", "adex", "adey", "aim", "ais",
|
||||
"aix", "and", "anda", "andb", "andx", "andy", "andcc", "andd",
|
||||
"andr", "asl", "asla", "aslb", "asld", "aslw", "aslx", "asly",
|
||||
"asr", "asra", "asrb", "asrd", "asrw", "asrx", "asry", "band",
|
||||
"bcc", "bclr", "bcs", "beor", "beq", "bge", "bgnd", "bgt",
|
||||
"bhcc", "bhcs", "bhi", "biand", "bieor", "bih", "bil", "bior",
|
||||
"bit", "bita", "bitb", "bitx", "bity", "bitd", "bitmd", "ble",
|
||||
"bls", "blt", "bmc", "bmi", "bms", "bne", "bor", "bpl",
|
||||
"brclr", "brset", "bra", "brn", "bset", "bsr", "btas", "bvc",
|
||||
"bvs", "call", "cba", "cbeq", "cbeqa", "cbeqx", "clc", "cli",
|
||||
"clr", "clra", "clrb", "clrd", "clre", "clrf", "clrh", "clrw",
|
||||
"clrx", "clry", "clv", "cmp", "cmpa", "cmpb", "cmpd", "cmpe",
|
||||
"cmpf", "cmpr", "cmps", "cmpu", "cmpw", "cmpx", "cmpy", "com",
|
||||
"coma", "comb", "comd", "come", "comf", "comw", "comx", "cpd",
|
||||
"cphx", "cps", "cpx", "cpy", "cwai", "daa", "dbeq", "dbne",
|
||||
"dbnz", "dbnza", "dbnzx", "dec", "deca", "decb", "decd", "dece",
|
||||
"decf", "decw", "decx", "des", "dex", "dey", "div", "divd",
|
||||
"divq", "ediv", "edivs", "eim", "emacs", "emaxd", "emaxm", "emind",
|
||||
"eminm", "emul", "emuls", "eor", "eora", "eorb", "eord", "eorr",
|
||||
"etbl", "exg", "fdiv", "ibeq", "ibne", "idiv", "idivs", "illgl",
|
||||
"inc", "inca", "incb", "incd", "ince", "incf", "incw", "incx",
|
||||
"ins", "inx", "iny", "jmp", "jsr", "lbcc", "lbcs", "lbeq",
|
||||
"lbge", "lbgt", "lbhi", "lble", "lbls", "lblt", "lbmi", "lbne",
|
||||
"lbpl", "lbra", "lbrn", "lbsr", "lbvc", "lbvs", "lda", "ldaa",
|
||||
"ldab", "ldb", "ldbt", "ldd", "lde", "ldf", "ldhx", "ldmd",
|
||||
"ldq", "lds", "ldu", "ldw", "ldx", "ldy", "leas", "leau",
|
||||
"leax", "leay", "lsl", "lsla", "lslb", "lsld", "lslx", "lsr",
|
||||
"lsra", "lsrb", "lsrd", "lsrw", "lsrx", "maxa", "maxm", "mem",
|
||||
"mina", "minm", "mov", "movb", "movw", "mul", "muld", "neg",
|
||||
"nega", "negb", "negd", "negx", "nop", "nsa", "oim", "ora",
|
||||
"oraa", "orab", "orb", "orcc", "ord", "orr", "psha", "pshb",
|
||||
"pshc", "pshd", "pshh", "pshs", "pshsw", "pshu", "pshuw", "pshx",
|
||||
"pshy", "pula", "pulb", "pulc", "puld", "pulh", "puls", "pulsw",
|
||||
"pulu", "puluw", "pulx", "puly", "rev", "revw", "rol", "rola",
|
||||
"rolb", "rold", "rolw", "rolx", "ror", "rora", "rorb", "rord",
|
||||
"rorw", "rorx", "rsp", "rtc", "rti", "rts", "sba", "sbc",
|
||||
"sbca", "sbcb", "sbcd", "sbcr", "sec", "sei", "sev", "sex",
|
||||
"sexw", "sha", "sla", "slp", "sta", "staa", "stab", "stb",
|
||||
"stbt", "std", "ste", "stf", "stop", "sthx", "stq", "sts",
|
||||
"stu", "stw", "stx", "sty", "sub", "suba", "subb", "subd",
|
||||
"sube", "subf", "subr", "subw", "swi", "swi2", "swi3", "sync",
|
||||
"tab", "tap", "tax", "tba", "tbeq", "tbl", "tbne", "test",
|
||||
"tfm", "tfr", "tim", "tpa", "tst", "tsta", "tstb", "tstd",
|
||||
"tste", "tstf", "tstw", "tstx", "tsx", "tsy", "txa", "txs",
|
||||
"tys", "wai", "wait", "wav", "wavr", "xgdx", "xgdy",
|
||||
"coma", "comb", "comd", "come", "comf", "comw", "comx", "comy",
|
||||
"cpd", "cped", "cpes", "cpex", "cpey", "cphx", "cps", "cpx",
|
||||
"cpy", "cwai", "daa", "dbeq", "dbne", "dbnz", "dbnza", "dbnzx",
|
||||
"dec", "deca", "decb", "decd", "dece", "decf", "decw", "decx",
|
||||
"decy", "des", "dex", "dey", "div", "divd", "divq", "ediv",
|
||||
"edivs", "eim", "emacs", "emaxd", "emaxm", "emind", "eminm", "emul",
|
||||
"emuls", "eor", "eora", "eorb", "eord", "eorr", "eorx", "eory",
|
||||
"etbl", "exg", "fdiv", "gldaa", "gldab", "gldd", "glds", "gldx",
|
||||
"gldy", "gstaa", "gstab", "gstd", "gsts", "gstx", "gsty", "ibeq",
|
||||
"ibne", "idiv", "idivs", "illgl", "inc", "inca", "incb", "incd",
|
||||
"ince", "incf", "incw", "incx", "incy", "ins", "inx", "iny",
|
||||
"jmp", "jsr", "lbcc", "lbcs", "lbeq", "lbge", "lbgt", "lbhi",
|
||||
"lble", "lbls", "lblt", "lbmi", "lbne", "lbpl", "lbra", "lbrn",
|
||||
"lbsr", "lbvc", "lbvs", "lda", "ldaa", "ldab", "ldb", "ldbt",
|
||||
"ldd", "lde", "ldf", "ldhx", "ldmd", "ldq", "lds", "ldu",
|
||||
"ldw", "ldx", "ldy", "leas", "leau", "leax", "leay", "lsl",
|
||||
"lsla", "lslb", "lsld", "lslx", "lsr", "lsra", "lsrb", "lsrd",
|
||||
"lsrw", "lsrx", "lsry", "maxa", "maxm", "mem", "mina", "minm",
|
||||
"mov", "movb", "movw", "mul", "muld", "neg", "nega", "negb",
|
||||
"negd", "negw", "negx", "negy", "nop", "nsa", "oim", "ora",
|
||||
"oraa", "orab", "orb", "orcc", "ord", "orr", "orx", "ory",
|
||||
"psha", "pshb", "pshc", "pshcw", "pshd", "pshh", "pshs", "pshsw",
|
||||
"pshu", "pshuw", "pshx", "pshy", "pula", "pulb", "pulc", "pulcw",
|
||||
"puld", "pulh", "puls", "pulsw", "pulu", "puluw", "pulx", "puly",
|
||||
"rev", "revw", "rol", "rola", "rolb", "rold", "rolw", "rolx",
|
||||
"roly", "ror", "rora", "rorb", "rord", "rorw", "rorx", "rory",
|
||||
"rsp", "rtc", "rti", "rts", "sba", "sbc", "sbca", "sbcb",
|
||||
"sbcd", "sbcr", "sbed", "sbex", "sbey", "sec", "sei", "sev",
|
||||
"sex", "sexw", "sha", "sla", "slp", "sta", "staa", "stab",
|
||||
"stb", "stbt", "std", "ste", "stf", "stop", "sthx", "stq",
|
||||
"sts", "stu", "stw", "stx", "sty", "sub", "suba", "subb",
|
||||
"subd", "sube", "subf", "subr", "subw", "subx", "suby", "swi",
|
||||
"swi2", "swi3", "sync", "sys", "tab", "tap", "tax", "tba",
|
||||
"tbeq", "tbl", "tbne", "test", "tfm", "tfr", "tim", "tpa",
|
||||
"trap", "tst", "tsta", "tstb", "tstd", "tste", "tstf", "tstw",
|
||||
"tstx", "tsty", "tsx", "tsy", "txa", "txs", "tys", "wai",
|
||||
"wait", "wav", "wavr", "xgdx", "xgdy",
|
||||
};
|
||||
|
||||
static const name_map s_group_names[] = {
|
||||
|
||||
@@ -31,7 +31,8 @@ cs_err M680X_global_init(cs_struct *ud)
|
||||
~(CS_MODE_M680X_6800 | CS_MODE_M680X_6801 | CS_MODE_M680X_6805 |
|
||||
CS_MODE_M680X_6808 | CS_MODE_M680X_6809 | CS_MODE_M680X_6811 |
|
||||
CS_MODE_M680X_6301 | CS_MODE_M680X_6309 | CS_MODE_M680X_CPU12 |
|
||||
CS_MODE_M680X_HCS08 | CS_MODE_M680X_RS08)) {
|
||||
CS_MODE_M680X_HCS08 | CS_MODE_M680X_RS08 |
|
||||
CS_MODE_M680X_HCS12X)) {
|
||||
// At least one mode is not supported by M680X
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
@@ -40,7 +41,8 @@ cs_err M680X_global_init(cs_struct *ud)
|
||||
(CS_MODE_M680X_6800 | CS_MODE_M680X_6801 | CS_MODE_M680X_6805 |
|
||||
CS_MODE_M680X_6808 | CS_MODE_M680X_6809 | CS_MODE_M680X_6811 |
|
||||
CS_MODE_M680X_6301 | CS_MODE_M680X_6309 | CS_MODE_M680X_CPU12 |
|
||||
CS_MODE_M680X_HCS08 | CS_MODE_M680X_RS08))) {
|
||||
CS_MODE_M680X_HCS08 | CS_MODE_M680X_RS08 |
|
||||
CS_MODE_M680X_HCS12X))) {
|
||||
// At least the cpu type has to be selected. No default.
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
// Page 2 instructions for HCS12X
|
||||
static const inst_pageX g_hcs12x_inst_page2_table[] = {
|
||||
{ 0x00, M680X_INS_MOVW, imm16i12x_hid, inh_hid },
|
||||
{ 0x01, M680X_INS_MOVW, exti12x_hid, inh_hid },
|
||||
{ 0x02, M680X_INS_MOVW, idx12_hid, idx12_hid },
|
||||
{ 0x03, M680X_INS_MOVW, imm16_hid, ext_hid },
|
||||
{ 0x04, M680X_INS_MOVW, ext_hid, ext_hid },
|
||||
{ 0x05, M680X_INS_MOVW, idx12_hid, ext_hid },
|
||||
{ 0x06, M680X_INS_ABA, inh_hid, inh_hid },
|
||||
{ 0x07, M680X_INS_DAA, inh_hid, inh_hid },
|
||||
{ 0x08, M680X_INS_MOVB, imm8i12x_hid, inh_hid },
|
||||
{ 0x09, M680X_INS_MOVB, exti12x_hid, inh_hid },
|
||||
{ 0x0A, M680X_INS_MOVB, idx12_hid, idx12_hid },
|
||||
{ 0x0B, M680X_INS_MOVB, imm16_hid, ext_hid },
|
||||
{ 0x0C, M680X_INS_MOVB, ext_hid, ext_hid },
|
||||
{ 0x0D, M680X_INS_MOVB, idx12_hid, ext_hid },
|
||||
{ 0x0E, M680X_INS_TAB, inh_hid, inh_hid },
|
||||
{ 0x0F, M680X_INS_TBA, inh_hid, inh_hid },
|
||||
|
||||
{ 0x10, M680X_INS_IDIV, inh_hid, inh_hid },
|
||||
{ 0x11, M680X_INS_FDIV, inh_hid, inh_hid },
|
||||
{ 0x12, M680X_INS_EMACS, ext_hid, inh_hid },
|
||||
{ 0x13, M680X_INS_EMULS, inh_hid, inh_hid },
|
||||
{ 0x14, M680X_INS_EDIVS, inh_hid, inh_hid },
|
||||
{ 0x15, M680X_INS_IDIVS, inh_hid, inh_hid },
|
||||
{ 0x16, M680X_INS_SBA, inh_hid, inh_hid },
|
||||
{ 0x17, M680X_INS_CBA, inh_hid, inh_hid },
|
||||
{ 0x18, M680X_INS_MAXA, idx12_hid, inh_hid },
|
||||
{ 0x19, M680X_INS_MINA, idx12_hid, inh_hid },
|
||||
{ 0x1A, M680X_INS_EMAXD, idx12_hid, inh_hid },
|
||||
{ 0x1B, M680X_INS_EMIND, idx12_hid, inh_hid },
|
||||
{ 0x1C, M680X_INS_MAXM, idx12_hid, inh_hid },
|
||||
{ 0x1D, M680X_INS_MINM, idx12_hid, inh_hid },
|
||||
{ 0x1E, M680X_INS_EMAXM, idx12_hid, inh_hid },
|
||||
{ 0x1F, M680X_INS_EMINM, idx12_hid, inh_hid },
|
||||
|
||||
{ 0x20, M680X_INS_LBRA, rel16_hid, inh_hid },
|
||||
{ 0x21, M680X_INS_LBRN, rel16_hid, inh_hid },
|
||||
{ 0x22, M680X_INS_LBHI, rel16_hid, inh_hid },
|
||||
{ 0x23, M680X_INS_LBLS, rel16_hid, inh_hid },
|
||||
{ 0x24, M680X_INS_LBCC, rel16_hid, inh_hid },
|
||||
{ 0x25, M680X_INS_LBCS, rel16_hid, inh_hid },
|
||||
{ 0x26, M680X_INS_LBNE, rel16_hid, inh_hid },
|
||||
{ 0x27, M680X_INS_LBEQ, rel16_hid, inh_hid },
|
||||
{ 0x28, M680X_INS_LBVC, rel16_hid, inh_hid },
|
||||
{ 0x29, M680X_INS_LBVS, rel16_hid, inh_hid },
|
||||
{ 0x2A, M680X_INS_LBPL, rel16_hid, inh_hid },
|
||||
{ 0x2B, M680X_INS_LBMI, rel16_hid, inh_hid },
|
||||
{ 0x2C, M680X_INS_LBGE, rel16_hid, inh_hid },
|
||||
{ 0x2D, M680X_INS_LBLT, rel16_hid, inh_hid },
|
||||
{ 0x2E, M680X_INS_LBGT, rel16_hid, inh_hid },
|
||||
{ 0x2F, M680X_INS_LBLE, rel16_hid, inh_hid },
|
||||
|
||||
{ 0x30, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x31, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x32, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x33, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x34, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x35, M680X_INS_BTAS, dir_hid, inh_hid },
|
||||
{ 0x36, M680X_INS_BTAS, ext_hid, inh_hid },
|
||||
{ 0x37, M680X_INS_BTAS, idx12_hid, inh_hid },
|
||||
{ 0x38, M680X_INS_PULCW, inh_hid, inh_hid },
|
||||
{ 0x39, M680X_INS_PSHCW, inh_hid, inh_hid },
|
||||
{ 0x3A, M680X_INS_REV, inh_hid, inh_hid },
|
||||
{ 0x3B, M680X_INS_REVW, inh_hid, inh_hid },
|
||||
{ 0x3C, M680X_INS_WAV, inh_hid, inh_hid },
|
||||
{ 0x3D, M680X_INS_TBL, idx12s_hid, inh_hid },
|
||||
{ 0x3E, M680X_INS_STOP, inh_hid, inh_hid },
|
||||
{ 0x3F, M680X_INS_ETBL, idx12s_hid, inh_hid },
|
||||
|
||||
{ 0x40, M680X_INS_NEGX, inh_hid, inh_hid },
|
||||
{ 0x41, M680X_INS_COMX, inh_hid, inh_hid },
|
||||
{ 0x42, M680X_INS_INCX, inh_hid, inh_hid },
|
||||
{ 0x43, M680X_INS_DECX, inh_hid, inh_hid },
|
||||
{ 0x44, M680X_INS_LSRX, inh_hid, inh_hid },
|
||||
{ 0x45, M680X_INS_ROLX, inh_hid, inh_hid },
|
||||
{ 0x46, M680X_INS_RORX, inh_hid, inh_hid },
|
||||
{ 0x47, M680X_INS_ASRX, inh_hid, inh_hid },
|
||||
{ 0x48, M680X_INS_ASLX, inh_hid, inh_hid },
|
||||
{ 0x49, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x4A, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x4B, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x4C, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x4D, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x4E, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x4F, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
|
||||
{ 0x50, M680X_INS_NEGY, inh_hid, inh_hid },
|
||||
{ 0x51, M680X_INS_COMY, inh_hid, inh_hid },
|
||||
{ 0x52, M680X_INS_INCY, inh_hid, inh_hid },
|
||||
{ 0x53, M680X_INS_DECY, inh_hid, inh_hid },
|
||||
{ 0x55, M680X_INS_ROLY, inh_hid, inh_hid },
|
||||
{ 0x56, M680X_INS_RORY, inh_hid, inh_hid },
|
||||
{ 0x57, M680X_INS_ASRY, inh_hid, inh_hid },
|
||||
{ 0x58, M680X_INS_ASLY, inh_hid, inh_hid },
|
||||
{ 0x59, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x5A, M680X_INS_GSTAA, dir_hid, inh_hid },
|
||||
{ 0x5B, M680X_INS_GSTAB, dir_hid, inh_hid },
|
||||
{ 0x5C, M680X_INS_GSTD, dir_hid, inh_hid },
|
||||
{ 0x5C, M680X_INS_GSTY, dir_hid, inh_hid },
|
||||
{ 0x5E, M680X_INS_GSTX, dir_hid, inh_hid },
|
||||
{ 0x5F, M680X_INS_GSTS, dir_hid, inh_hid },
|
||||
|
||||
{ 0x60, M680X_INS_NEGW, idx12_hid, inh_hid },
|
||||
{ 0x61, M680X_INS_COMW, idx12_hid, inh_hid },
|
||||
{ 0x62, M680X_INS_INCW, idx12_hid, inh_hid },
|
||||
{ 0x63, M680X_INS_DECW, idx12_hid, inh_hid },
|
||||
{ 0x64, M680X_INS_LSRW, idx12_hid, inh_hid },
|
||||
{ 0x65, M680X_INS_ROLW, idx12_hid, inh_hid },
|
||||
{ 0x66, M680X_INS_RORW, idx12_hid, inh_hid },
|
||||
{ 0x67, M680X_INS_ASRW, idx12_hid, inh_hid },
|
||||
{ 0x68, M680X_INS_ASLW, idx12_hid, inh_hid },
|
||||
{ 0x69, M680X_INS_CLRW, idx12_hid, inh_hid },
|
||||
{ 0x6A, M680X_INS_GSTAA, idx12_hid, inh_hid },
|
||||
{ 0x6B, M680X_INS_GSTAB, idx12_hid, inh_hid },
|
||||
{ 0x6C, M680X_INS_GSTD, idx12_hid, inh_hid },
|
||||
{ 0x6D, M680X_INS_GSTY, idx12_hid, inh_hid },
|
||||
{ 0x6E, M680X_INS_GSTX, idx12_hid, inh_hid },
|
||||
{ 0x6F, M680X_INS_GSTS, idx12_hid, inh_hid },
|
||||
|
||||
{ 0x70, M680X_INS_NEGW, ext_hid, inh_hid },
|
||||
{ 0x71, M680X_INS_COMW, ext_hid, inh_hid },
|
||||
{ 0x72, M680X_INS_INCW, ext_hid, inh_hid },
|
||||
{ 0x73, M680X_INS_DECW, ext_hid, inh_hid },
|
||||
{ 0x75, M680X_INS_ROLW, ext_hid, inh_hid },
|
||||
{ 0x76, M680X_INS_RORW, ext_hid, inh_hid },
|
||||
{ 0x77, M680X_INS_ASRW, ext_hid, inh_hid },
|
||||
{ 0x78, M680X_INS_ASLW, ext_hid, inh_hid },
|
||||
{ 0x79, M680X_INS_CLRW, ext_hid, inh_hid },
|
||||
{ 0x7A, M680X_INS_GSTAA, ext_hid, inh_hid },
|
||||
{ 0x7B, M680X_INS_GSTAB, ext_hid, inh_hid },
|
||||
{ 0x7C, M680X_INS_GSTD, ext_hid, inh_hid },
|
||||
{ 0x7D, M680X_INS_GSTY, idx12_hid, inh_hid },
|
||||
{ 0x7E, M680X_INS_GSTX, ext_hid, inh_hid },
|
||||
{ 0x7F, M680X_INS_GSTS, ext_hid, inh_hid },
|
||||
|
||||
{ 0x80, M680X_INS_SUBX, imm16_hid, inh_hid },
|
||||
{ 0x81, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x82, M680X_INS_SBEX, imm16_hid, inh_hid },
|
||||
{ 0x83, M680X_INS_SBED, imm16_hid, inh_hid },
|
||||
{ 0x84, M680X_INS_ANDX, imm8_hid, inh_hid },
|
||||
{ 0x85, M680X_INS_BITX, imm8_hid, inh_hid },
|
||||
{ 0x86, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x87, M680X_INS_CLRX, inh_hid, inh_hid },
|
||||
{ 0x88, M680X_INS_EORX, imm8_hid, inh_hid },
|
||||
{ 0x89, M680X_INS_ADEX, imm8_hid, inh_hid },
|
||||
{ 0x8A, M680X_INS_ORX, imm16_hid, inh_hid },
|
||||
{ 0x8B, M680X_INS_ADDX, imm8_hid, inh_hid },
|
||||
{ 0x8C, M680X_INS_CPED, imm8_hid, inh_hid },
|
||||
{ 0x8D, M680X_INS_CPEY, imm8_hid, inh_hid },
|
||||
{ 0x8E, M680X_INS_CPEX, imm8_hid, inh_hid },
|
||||
{ 0x8F, M680X_INS_CPES, imm8_hid, inh_hid },
|
||||
|
||||
{ 0x90, M680X_INS_SUBX, dir_hid, inh_hid },
|
||||
{ 0x91, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0x92, M680X_INS_SBEX, dir_hid, inh_hid },
|
||||
{ 0x93, M680X_INS_SBED, dir_hid, inh_hid },
|
||||
{ 0x94, M680X_INS_ANDX, dir_hid, inh_hid },
|
||||
{ 0x95, M680X_INS_BITX, dir_hid, inh_hid },
|
||||
{ 0x96, M680X_INS_GLDAA, dir_hid, inh_hid },
|
||||
{ 0x97, M680X_INS_TSTX, inh_hid, inh_hid },
|
||||
{ 0x98, M680X_INS_EORX, dir_hid, inh_hid },
|
||||
{ 0x99, M680X_INS_ADEX, dir_hid, inh_hid },
|
||||
{ 0x9A, M680X_INS_ORX, dir_hid, inh_hid },
|
||||
{ 0x9B, M680X_INS_ADDX, dir_hid, inh_hid },
|
||||
{ 0x9C, M680X_INS_CPED, dir_hid, inh_hid },
|
||||
{ 0x9D, M680X_INS_CPEY, dir_hid, inh_hid },
|
||||
{ 0x9F, M680X_INS_CPES, dir_hid, inh_hid },
|
||||
|
||||
{ 0xA0, M680X_INS_SUBX, idx12_hid, inh_hid },
|
||||
{ 0xA1, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xA2, M680X_INS_SBEX, idx12_hid, inh_hid },
|
||||
{ 0xA3, M680X_INS_SBED, idx12_hid, inh_hid },
|
||||
{ 0xA4, M680X_INS_ANDX, idx12_hid, inh_hid },
|
||||
{ 0xA5, M680X_INS_BITX, idx12_hid, inh_hid },
|
||||
{ 0xA6, M680X_INS_GLDAA, idx12_hid, inh_hid },
|
||||
{ 0xA7, M680X_INS_SYS, inh_hid, inh_hid },
|
||||
{ 0xA8, M680X_INS_EORX, idx12_hid, inh_hid },
|
||||
{ 0xA9, M680X_INS_ADEX, idx12_hid, inh_hid },
|
||||
{ 0xAA, M680X_INS_ORX, idx12_hid, inh_hid },
|
||||
{ 0xAB, M680X_INS_ADDX, idx12_hid, inh_hid },
|
||||
{ 0xAC, M680X_INS_CPED, idx12_hid, inh_hid },
|
||||
{ 0xAD, M680X_INS_CPEY, idx12_hid, inh_hid },
|
||||
{ 0xAE, M680X_INS_CPEX, idx12_hid, inh_hid },
|
||||
{ 0xAF, M680X_INS_CPES, idx12_hid, inh_hid },
|
||||
|
||||
{ 0xB0, M680X_INS_SUBX, ext_hid, inh_hid },
|
||||
{ 0xB1, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xB2, M680X_INS_SBEX, ext_hid, inh_hid },
|
||||
{ 0xB3, M680X_INS_SBED, ext_hid, inh_hid },
|
||||
{ 0xB4, M680X_INS_ANDX, ext_hid, inh_hid },
|
||||
{ 0xB5, M680X_INS_BITX, ext_hid, inh_hid },
|
||||
{ 0xB6, M680X_INS_GLDAA, ext_hid, inh_hid },
|
||||
{ 0xB7, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xB8, M680X_INS_EORX, ext_hid, inh_hid },
|
||||
{ 0xB9, M680X_INS_ADEX, ext_hid, inh_hid },
|
||||
{ 0xBA, M680X_INS_ORX, ext_hid, inh_hid },
|
||||
{ 0xBB, M680X_INS_ADDX, ext_hid, inh_hid },
|
||||
{ 0xBC, M680X_INS_CPED, ext_hid, inh_hid },
|
||||
{ 0xBD, M680X_INS_CPEY, ext_hid, inh_hid },
|
||||
{ 0xBE, M680X_INS_CPEX, ext_hid, inh_hid },
|
||||
{ 0xBF, M680X_INS_CPES, ext_hid, inh_hid },
|
||||
|
||||
{ 0xC0, M680X_INS_SUBY, imm16_hid, inh_hid },
|
||||
{ 0xC1, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xC2, M680X_INS_SBEY, ext_hid, inh_hid },
|
||||
{ 0xC3, M680X_INS_ADED, imm8_hid, inh_hid },
|
||||
{ 0xC4, M680X_INS_ANDY, imm8_hid, inh_hid },
|
||||
{ 0xC5, M680X_INS_BITY, imm8_hid, inh_hid },
|
||||
{ 0xC6, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xC7, M680X_INS_CLRY, inh_hid, inh_hid },
|
||||
{ 0xC8, M680X_INS_EORY, imm8_hid, inh_hid },
|
||||
{ 0xC9, M680X_INS_ADEY, imm8_hid, inh_hid },
|
||||
{ 0xCA, M680X_INS_ORY, imm16_hid, inh_hid },
|
||||
{ 0xCB, M680X_INS_ADDY, imm8_hid, inh_hid },
|
||||
{ 0xCC, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xCD, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xCE, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xCF, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
|
||||
{ 0xD0, M680X_INS_SUBY, dir_hid, inh_hid },
|
||||
{ 0xD1, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xD2, M680X_INS_SBEY, inh_hid, inh_hid },
|
||||
{ 0xD3, M680X_INS_ADED, dir_hid, inh_hid },
|
||||
{ 0xD4, M680X_INS_ANDY, dir_hid, inh_hid },
|
||||
{ 0xD5, M680X_INS_BITY, dir_hid, inh_hid },
|
||||
{ 0xD6, M680X_INS_GLDAB, dir_hid, inh_hid },
|
||||
{ 0xD7, M680X_INS_TSTY, inh_hid, inh_hid },
|
||||
{ 0xD8, M680X_INS_EORY, dir_hid, inh_hid },
|
||||
{ 0xD9, M680X_INS_ADEY, dir_hid, inh_hid },
|
||||
{ 0xDA, M680X_INS_ORY, dir_hid, inh_hid },
|
||||
{ 0xDB, M680X_INS_ADDY, dir_hid, inh_hid },
|
||||
{ 0xDC, M680X_INS_GLDD, dir_hid, inh_hid },
|
||||
{ 0xDD, M680X_INS_GLDY, dir_hid, inh_hid },
|
||||
{ 0xDE, M680X_INS_GLDX, dir_hid, inh_hid },
|
||||
{ 0xDF, M680X_INS_GLDS, dir_hid, inh_hid },
|
||||
|
||||
{ 0xE0, M680X_INS_SUBY, idx12_hid, inh_hid },
|
||||
{ 0xE1, M680X_INS_TRAP, inh_hid, inh_hid },
|
||||
{ 0xE2, M680X_INS_SBEY, inh_hid, inh_hid },
|
||||
{ 0xE3, M680X_INS_ADED, idx12_hid, inh_hid },
|
||||
{ 0xE4, M680X_INS_ANDY, idx12_hid, inh_hid },
|
||||
{ 0xE5, M680X_INS_BITY, idx12_hid, inh_hid },
|
||||
{ 0xE6, M680X_INS_GLDAB, idx12_hid, inh_hid },
|
||||
{ 0xE7, M680X_INS_TSTW, idx12_hid, inh_hid },
|
||||
{ 0xE8, M680X_INS_EORY, idx12_hid, inh_hid },
|
||||
{ 0xE9, M680X_INS_ADEY, idx12_hid, inh_hid },
|
||||
{ 0xEA, M680X_INS_ORY, idx12_hid, inh_hid },
|
||||
{ 0xEB, M680X_INS_ADDY, idx12_hid, inh_hid },
|
||||
{ 0xEC, M680X_INS_GLDD, idx12_hid, inh_hid },
|
||||
{ 0xED, M680X_INS_GLDY, idx12_hid, inh_hid },
|
||||
{ 0xEE, M680X_INS_GLDX, idx12_hid, inh_hid },
|
||||
{ 0xEF, M680X_INS_GLDS, idx12_hid, inh_hid },
|
||||
|
||||
{ 0xF0, M680X_INS_SUBY, ext_hid, inh_hid },
|
||||
{ 0xF1, M680X_INS_TRAP, ext_hid, inh_hid },
|
||||
{ 0xF2, M680X_INS_SBEY, ext_hid, inh_hid },
|
||||
{ 0xF3, M680X_INS_ADED, ext_hid, inh_hid },
|
||||
{ 0xF4, M680X_INS_ANDY, ext_hid, inh_hid },
|
||||
{ 0xF5, M680X_INS_BITY, ext_hid, inh_hid },
|
||||
{ 0xF6, M680X_INS_GLDAB, ext_hid, inh_hid },
|
||||
{ 0xF7, M680X_INS_TSTW, ext_hid, inh_hid },
|
||||
{ 0xF8, M680X_INS_EORY, ext_hid, inh_hid },
|
||||
{ 0xF9, M680X_INS_ADEY, ext_hid, inh_hid },
|
||||
{ 0xFA, M680X_INS_ORY, ext_hid, inh_hid },
|
||||
{ 0xFB, M680X_INS_ADDY, ext_hid, inh_hid },
|
||||
{ 0xFC, M680X_INS_GLDD, ext_hid, inh_hid },
|
||||
{ 0xFD, M680X_INS_GLDY, ext_hid, inh_hid },
|
||||
{ 0xFE, M680X_INS_GLDX, ext_hid, inh_hid },
|
||||
{ 0xFF, M680X_INS_GLDS, ext_hid, inh_hid },
|
||||
};
|
||||
@@ -21,12 +21,19 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_F, NOR, true, false }, // ADDF
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ADDR
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // ADDW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // ADDX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // ADDY
|
||||
{ NOG, mmmm, M680X_REG_A, M680X_REG_B, true, false }, // ADED
|
||||
{ NOG, mmmm, M680X_REG_A, M680X_REG_X, true, false }, // ADEX
|
||||
{ NOG, mmmm, M680X_REG_A, M680X_REG_Y, true, false }, // ADEY
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // AIM
|
||||
{ NOG, mrrr, M680X_REG_S, NOR, false, false }, // AIS
|
||||
{ NOG, mrrr, M680X_REG_HX, NOR, false, false }, // AIX
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // AND
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ANDA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ANDB
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // ANDX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // ANDY
|
||||
{ NOG, mrrr, M680X_REG_CC, NOR, true, false }, // ANDCC
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ANDD
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ANDR
|
||||
@@ -34,11 +41,16 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ASLA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ASLB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ASLD
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // ASLW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // ASLX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // ASLY
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // ASR
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ASRA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ASRB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ASRD
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // ASRW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // ASRX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // ASRY
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BAND
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BCC
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // BCLR
|
||||
@@ -61,6 +73,8 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, rrrr, M680X_REG_B, NOR, true, false }, // BITB
|
||||
{ NOG, rrrr, M680X_REG_D, NOR, true, false }, // BITD
|
||||
{ NOG, rrrr, M680X_REG_MD, NOR, true, false }, // BITMD
|
||||
{ NOG, rrrr, M680X_REG_X, NOR, true, false }, // BITX
|
||||
{ NOG, rrrr, M680X_REG_Y, NOR, true, false }, // BITY
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BLE
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BLS
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BLT
|
||||
@@ -76,6 +90,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BRN never branches
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // BSET
|
||||
{ M680X_GRP_CALL, uuuu, NOR, NOR, false, true }, // BSR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, true }, // BTAS
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BVC
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BVS
|
||||
{ M680X_GRP_CALL, uuuu, NOR, NOR, false, true }, // CALL
|
||||
@@ -94,6 +109,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, wrrr, M680X_REG_H, NOR, true, false }, // CLRH
|
||||
{ NOG, wrrr, M680X_REG_W, NOR, true, false }, // CLRW
|
||||
{ NOG, wrrr, M680X_REG_X, NOR, true, false }, // CLRX
|
||||
{ NOG, wrrr, M680X_REG_Y, NOR, true, false }, // CLRY
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // CLV
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // CMP
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // CMPA
|
||||
@@ -115,7 +131,12 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_F, NOR, true, false }, // COMF
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // COMW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // COMX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // COMY
|
||||
{ NOG, rrrr, M680X_REG_D, NOR, true, false }, // CPD
|
||||
{ NOG, rrrr, M680X_REG_D, NOR, true, false }, // CPED
|
||||
{ NOG, rrrr, M680X_REG_S, NOR, true, false }, // CPES
|
||||
{ NOG, rrrr, M680X_REG_X, NOR, true, false }, // CPEX
|
||||
{ NOG, rrrr, M680X_REG_Y, NOR, true, false }, // CPEY
|
||||
{ NOG, rrrr, M680X_REG_HX, NOR, true, false }, // CPHX
|
||||
{ NOG, rrrr, M680X_REG_S, NOR, true, false }, // CPS
|
||||
{ NOG, rrrr, M680X_REG_X, NOR, true, false }, // CPX
|
||||
@@ -135,6 +156,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_F, NOR, true, false }, // DECF
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // DECW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // DECX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // DECY
|
||||
{ NOG, mrrr, M680X_REG_S, NOR, false, false }, // DES
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // DEX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // DEY
|
||||
@@ -156,9 +178,23 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // EORB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // EORD
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // EORR
|
||||
{ NOG, mmmm, M680X_REG_X, NOR, true, false }, // EORX
|
||||
{ NOG, mmmm, M680X_REG_Y, NOR, true, false }, // EORY
|
||||
{ NOG, rmmm, NOR, NOR, true, true }, // ETBL
|
||||
{ NOG, mmmm, NOR, NOR, false, false }, // EXG
|
||||
{ NOG, mmmm, NOR, NOR, true, true }, // FDIV
|
||||
{ NOG, mmmm, M680X_REG_A, NOR, true, true }, // GLDAA
|
||||
{ NOG, mmmm, M680X_REG_B, NOR, true, true }, // GLDAB
|
||||
{ NOG, mmmm, M680X_REG_D, NOR, true, true }, // GLDD
|
||||
{ NOG, mmmm, M680X_REG_S, NOR, true, true }, // GLDS
|
||||
{ NOG, mmmm, M680X_REG_X, NOR, true, true }, // GLDX
|
||||
{ NOG, mmmm, M680X_REG_Y, NOR, true, true }, // GLDY
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, true }, // GSTAA
|
||||
{ NOG, rrrr, M680X_REG_B, NOR, true, true }, // GSTAB
|
||||
{ NOG, rrrr, M680X_REG_D, NOR, true, true }, // GSTD
|
||||
{ NOG, rrrr, M680X_REG_S, NOR, true, true }, // GSTS
|
||||
{ NOG, rrrr, M680X_REG_X, NOR, true, true }, // GSTX
|
||||
{ NOG, rrrr, M680X_REG_Y, NOR, true, true }, // GSTY
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // IBEQ
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // IBNE
|
||||
{ NOG, mmmm, NOR, NOR, true, true }, // IDIV
|
||||
@@ -172,6 +208,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_F, NOR, true, false }, // INCF
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // INCW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // INCX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // INCY
|
||||
{ NOG, mrrr, M680X_REG_S, NOR, false, false }, // INS
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // INX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // INY
|
||||
@@ -225,6 +262,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // LSRD
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // LSRW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // LSRX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // LSRY
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // MAXA
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // MAXM
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // MEM
|
||||
@@ -239,7 +277,9 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // NEGA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // NEGB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // NEGD
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // NEGW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // NEGX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // NEGY
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // NOP
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // NSA
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // OIM
|
||||
@@ -250,9 +290,12 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_CC, NOR, true, false }, // ORCC
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ORD
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ORR
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ORX
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ORY
|
||||
{ NOG, rmmm, M680X_REG_A, NOR, false, true }, // PSHA
|
||||
{ NOG, rmmm, M680X_REG_B, NOR, false, true }, // PSHB
|
||||
{ NOG, rmmm, M680X_REG_CC, NOR, false, true }, // PSHC
|
||||
{ NOG, rmmm, M680X_REG_CC, NOR, false, true }, // PSHCW
|
||||
{ NOG, rmmm, M680X_REG_D, NOR, false, true }, // PSHD
|
||||
{ NOG, rmmm, M680X_REG_H, NOR, false, true }, // PSHH
|
||||
{ NOG, mrrr, M680X_REG_S, NOR, false, false }, // PSHS
|
||||
@@ -264,6 +307,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, wmmm, M680X_REG_A, NOR, false, true }, // PULA
|
||||
{ NOG, wmmm, M680X_REG_B, NOR, false, true }, // PULB
|
||||
{ NOG, wmmm, M680X_REG_CC, NOR, false, true }, // PULC
|
||||
{ NOG, wmmm, M680X_REG_CC, NOR, false, true }, // PULCW
|
||||
{ NOG, wmmm, M680X_REG_D, NOR, false, true }, // PULD
|
||||
{ NOG, wmmm, M680X_REG_H, NOR, false, true }, // PULH
|
||||
{ NOG, mwww, M680X_REG_S, NOR, false, false }, // PULS
|
||||
@@ -280,12 +324,14 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ROLD
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // ROLW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // ROLX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // ROLY
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // ROR
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // RORA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // RORB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // RORD
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // RORW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // RORX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // RORY
|
||||
{ NOG, wrrr, M680X_REG_S, NOR, false, false }, // RSP
|
||||
{ M680X_GRP_RET, mwww, NOR, NOR, false, true }, // RTC
|
||||
{ M680X_GRP_IRET, mwww, NOR, NOR, false, true }, // RTI
|
||||
@@ -296,6 +342,9 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // SBCB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // SBCD
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // SBCR
|
||||
{ NOG, mmmm, M680X_REG_D, NOR, true, false }, // SBED
|
||||
{ NOG, mmmm, M680X_REG_X, NOR, true, false }, // SBEX
|
||||
{ NOG, mmmm, M680X_REG_Y, NOR, true, false }, // SBEY
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // SEC
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // SEI
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // SEV
|
||||
@@ -328,10 +377,13 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, mrrr, M680X_REG_F, NOR, true, false }, // SUBF
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // SUBR
|
||||
{ NOG, mrrr, M680X_REG_W, NOR, true, false }, // SUBW
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // SUBX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // SUBY
|
||||
{ M680X_GRP_INT, mmrr, NOR, NOR, true, true }, // SWI
|
||||
{ M680X_GRP_INT, mmrr, NOR, NOR, true, true }, // SWI2
|
||||
{ M680X_GRP_INT, mmrr, NOR, NOR, true, true }, // SWI3
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // SYNC
|
||||
{ NOG, muuu, M680X_REG_PC, NOR, false, false }, // SYS
|
||||
{ NOG, rwww, M680X_REG_A, M680X_REG_B, true, false }, // TAB
|
||||
{ NOG, rwww, M680X_REG_A, M680X_REG_CC, false, false }, // TAP
|
||||
{ NOG, rwww, M680X_REG_A, M680X_REG_X, false, false }, // TAX
|
||||
@@ -344,6 +396,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, rwww, NOR, NOR, false, false }, // TFR
|
||||
{ NOG, rrrr, NOR, NOR, true, false }, // TIM
|
||||
{ NOG, rwww, M680X_REG_CC, M680X_REG_A, false, false }, // TPA
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // TRAP
|
||||
{ NOG, rrrr, NOR, NOR, true, false }, // TST
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // TSTA
|
||||
{ NOG, rrrr, M680X_REG_B, NOR, true, false }, // TSTB
|
||||
@@ -352,6 +405,7 @@ static const insn_props g_insn_props[] = {
|
||||
{ NOG, rrrr, M680X_REG_F, NOR, true, false }, // TSTF
|
||||
{ NOG, rrrr, M680X_REG_W, NOR, true, false }, // TSTW
|
||||
{ NOG, rrrr, M680X_REG_X, NOR, true, false }, // TSTX
|
||||
{ NOG, rrrr, M680X_REG_Y, NOR, true, false }, // TSTY
|
||||
{ NOG, rwww, M680X_REG_S, M680X_REG_HX, false, false }, // TSX
|
||||
{ NOG, rwww, M680X_REG_S, M680X_REG_Y, false, false }, // TSY
|
||||
{ NOG, rwww, M680X_REG_X, M680X_REG_A, false, false }, // TXA
|
||||
@@ -366,4 +420,3 @@ static const insn_props g_insn_props[] = {
|
||||
};
|
||||
#undef NOR
|
||||
#undef NOG
|
||||
|
||||
|
||||
@@ -99,6 +99,7 @@ __all__ = [
|
||||
"CS_MODE_M680X_CPU12",
|
||||
"CS_MODE_M680X_HCS08",
|
||||
"CS_MODE_M680X_RS08",
|
||||
"CS_MODE_M680X_HCS12X",
|
||||
"CS_MODE_BPF_CLASSIC",
|
||||
"CS_MODE_BPF_EXTENDED",
|
||||
"CS_MODE_RISCV32",
|
||||
@@ -393,6 +394,7 @@ CS_MODE_M680X_6811 = 1 << 8 # M680X M68HC11 mode
|
||||
CS_MODE_M680X_CPU12 = 1 << 9 # M680X CPU12 mode
|
||||
CS_MODE_M680X_HCS08 = 1 << 10 # M680X HCS08 mode
|
||||
CS_MODE_M680X_RS08 = 1 << 11 # M680X RS08 mode
|
||||
CS_MODE_M680X_HCS12X = 1 << 12 # M680X HCS12X mode
|
||||
CS_MODE_BPF_CLASSIC = 0 # Classic BPF mode (default)
|
||||
CS_MODE_BPF_EXTENDED = 1 << 0 # Extended BPF mode
|
||||
CS_MODE_RISCV32 = 1 << 0 # RISCV32 mode
|
||||
|
||||
@@ -73,346 +73,400 @@ M680X_INS_ADDE = 13
|
||||
M680X_INS_ADDF = 14
|
||||
M680X_INS_ADDR = 15
|
||||
M680X_INS_ADDW = 16
|
||||
M680X_INS_AIM = 17
|
||||
M680X_INS_AIS = 18
|
||||
M680X_INS_AIX = 19
|
||||
M680X_INS_AND = 20
|
||||
M680X_INS_ANDA = 21
|
||||
M680X_INS_ANDB = 22
|
||||
M680X_INS_ANDCC = 23
|
||||
M680X_INS_ANDD = 24
|
||||
M680X_INS_ANDR = 25
|
||||
M680X_INS_ASL = 26
|
||||
M680X_INS_ASLA = 27
|
||||
M680X_INS_ASLB = 28
|
||||
M680X_INS_ASLD = 29
|
||||
M680X_INS_ASR = 30
|
||||
M680X_INS_ASRA = 31
|
||||
M680X_INS_ASRB = 32
|
||||
M680X_INS_ASRD = 33
|
||||
M680X_INS_ASRX = 34
|
||||
M680X_INS_BAND = 35
|
||||
M680X_INS_BCC = 36
|
||||
M680X_INS_BCLR = 37
|
||||
M680X_INS_BCS = 38
|
||||
M680X_INS_BEOR = 39
|
||||
M680X_INS_BEQ = 40
|
||||
M680X_INS_BGE = 41
|
||||
M680X_INS_BGND = 42
|
||||
M680X_INS_BGT = 43
|
||||
M680X_INS_BHCC = 44
|
||||
M680X_INS_BHCS = 45
|
||||
M680X_INS_BHI = 46
|
||||
M680X_INS_BIAND = 47
|
||||
M680X_INS_BIEOR = 48
|
||||
M680X_INS_BIH = 49
|
||||
M680X_INS_BIL = 50
|
||||
M680X_INS_BIOR = 51
|
||||
M680X_INS_BIT = 52
|
||||
M680X_INS_BITA = 53
|
||||
M680X_INS_BITB = 54
|
||||
M680X_INS_BITD = 55
|
||||
M680X_INS_BITMD = 56
|
||||
M680X_INS_BLE = 57
|
||||
M680X_INS_BLS = 58
|
||||
M680X_INS_BLT = 59
|
||||
M680X_INS_BMC = 60
|
||||
M680X_INS_BMI = 61
|
||||
M680X_INS_BMS = 62
|
||||
M680X_INS_BNE = 63
|
||||
M680X_INS_BOR = 64
|
||||
M680X_INS_BPL = 65
|
||||
M680X_INS_BRCLR = 66
|
||||
M680X_INS_BRSET = 67
|
||||
M680X_INS_BRA = 68
|
||||
M680X_INS_BRN = 69
|
||||
M680X_INS_BSET = 70
|
||||
M680X_INS_BSR = 71
|
||||
M680X_INS_BVC = 72
|
||||
M680X_INS_BVS = 73
|
||||
M680X_INS_CALL = 74
|
||||
M680X_INS_CBA = 75
|
||||
M680X_INS_CBEQ = 76
|
||||
M680X_INS_CBEQA = 77
|
||||
M680X_INS_CBEQX = 78
|
||||
M680X_INS_CLC = 79
|
||||
M680X_INS_CLI = 80
|
||||
M680X_INS_CLR = 81
|
||||
M680X_INS_CLRA = 82
|
||||
M680X_INS_CLRB = 83
|
||||
M680X_INS_CLRD = 84
|
||||
M680X_INS_CLRE = 85
|
||||
M680X_INS_CLRF = 86
|
||||
M680X_INS_CLRH = 87
|
||||
M680X_INS_CLRW = 88
|
||||
M680X_INS_CLRX = 89
|
||||
M680X_INS_CLV = 90
|
||||
M680X_INS_CMP = 91
|
||||
M680X_INS_CMPA = 92
|
||||
M680X_INS_CMPB = 93
|
||||
M680X_INS_CMPD = 94
|
||||
M680X_INS_CMPE = 95
|
||||
M680X_INS_CMPF = 96
|
||||
M680X_INS_CMPR = 97
|
||||
M680X_INS_CMPS = 98
|
||||
M680X_INS_CMPU = 99
|
||||
M680X_INS_CMPW = 100
|
||||
M680X_INS_CMPX = 101
|
||||
M680X_INS_CMPY = 102
|
||||
M680X_INS_COM = 103
|
||||
M680X_INS_COMA = 104
|
||||
M680X_INS_COMB = 105
|
||||
M680X_INS_COMD = 106
|
||||
M680X_INS_COME = 107
|
||||
M680X_INS_COMF = 108
|
||||
M680X_INS_COMW = 109
|
||||
M680X_INS_COMX = 110
|
||||
M680X_INS_CPD = 111
|
||||
M680X_INS_CPHX = 112
|
||||
M680X_INS_CPS = 113
|
||||
M680X_INS_CPX = 114
|
||||
M680X_INS_CPY = 115
|
||||
M680X_INS_CWAI = 116
|
||||
M680X_INS_DAA = 117
|
||||
M680X_INS_DBEQ = 118
|
||||
M680X_INS_DBNE = 119
|
||||
M680X_INS_DBNZ = 120
|
||||
M680X_INS_DBNZA = 121
|
||||
M680X_INS_DBNZX = 122
|
||||
M680X_INS_DEC = 123
|
||||
M680X_INS_DECA = 124
|
||||
M680X_INS_DECB = 125
|
||||
M680X_INS_DECD = 126
|
||||
M680X_INS_DECE = 127
|
||||
M680X_INS_DECF = 128
|
||||
M680X_INS_DECW = 129
|
||||
M680X_INS_DECX = 130
|
||||
M680X_INS_DES = 131
|
||||
M680X_INS_DEX = 132
|
||||
M680X_INS_DEY = 133
|
||||
M680X_INS_DIV = 134
|
||||
M680X_INS_DIVD = 135
|
||||
M680X_INS_DIVQ = 136
|
||||
M680X_INS_EDIV = 137
|
||||
M680X_INS_EDIVS = 138
|
||||
M680X_INS_EIM = 139
|
||||
M680X_INS_EMACS = 140
|
||||
M680X_INS_EMAXD = 141
|
||||
M680X_INS_EMAXM = 142
|
||||
M680X_INS_EMIND = 143
|
||||
M680X_INS_EMINM = 144
|
||||
M680X_INS_EMUL = 145
|
||||
M680X_INS_EMULS = 146
|
||||
M680X_INS_EOR = 147
|
||||
M680X_INS_EORA = 148
|
||||
M680X_INS_EORB = 149
|
||||
M680X_INS_EORD = 150
|
||||
M680X_INS_EORR = 151
|
||||
M680X_INS_ETBL = 152
|
||||
M680X_INS_EXG = 153
|
||||
M680X_INS_FDIV = 154
|
||||
M680X_INS_IBEQ = 155
|
||||
M680X_INS_IBNE = 156
|
||||
M680X_INS_IDIV = 157
|
||||
M680X_INS_IDIVS = 158
|
||||
M680X_INS_ILLGL = 159
|
||||
M680X_INS_INC = 160
|
||||
M680X_INS_INCA = 161
|
||||
M680X_INS_INCB = 162
|
||||
M680X_INS_INCD = 163
|
||||
M680X_INS_INCE = 164
|
||||
M680X_INS_INCF = 165
|
||||
M680X_INS_INCW = 166
|
||||
M680X_INS_INCX = 167
|
||||
M680X_INS_INS = 168
|
||||
M680X_INS_INX = 169
|
||||
M680X_INS_INY = 170
|
||||
M680X_INS_JMP = 171
|
||||
M680X_INS_JSR = 172
|
||||
M680X_INS_LBCC = 173
|
||||
M680X_INS_LBCS = 174
|
||||
M680X_INS_LBEQ = 175
|
||||
M680X_INS_LBGE = 176
|
||||
M680X_INS_LBGT = 177
|
||||
M680X_INS_LBHI = 178
|
||||
M680X_INS_LBLE = 179
|
||||
M680X_INS_LBLS = 180
|
||||
M680X_INS_LBLT = 181
|
||||
M680X_INS_LBMI = 182
|
||||
M680X_INS_LBNE = 183
|
||||
M680X_INS_LBPL = 184
|
||||
M680X_INS_LBRA = 185
|
||||
M680X_INS_LBRN = 186
|
||||
M680X_INS_LBSR = 187
|
||||
M680X_INS_LBVC = 188
|
||||
M680X_INS_LBVS = 189
|
||||
M680X_INS_LDA = 190
|
||||
M680X_INS_LDAA = 191
|
||||
M680X_INS_LDAB = 192
|
||||
M680X_INS_LDB = 193
|
||||
M680X_INS_LDBT = 194
|
||||
M680X_INS_LDD = 195
|
||||
M680X_INS_LDE = 196
|
||||
M680X_INS_LDF = 197
|
||||
M680X_INS_LDHX = 198
|
||||
M680X_INS_LDMD = 199
|
||||
M680X_INS_LDQ = 200
|
||||
M680X_INS_LDS = 201
|
||||
M680X_INS_LDU = 202
|
||||
M680X_INS_LDW = 203
|
||||
M680X_INS_LDX = 204
|
||||
M680X_INS_LDY = 205
|
||||
M680X_INS_LEAS = 206
|
||||
M680X_INS_LEAU = 207
|
||||
M680X_INS_LEAX = 208
|
||||
M680X_INS_LEAY = 209
|
||||
M680X_INS_LSL = 210
|
||||
M680X_INS_LSLA = 211
|
||||
M680X_INS_LSLB = 212
|
||||
M680X_INS_LSLD = 213
|
||||
M680X_INS_LSLX = 214
|
||||
M680X_INS_LSR = 215
|
||||
M680X_INS_LSRA = 216
|
||||
M680X_INS_LSRB = 217
|
||||
M680X_INS_LSRD = 218
|
||||
M680X_INS_LSRW = 219
|
||||
M680X_INS_LSRX = 220
|
||||
M680X_INS_MAXA = 221
|
||||
M680X_INS_MAXM = 222
|
||||
M680X_INS_MEM = 223
|
||||
M680X_INS_MINA = 224
|
||||
M680X_INS_MINM = 225
|
||||
M680X_INS_MOV = 226
|
||||
M680X_INS_MOVB = 227
|
||||
M680X_INS_MOVW = 228
|
||||
M680X_INS_MUL = 229
|
||||
M680X_INS_MULD = 230
|
||||
M680X_INS_NEG = 231
|
||||
M680X_INS_NEGA = 232
|
||||
M680X_INS_NEGB = 233
|
||||
M680X_INS_NEGD = 234
|
||||
M680X_INS_NEGX = 235
|
||||
M680X_INS_NOP = 236
|
||||
M680X_INS_NSA = 237
|
||||
M680X_INS_OIM = 238
|
||||
M680X_INS_ORA = 239
|
||||
M680X_INS_ORAA = 240
|
||||
M680X_INS_ORAB = 241
|
||||
M680X_INS_ORB = 242
|
||||
M680X_INS_ORCC = 243
|
||||
M680X_INS_ORD = 244
|
||||
M680X_INS_ORR = 245
|
||||
M680X_INS_PSHA = 246
|
||||
M680X_INS_PSHB = 247
|
||||
M680X_INS_PSHC = 248
|
||||
M680X_INS_PSHD = 249
|
||||
M680X_INS_PSHH = 250
|
||||
M680X_INS_PSHS = 251
|
||||
M680X_INS_PSHSW = 252
|
||||
M680X_INS_PSHU = 253
|
||||
M680X_INS_PSHUW = 254
|
||||
M680X_INS_PSHX = 255
|
||||
M680X_INS_PSHY = 256
|
||||
M680X_INS_PULA = 257
|
||||
M680X_INS_PULB = 258
|
||||
M680X_INS_PULC = 259
|
||||
M680X_INS_PULD = 260
|
||||
M680X_INS_PULH = 261
|
||||
M680X_INS_PULS = 262
|
||||
M680X_INS_PULSW = 263
|
||||
M680X_INS_PULU = 264
|
||||
M680X_INS_PULUW = 265
|
||||
M680X_INS_PULX = 266
|
||||
M680X_INS_PULY = 267
|
||||
M680X_INS_REV = 268
|
||||
M680X_INS_REVW = 269
|
||||
M680X_INS_ROL = 270
|
||||
M680X_INS_ROLA = 271
|
||||
M680X_INS_ROLB = 272
|
||||
M680X_INS_ROLD = 273
|
||||
M680X_INS_ROLW = 274
|
||||
M680X_INS_ROLX = 275
|
||||
M680X_INS_ROR = 276
|
||||
M680X_INS_RORA = 277
|
||||
M680X_INS_RORB = 278
|
||||
M680X_INS_RORD = 279
|
||||
M680X_INS_RORW = 280
|
||||
M680X_INS_RORX = 281
|
||||
M680X_INS_RSP = 282
|
||||
M680X_INS_RTC = 283
|
||||
M680X_INS_RTI = 284
|
||||
M680X_INS_RTS = 285
|
||||
M680X_INS_SBA = 286
|
||||
M680X_INS_SBC = 287
|
||||
M680X_INS_SBCA = 288
|
||||
M680X_INS_SBCB = 289
|
||||
M680X_INS_SBCD = 290
|
||||
M680X_INS_SBCR = 291
|
||||
M680X_INS_SEC = 292
|
||||
M680X_INS_SEI = 293
|
||||
M680X_INS_SEV = 294
|
||||
M680X_INS_SEX = 295
|
||||
M680X_INS_SEXW = 296
|
||||
M680X_INS_SHA = 297
|
||||
M680X_INS_SLA = 298
|
||||
M680X_INS_SLP = 299
|
||||
M680X_INS_STA = 300
|
||||
M680X_INS_STAA = 301
|
||||
M680X_INS_STAB = 302
|
||||
M680X_INS_STB = 303
|
||||
M680X_INS_STBT = 304
|
||||
M680X_INS_STD = 305
|
||||
M680X_INS_STE = 306
|
||||
M680X_INS_STF = 307
|
||||
M680X_INS_STOP = 308
|
||||
M680X_INS_STHX = 309
|
||||
M680X_INS_STQ = 310
|
||||
M680X_INS_STS = 311
|
||||
M680X_INS_STU = 312
|
||||
M680X_INS_STW = 313
|
||||
M680X_INS_STX = 314
|
||||
M680X_INS_STY = 315
|
||||
M680X_INS_SUB = 316
|
||||
M680X_INS_SUBA = 317
|
||||
M680X_INS_SUBB = 318
|
||||
M680X_INS_SUBD = 319
|
||||
M680X_INS_SUBE = 320
|
||||
M680X_INS_SUBF = 321
|
||||
M680X_INS_SUBR = 322
|
||||
M680X_INS_SUBW = 323
|
||||
M680X_INS_SWI = 324
|
||||
M680X_INS_SWI2 = 325
|
||||
M680X_INS_SWI3 = 326
|
||||
M680X_INS_SYNC = 327
|
||||
M680X_INS_TAB = 328
|
||||
M680X_INS_TAP = 329
|
||||
M680X_INS_TAX = 330
|
||||
M680X_INS_TBA = 331
|
||||
M680X_INS_TBEQ = 332
|
||||
M680X_INS_TBL = 333
|
||||
M680X_INS_TBNE = 334
|
||||
M680X_INS_TEST = 335
|
||||
M680X_INS_TFM = 336
|
||||
M680X_INS_TFR = 337
|
||||
M680X_INS_TIM = 338
|
||||
M680X_INS_TPA = 339
|
||||
M680X_INS_TST = 340
|
||||
M680X_INS_TSTA = 341
|
||||
M680X_INS_TSTB = 342
|
||||
M680X_INS_TSTD = 343
|
||||
M680X_INS_TSTE = 344
|
||||
M680X_INS_TSTF = 345
|
||||
M680X_INS_TSTW = 346
|
||||
M680X_INS_TSTX = 347
|
||||
M680X_INS_TSX = 348
|
||||
M680X_INS_TSY = 349
|
||||
M680X_INS_TXA = 350
|
||||
M680X_INS_TXS = 351
|
||||
M680X_INS_TYS = 352
|
||||
M680X_INS_WAI = 353
|
||||
M680X_INS_WAIT = 354
|
||||
M680X_INS_WAV = 355
|
||||
M680X_INS_WAVR = 356
|
||||
M680X_INS_XGDX = 357
|
||||
M680X_INS_XGDY = 358
|
||||
M680X_INS_ENDING = 359
|
||||
M680X_INS_ADDX = 17
|
||||
M680X_INS_ADDY = 18
|
||||
M680X_INS_ADED = 19
|
||||
M680X_INS_ADEX = 20
|
||||
M680X_INS_ADEY = 21
|
||||
M680X_INS_AIM = 22
|
||||
M680X_INS_AIS = 23
|
||||
M680X_INS_AIX = 24
|
||||
M680X_INS_AND = 25
|
||||
M680X_INS_ANDA = 26
|
||||
M680X_INS_ANDB = 27
|
||||
M680X_INS_ANDX = 28
|
||||
M680X_INS_ANDY = 29
|
||||
M680X_INS_ANDCC = 30
|
||||
M680X_INS_ANDD = 31
|
||||
M680X_INS_ANDR = 32
|
||||
M680X_INS_ASL = 33
|
||||
M680X_INS_ASLA = 34
|
||||
M680X_INS_ASLB = 35
|
||||
M680X_INS_ASLD = 36
|
||||
M680X_INS_ASLW = 37
|
||||
M680X_INS_ASLX = 38
|
||||
M680X_INS_ASLY = 39
|
||||
M680X_INS_ASR = 40
|
||||
M680X_INS_ASRA = 41
|
||||
M680X_INS_ASRB = 42
|
||||
M680X_INS_ASRD = 43
|
||||
M680X_INS_ASRW = 44
|
||||
M680X_INS_ASRX = 45
|
||||
M680X_INS_ASRY = 46
|
||||
M680X_INS_BAND = 47
|
||||
M680X_INS_BCC = 48
|
||||
M680X_INS_BCLR = 49
|
||||
M680X_INS_BCS = 50
|
||||
M680X_INS_BEOR = 51
|
||||
M680X_INS_BEQ = 52
|
||||
M680X_INS_BGE = 53
|
||||
M680X_INS_BGND = 54
|
||||
M680X_INS_BGT = 55
|
||||
M680X_INS_BHCC = 56
|
||||
M680X_INS_BHCS = 57
|
||||
M680X_INS_BHI = 58
|
||||
M680X_INS_BIAND = 59
|
||||
M680X_INS_BIEOR = 60
|
||||
M680X_INS_BIH = 61
|
||||
M680X_INS_BIL = 62
|
||||
M680X_INS_BIOR = 63
|
||||
M680X_INS_BIT = 64
|
||||
M680X_INS_BITA = 65
|
||||
M680X_INS_BITB = 66
|
||||
M680X_INS_BITD = 67
|
||||
M680X_INS_BITMD = 68
|
||||
M680X_INS_BITX = 69
|
||||
M680X_INS_BITY = 70
|
||||
M680X_INS_BLE = 71
|
||||
M680X_INS_BLS = 72
|
||||
M680X_INS_BLT = 73
|
||||
M680X_INS_BMC = 74
|
||||
M680X_INS_BMI = 75
|
||||
M680X_INS_BMS = 76
|
||||
M680X_INS_BNE = 77
|
||||
M680X_INS_BOR = 78
|
||||
M680X_INS_BPL = 79
|
||||
M680X_INS_BRCLR = 80
|
||||
M680X_INS_BRSET = 81
|
||||
M680X_INS_BRA = 82
|
||||
M680X_INS_BRN = 83
|
||||
M680X_INS_BSET = 84
|
||||
M680X_INS_BSR = 85
|
||||
M680X_INS_BTAS = 86
|
||||
M680X_INS_BVC = 87
|
||||
M680X_INS_BVS = 88
|
||||
M680X_INS_CALL = 89
|
||||
M680X_INS_CBA = 90
|
||||
M680X_INS_CBEQ = 91
|
||||
M680X_INS_CBEQA = 92
|
||||
M680X_INS_CBEQX = 93
|
||||
M680X_INS_CLC = 94
|
||||
M680X_INS_CLI = 95
|
||||
M680X_INS_CLR = 96
|
||||
M680X_INS_CLRA = 97
|
||||
M680X_INS_CLRB = 98
|
||||
M680X_INS_CLRD = 99
|
||||
M680X_INS_CLRE = 100
|
||||
M680X_INS_CLRF = 101
|
||||
M680X_INS_CLRH = 102
|
||||
M680X_INS_CLRW = 103
|
||||
M680X_INS_CLRX = 104
|
||||
M680X_INS_CLRY = 105
|
||||
M680X_INS_CLV = 106
|
||||
M680X_INS_CMP = 107
|
||||
M680X_INS_CMPA = 108
|
||||
M680X_INS_CMPB = 109
|
||||
M680X_INS_CMPD = 110
|
||||
M680X_INS_CMPE = 111
|
||||
M680X_INS_CMPF = 112
|
||||
M680X_INS_CMPR = 113
|
||||
M680X_INS_CMPS = 114
|
||||
M680X_INS_CMPU = 115
|
||||
M680X_INS_CMPW = 116
|
||||
M680X_INS_CMPX = 117
|
||||
M680X_INS_CMPY = 118
|
||||
M680X_INS_COM = 119
|
||||
M680X_INS_COMA = 120
|
||||
M680X_INS_COMB = 121
|
||||
M680X_INS_COMD = 122
|
||||
M680X_INS_COME = 123
|
||||
M680X_INS_COMF = 124
|
||||
M680X_INS_COMW = 125
|
||||
M680X_INS_COMX = 126
|
||||
M680X_INS_COMY = 127
|
||||
M680X_INS_CPD = 128
|
||||
M680X_INS_CPED = 129
|
||||
M680X_INS_CPES = 130
|
||||
M680X_INS_CPEX = 131
|
||||
M680X_INS_CPEY = 132
|
||||
M680X_INS_CPHX = 133
|
||||
M680X_INS_CPS = 134
|
||||
M680X_INS_CPX = 135
|
||||
M680X_INS_CPY = 136
|
||||
M680X_INS_CWAI = 137
|
||||
M680X_INS_DAA = 138
|
||||
M680X_INS_DBEQ = 139
|
||||
M680X_INS_DBNE = 140
|
||||
M680X_INS_DBNZ = 141
|
||||
M680X_INS_DBNZA = 142
|
||||
M680X_INS_DBNZX = 143
|
||||
M680X_INS_DEC = 144
|
||||
M680X_INS_DECA = 145
|
||||
M680X_INS_DECB = 146
|
||||
M680X_INS_DECD = 147
|
||||
M680X_INS_DECE = 148
|
||||
M680X_INS_DECF = 149
|
||||
M680X_INS_DECW = 150
|
||||
M680X_INS_DECX = 151
|
||||
M680X_INS_DECY = 152
|
||||
M680X_INS_DES = 153
|
||||
M680X_INS_DEX = 154
|
||||
M680X_INS_DEY = 155
|
||||
M680X_INS_DIV = 156
|
||||
M680X_INS_DIVD = 157
|
||||
M680X_INS_DIVQ = 158
|
||||
M680X_INS_EDIV = 159
|
||||
M680X_INS_EDIVS = 160
|
||||
M680X_INS_EIM = 161
|
||||
M680X_INS_EMACS = 162
|
||||
M680X_INS_EMAXD = 163
|
||||
M680X_INS_EMAXM = 164
|
||||
M680X_INS_EMIND = 165
|
||||
M680X_INS_EMINM = 166
|
||||
M680X_INS_EMUL = 167
|
||||
M680X_INS_EMULS = 168
|
||||
M680X_INS_EOR = 169
|
||||
M680X_INS_EORA = 170
|
||||
M680X_INS_EORB = 171
|
||||
M680X_INS_EORD = 172
|
||||
M680X_INS_EORR = 173
|
||||
M680X_INS_EORX = 174
|
||||
M680X_INS_EORY = 175
|
||||
M680X_INS_ETBL = 176
|
||||
M680X_INS_EXG = 177
|
||||
M680X_INS_FDIV = 178
|
||||
M680X_INS_GLDAA = 179
|
||||
M680X_INS_GLDAB = 180
|
||||
M680X_INS_GLDD = 181
|
||||
M680X_INS_GLDS = 182
|
||||
M680X_INS_GLDX = 183
|
||||
M680X_INS_GLDY = 184
|
||||
M680X_INS_GSTAA = 185
|
||||
M680X_INS_GSTAB = 186
|
||||
M680X_INS_GSTD = 187
|
||||
M680X_INS_GSTS = 188
|
||||
M680X_INS_GSTX = 189
|
||||
M680X_INS_GSTY = 190
|
||||
M680X_INS_IBEQ = 191
|
||||
M680X_INS_IBNE = 192
|
||||
M680X_INS_IDIV = 193
|
||||
M680X_INS_IDIVS = 194
|
||||
M680X_INS_ILLGL = 195
|
||||
M680X_INS_INC = 196
|
||||
M680X_INS_INCA = 197
|
||||
M680X_INS_INCB = 198
|
||||
M680X_INS_INCD = 199
|
||||
M680X_INS_INCE = 200
|
||||
M680X_INS_INCF = 201
|
||||
M680X_INS_INCW = 202
|
||||
M680X_INS_INCX = 203
|
||||
M680X_INS_INCY = 204
|
||||
M680X_INS_INS = 205
|
||||
M680X_INS_INX = 206
|
||||
M680X_INS_INY = 207
|
||||
M680X_INS_JMP = 208
|
||||
M680X_INS_JSR = 209
|
||||
M680X_INS_LBCC = 210
|
||||
M680X_INS_LBCS = 211
|
||||
M680X_INS_LBEQ = 212
|
||||
M680X_INS_LBGE = 213
|
||||
M680X_INS_LBGT = 214
|
||||
M680X_INS_LBHI = 215
|
||||
M680X_INS_LBLE = 216
|
||||
M680X_INS_LBLS = 217
|
||||
M680X_INS_LBLT = 218
|
||||
M680X_INS_LBMI = 219
|
||||
M680X_INS_LBNE = 220
|
||||
M680X_INS_LBPL = 221
|
||||
M680X_INS_LBRA = 222
|
||||
M680X_INS_LBRN = 223
|
||||
M680X_INS_LBSR = 224
|
||||
M680X_INS_LBVC = 225
|
||||
M680X_INS_LBVS = 226
|
||||
M680X_INS_LDA = 227
|
||||
M680X_INS_LDAA = 228
|
||||
M680X_INS_LDAB = 229
|
||||
M680X_INS_LDB = 230
|
||||
M680X_INS_LDBT = 231
|
||||
M680X_INS_LDD = 232
|
||||
M680X_INS_LDE = 233
|
||||
M680X_INS_LDF = 234
|
||||
M680X_INS_LDHX = 235
|
||||
M680X_INS_LDMD = 236
|
||||
M680X_INS_LDQ = 237
|
||||
M680X_INS_LDS = 238
|
||||
M680X_INS_LDU = 239
|
||||
M680X_INS_LDW = 240
|
||||
M680X_INS_LDX = 241
|
||||
M680X_INS_LDY = 242
|
||||
M680X_INS_LEAS = 243
|
||||
M680X_INS_LEAU = 244
|
||||
M680X_INS_LEAX = 245
|
||||
M680X_INS_LEAY = 246
|
||||
M680X_INS_LSL = 247
|
||||
M680X_INS_LSLA = 248
|
||||
M680X_INS_LSLB = 249
|
||||
M680X_INS_LSLD = 250
|
||||
M680X_INS_LSLX = 251
|
||||
M680X_INS_LSR = 252
|
||||
M680X_INS_LSRA = 253
|
||||
M680X_INS_LSRB = 254
|
||||
M680X_INS_LSRD = 255
|
||||
M680X_INS_LSRW = 256
|
||||
M680X_INS_LSRX = 257
|
||||
M680X_INS_LSRY = 258
|
||||
M680X_INS_MAXA = 259
|
||||
M680X_INS_MAXM = 260
|
||||
M680X_INS_MEM = 261
|
||||
M680X_INS_MINA = 262
|
||||
M680X_INS_MINM = 263
|
||||
M680X_INS_MOV = 264
|
||||
M680X_INS_MOVB = 265
|
||||
M680X_INS_MOVW = 266
|
||||
M680X_INS_MUL = 267
|
||||
M680X_INS_MULD = 268
|
||||
M680X_INS_NEG = 269
|
||||
M680X_INS_NEGA = 270
|
||||
M680X_INS_NEGB = 271
|
||||
M680X_INS_NEGD = 272
|
||||
M680X_INS_NEGW = 273
|
||||
M680X_INS_NEGX = 274
|
||||
M680X_INS_NEGY = 275
|
||||
M680X_INS_NOP = 276
|
||||
M680X_INS_NSA = 277
|
||||
M680X_INS_OIM = 278
|
||||
M680X_INS_ORA = 279
|
||||
M680X_INS_ORAA = 280
|
||||
M680X_INS_ORAB = 281
|
||||
M680X_INS_ORB = 282
|
||||
M680X_INS_ORCC = 283
|
||||
M680X_INS_ORD = 284
|
||||
M680X_INS_ORR = 285
|
||||
M680X_INS_ORX = 286
|
||||
M680X_INS_ORY = 287
|
||||
M680X_INS_PSHA = 288
|
||||
M680X_INS_PSHB = 289
|
||||
M680X_INS_PSHC = 290
|
||||
M680X_INS_PSHCW = 291
|
||||
M680X_INS_PSHD = 292
|
||||
M680X_INS_PSHH = 293
|
||||
M680X_INS_PSHS = 294
|
||||
M680X_INS_PSHSW = 295
|
||||
M680X_INS_PSHU = 296
|
||||
M680X_INS_PSHUW = 297
|
||||
M680X_INS_PSHX = 298
|
||||
M680X_INS_PSHY = 299
|
||||
M680X_INS_PULA = 300
|
||||
M680X_INS_PULB = 301
|
||||
M680X_INS_PULC = 302
|
||||
M680X_INS_PULCW = 303
|
||||
M680X_INS_PULD = 304
|
||||
M680X_INS_PULH = 305
|
||||
M680X_INS_PULS = 306
|
||||
M680X_INS_PULSW = 307
|
||||
M680X_INS_PULU = 308
|
||||
M680X_INS_PULUW = 309
|
||||
M680X_INS_PULX = 310
|
||||
M680X_INS_PULY = 311
|
||||
M680X_INS_REV = 312
|
||||
M680X_INS_REVW = 313
|
||||
M680X_INS_ROL = 314
|
||||
M680X_INS_ROLA = 315
|
||||
M680X_INS_ROLB = 316
|
||||
M680X_INS_ROLD = 317
|
||||
M680X_INS_ROLW = 318
|
||||
M680X_INS_ROLX = 319
|
||||
M680X_INS_ROLY = 320
|
||||
M680X_INS_ROR = 321
|
||||
M680X_INS_RORA = 322
|
||||
M680X_INS_RORB = 323
|
||||
M680X_INS_RORD = 324
|
||||
M680X_INS_RORW = 325
|
||||
M680X_INS_RORX = 326
|
||||
M680X_INS_RORY = 327
|
||||
M680X_INS_RSP = 328
|
||||
M680X_INS_RTC = 329
|
||||
M680X_INS_RTI = 330
|
||||
M680X_INS_RTS = 331
|
||||
M680X_INS_SBA = 332
|
||||
M680X_INS_SBC = 333
|
||||
M680X_INS_SBCA = 334
|
||||
M680X_INS_SBCB = 335
|
||||
M680X_INS_SBCD = 336
|
||||
M680X_INS_SBCR = 337
|
||||
M680X_INS_SBED = 338
|
||||
M680X_INS_SBEX = 339
|
||||
M680X_INS_SBEY = 340
|
||||
M680X_INS_SEC = 341
|
||||
M680X_INS_SEI = 342
|
||||
M680X_INS_SEV = 343
|
||||
M680X_INS_SEX = 344
|
||||
M680X_INS_SEXW = 345
|
||||
M680X_INS_SHA = 346
|
||||
M680X_INS_SLA = 347
|
||||
M680X_INS_SLP = 348
|
||||
M680X_INS_STA = 349
|
||||
M680X_INS_STAA = 350
|
||||
M680X_INS_STAB = 351
|
||||
M680X_INS_STB = 352
|
||||
M680X_INS_STBT = 353
|
||||
M680X_INS_STD = 354
|
||||
M680X_INS_STE = 355
|
||||
M680X_INS_STF = 356
|
||||
M680X_INS_STOP = 357
|
||||
M680X_INS_STHX = 358
|
||||
M680X_INS_STQ = 359
|
||||
M680X_INS_STS = 360
|
||||
M680X_INS_STU = 361
|
||||
M680X_INS_STW = 362
|
||||
M680X_INS_STX = 363
|
||||
M680X_INS_STY = 364
|
||||
M680X_INS_SUB = 365
|
||||
M680X_INS_SUBA = 366
|
||||
M680X_INS_SUBB = 367
|
||||
M680X_INS_SUBD = 368
|
||||
M680X_INS_SUBE = 369
|
||||
M680X_INS_SUBF = 370
|
||||
M680X_INS_SUBR = 371
|
||||
M680X_INS_SUBW = 372
|
||||
M680X_INS_SUBX = 373
|
||||
M680X_INS_SUBY = 374
|
||||
M680X_INS_SWI = 375
|
||||
M680X_INS_SWI2 = 376
|
||||
M680X_INS_SWI3 = 377
|
||||
M680X_INS_SYNC = 378
|
||||
M680X_INS_SYS = 379
|
||||
M680X_INS_TAB = 380
|
||||
M680X_INS_TAP = 381
|
||||
M680X_INS_TAX = 382
|
||||
M680X_INS_TBA = 383
|
||||
M680X_INS_TBEQ = 384
|
||||
M680X_INS_TBL = 385
|
||||
M680X_INS_TBNE = 386
|
||||
M680X_INS_TEST = 387
|
||||
M680X_INS_TFM = 388
|
||||
M680X_INS_TFR = 389
|
||||
M680X_INS_TIM = 390
|
||||
M680X_INS_TPA = 391
|
||||
M680X_INS_TRAP = 392
|
||||
M680X_INS_TST = 393
|
||||
M680X_INS_TSTA = 394
|
||||
M680X_INS_TSTB = 395
|
||||
M680X_INS_TSTD = 396
|
||||
M680X_INS_TSTE = 397
|
||||
M680X_INS_TSTF = 398
|
||||
M680X_INS_TSTW = 399
|
||||
M680X_INS_TSTX = 400
|
||||
M680X_INS_TSTY = 401
|
||||
M680X_INS_TSX = 402
|
||||
M680X_INS_TSY = 403
|
||||
M680X_INS_TXA = 404
|
||||
M680X_INS_TXS = 405
|
||||
M680X_INS_TYS = 406
|
||||
M680X_INS_WAI = 407
|
||||
M680X_INS_WAIT = 408
|
||||
M680X_INS_WAV = 409
|
||||
M680X_INS_WAVR = 410
|
||||
M680X_INS_XGDX = 411
|
||||
M680X_INS_XGDY = 412
|
||||
M680X_INS_ENDING = 413
|
||||
|
||||
@@ -185,7 +185,7 @@ typedef struct cs_arch_config {
|
||||
CS_MODE_M680X_6805 | CS_MODE_M680X_6808 | \
|
||||
CS_MODE_M680X_6809 | CS_MODE_M680X_6811 | \
|
||||
CS_MODE_M680X_CPU12 | CS_MODE_M680X_HCS08 | \
|
||||
CS_MODE_M680X_RS08), \
|
||||
CS_MODE_M680X_RS08 | CS_MODE_M680X_HCS12X), \
|
||||
}
|
||||
#define CS_ARCH_CONFIG_EVM \
|
||||
{ \
|
||||
|
||||
@@ -440,6 +440,7 @@ static struct {
|
||||
{ "hd6309", "m680x, HD6309", CS_ARCH_M680X, CS_MODE_M680X_6309 },
|
||||
{ "hcs08", "m680x, HCS08", CS_ARCH_M680X, CS_MODE_M680X_HCS08 },
|
||||
{ "rs08", "m680x, RS08", CS_ARCH_M680X, CS_MODE_M680X_RS08 },
|
||||
{ "hcs12x", "m680x, HCS12X", CS_ARCH_M680X, CS_MODE_M680X_HCS12X },
|
||||
{ "evm", "ethereum virtual machine", CS_ARCH_EVM, 0 },
|
||||
|
||||
{ "wasm", "web assembly", CS_ARCH_WASM, 0 },
|
||||
|
||||
@@ -207,6 +207,7 @@ typedef enum cs_mode {
|
||||
///< used on M68HC12/HCS12
|
||||
CS_MODE_M680X_HCS08 = 1 << 10, ///< M680X Freescale/NXP HCS08 mode
|
||||
CS_MODE_M680X_RS08 = 1 << 11, ///< M680X Freescale/NXP RS08 mode
|
||||
CS_MODE_M680X_HCS12X = 1 << 12, ///< M680X Freescale/NXP HCS12X mode
|
||||
CS_MODE_BPF_CLASSIC = 0, ///< Classic BPF mode (default)
|
||||
CS_MODE_BPF_EXTENDED = 1 << 0, ///< Extended BPF mode
|
||||
CS_MODE_RISCV32 = 1 << 0, ///< RISCV RV32G
|
||||
|
||||
@@ -193,12 +193,19 @@ typedef enum m680x_insn {
|
||||
M680X_INS_ADDF,
|
||||
M680X_INS_ADDR,
|
||||
M680X_INS_ADDW,
|
||||
M680X_INS_ADDX, ///< HCS12X
|
||||
M680X_INS_ADDY, ///< HCS12X
|
||||
M680X_INS_ADED, ///< HCS12X
|
||||
M680X_INS_ADEX, ///< HCS12X
|
||||
M680X_INS_ADEY, ///< HCS12X
|
||||
M680X_INS_AIM,
|
||||
M680X_INS_AIS,
|
||||
M680X_INS_AIX,
|
||||
M680X_INS_AND,
|
||||
M680X_INS_ANDA,
|
||||
M680X_INS_ANDB,
|
||||
M680X_INS_ANDX, ///< HCS12X
|
||||
M680X_INS_ANDY, ///< HCS12X
|
||||
M680X_INS_ANDCC,
|
||||
M680X_INS_ANDD,
|
||||
M680X_INS_ANDR,
|
||||
@@ -206,11 +213,16 @@ typedef enum m680x_insn {
|
||||
M680X_INS_ASLA,
|
||||
M680X_INS_ASLB,
|
||||
M680X_INS_ASLD, ///< or LSLD
|
||||
M680X_INS_ASLW, ///< HCS12X
|
||||
M680X_INS_ASLX, ///< HCS12X
|
||||
M680X_INS_ASLY, ///< HCS12X
|
||||
M680X_INS_ASR,
|
||||
M680X_INS_ASRA,
|
||||
M680X_INS_ASRB,
|
||||
M680X_INS_ASRD,
|
||||
M680X_INS_ASRW, ///< HCS12X
|
||||
M680X_INS_ASRX,
|
||||
M680X_INS_ASRY, ///< HCS12X
|
||||
M680X_INS_BAND,
|
||||
M680X_INS_BCC, ///< or BHS
|
||||
M680X_INS_BCLR,
|
||||
@@ -233,6 +245,8 @@ typedef enum m680x_insn {
|
||||
M680X_INS_BITB,
|
||||
M680X_INS_BITD,
|
||||
M680X_INS_BITMD,
|
||||
M680X_INS_BITX, ///< HCS12X
|
||||
M680X_INS_BITY, ///< HCS12X
|
||||
M680X_INS_BLE,
|
||||
M680X_INS_BLS,
|
||||
M680X_INS_BLT,
|
||||
@@ -248,6 +262,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_BRN,
|
||||
M680X_INS_BSET,
|
||||
M680X_INS_BSR,
|
||||
M680X_INS_BTAS, ///< HCS12X
|
||||
M680X_INS_BVC,
|
||||
M680X_INS_BVS,
|
||||
M680X_INS_CALL,
|
||||
@@ -266,6 +281,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_CLRH,
|
||||
M680X_INS_CLRW,
|
||||
M680X_INS_CLRX,
|
||||
M680X_INS_CLRY,
|
||||
M680X_INS_CLV, ///< M6800/1/2/3
|
||||
M680X_INS_CMP,
|
||||
M680X_INS_CMPA,
|
||||
@@ -287,7 +303,12 @@ typedef enum m680x_insn {
|
||||
M680X_INS_COMF,
|
||||
M680X_INS_COMW,
|
||||
M680X_INS_COMX,
|
||||
M680X_INS_COMY,
|
||||
M680X_INS_CPD,
|
||||
M680X_INS_CPED, ///< HCS12X
|
||||
M680X_INS_CPES, ///< HCS12X
|
||||
M680X_INS_CPEX, ///< HCS12X
|
||||
M680X_INS_CPEY, ///< HCS12X
|
||||
M680X_INS_CPHX,
|
||||
M680X_INS_CPS,
|
||||
M680X_INS_CPX, ///< M6800/1/2/3
|
||||
@@ -307,6 +328,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_DECF,
|
||||
M680X_INS_DECW,
|
||||
M680X_INS_DECX,
|
||||
M680X_INS_DECY,
|
||||
M680X_INS_DES, ///< M6800/1/2/3
|
||||
M680X_INS_DEX, ///< M6800/1/2/3
|
||||
M680X_INS_DEY,
|
||||
@@ -328,9 +350,23 @@ typedef enum m680x_insn {
|
||||
M680X_INS_EORB,
|
||||
M680X_INS_EORD,
|
||||
M680X_INS_EORR,
|
||||
M680X_INS_EORX, ///< HCS12X
|
||||
M680X_INS_EORY, ///< HCS12X
|
||||
M680X_INS_ETBL,
|
||||
M680X_INS_EXG,
|
||||
M680X_INS_FDIV,
|
||||
M680X_INS_GLDAA, ///< HCS12X
|
||||
M680X_INS_GLDAB, ///< HCS12X
|
||||
M680X_INS_GLDD, ///< HCS12X
|
||||
M680X_INS_GLDS, ///< HCS12X
|
||||
M680X_INS_GLDX, ///< HCS12X
|
||||
M680X_INS_GLDY, ///< HCS12X
|
||||
M680X_INS_GSTAA, ///< HCS12X
|
||||
M680X_INS_GSTAB, ///< HCS12X
|
||||
M680X_INS_GSTD, ///< HCS12X
|
||||
M680X_INS_GSTS, ///< HCS12X
|
||||
M680X_INS_GSTX, ///< HCS12X
|
||||
M680X_INS_GSTY, ///< HCS12X
|
||||
M680X_INS_IBEQ,
|
||||
M680X_INS_IBNE,
|
||||
M680X_INS_IDIV,
|
||||
@@ -344,6 +380,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_INCF,
|
||||
M680X_INS_INCW,
|
||||
M680X_INS_INCX,
|
||||
M680X_INS_INCY,
|
||||
M680X_INS_INS, ///< M6800/1/2/3
|
||||
M680X_INS_INX, ///< M6800/1/2/3
|
||||
M680X_INS_INY,
|
||||
@@ -397,6 +434,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_LSRD, ///< or ASRD
|
||||
M680X_INS_LSRW,
|
||||
M680X_INS_LSRX,
|
||||
M680X_INS_LSRY,
|
||||
M680X_INS_MAXA,
|
||||
M680X_INS_MAXM,
|
||||
M680X_INS_MEM,
|
||||
@@ -411,7 +449,9 @@ typedef enum m680x_insn {
|
||||
M680X_INS_NEGA,
|
||||
M680X_INS_NEGB,
|
||||
M680X_INS_NEGD,
|
||||
M680X_INS_NEGW, ///< HCS12X
|
||||
M680X_INS_NEGX,
|
||||
M680X_INS_NEGY, ///< HCS12X
|
||||
M680X_INS_NOP,
|
||||
M680X_INS_NSA,
|
||||
M680X_INS_OIM,
|
||||
@@ -422,9 +462,12 @@ typedef enum m680x_insn {
|
||||
M680X_INS_ORCC,
|
||||
M680X_INS_ORD,
|
||||
M680X_INS_ORR,
|
||||
M680X_INS_ORX, ///< HCS12X
|
||||
M680X_INS_ORY, ///< HCS12X
|
||||
M680X_INS_PSHA, ///< M6800/1/2/3
|
||||
M680X_INS_PSHB, ///< M6800/1/2/3
|
||||
M680X_INS_PSHC,
|
||||
M680X_INS_PSHCW, ///< HCS12X
|
||||
M680X_INS_PSHD,
|
||||
M680X_INS_PSHH,
|
||||
M680X_INS_PSHS,
|
||||
@@ -436,6 +479,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_PULA, ///< M6800/1/2/3
|
||||
M680X_INS_PULB, ///< M6800/1/2/3
|
||||
M680X_INS_PULC,
|
||||
M680X_INS_PULCW, ///< HCS12X
|
||||
M680X_INS_PULD,
|
||||
M680X_INS_PULH,
|
||||
M680X_INS_PULS,
|
||||
@@ -452,12 +496,14 @@ typedef enum m680x_insn {
|
||||
M680X_INS_ROLD,
|
||||
M680X_INS_ROLW,
|
||||
M680X_INS_ROLX,
|
||||
M680X_INS_ROLY,
|
||||
M680X_INS_ROR,
|
||||
M680X_INS_RORA,
|
||||
M680X_INS_RORB,
|
||||
M680X_INS_RORD,
|
||||
M680X_INS_RORW,
|
||||
M680X_INS_RORX,
|
||||
M680X_INS_RORY,
|
||||
M680X_INS_RSP,
|
||||
M680X_INS_RTC,
|
||||
M680X_INS_RTI,
|
||||
@@ -468,6 +514,9 @@ typedef enum m680x_insn {
|
||||
M680X_INS_SBCB,
|
||||
M680X_INS_SBCD,
|
||||
M680X_INS_SBCR,
|
||||
M680X_INS_SBED, ///< HCS12X
|
||||
M680X_INS_SBEX, ///< HCS12X
|
||||
M680X_INS_SBEY, ///< HCS12X
|
||||
M680X_INS_SEC,
|
||||
M680X_INS_SEI,
|
||||
M680X_INS_SEV,
|
||||
@@ -500,10 +549,13 @@ typedef enum m680x_insn {
|
||||
M680X_INS_SUBF,
|
||||
M680X_INS_SUBR,
|
||||
M680X_INS_SUBW,
|
||||
M680X_INS_SUBX, ///< HCS12X
|
||||
M680X_INS_SUBY, ///< HCS12X
|
||||
M680X_INS_SWI,
|
||||
M680X_INS_SWI2,
|
||||
M680X_INS_SWI3,
|
||||
M680X_INS_SYNC,
|
||||
M680X_INS_SYS, ///< HCS12X
|
||||
M680X_INS_TAB, ///< M6800/1/2/3
|
||||
M680X_INS_TAP, ///< M6800/1/2/3
|
||||
M680X_INS_TAX,
|
||||
@@ -516,6 +568,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_TFR,
|
||||
M680X_INS_TIM,
|
||||
M680X_INS_TPA, ///< M6800/1/2/3
|
||||
M680X_INS_TRAP,
|
||||
M680X_INS_TST,
|
||||
M680X_INS_TSTA,
|
||||
M680X_INS_TSTB,
|
||||
@@ -524,6 +577,7 @@ typedef enum m680x_insn {
|
||||
M680X_INS_TSTF,
|
||||
M680X_INS_TSTW,
|
||||
M680X_INS_TSTX,
|
||||
M680X_INS_TSTY,
|
||||
M680X_INS_TSX, ///< M6800/1/2/3
|
||||
M680X_INS_TSY,
|
||||
M680X_INS_TXA,
|
||||
|
||||
@@ -95,6 +95,7 @@ static const cs_enum_id_map test_mode_map[] = {
|
||||
{ .str = "CS_MODE_M680X_6811", .val = CS_MODE_M680X_6811 },
|
||||
{ .str = "CS_MODE_M680X_CPU12", .val = CS_MODE_M680X_CPU12 },
|
||||
{ .str = "CS_MODE_M680X_HCS08", .val = CS_MODE_M680X_HCS08 },
|
||||
{ .str = "CS_MODE_M680X_HCS12X", .val = CS_MODE_M680X_HCS12X },
|
||||
{ .str = "CS_MODE_M680X_RS08", .val = CS_MODE_M680X_RS08 },
|
||||
{ .str = "CS_MODE_M68K_000", .val = CS_MODE_M68K_000 },
|
||||
{ .str = "CS_MODE_M68K_010", .val = CS_MODE_M68K_010 },
|
||||
|
||||
@@ -108,6 +108,8 @@ struct platform platforms[] = {
|
||||
{ //item 43
|
||||
CS_ARCH_M680X, (cs_mode)CS_MODE_M680X_HCS08, "M680X_M6808", "hcs08" },
|
||||
{ CS_ARCH_M680X, (cs_mode)CS_MODE_M680X_RS08, "M680X_RS08", "rs08" },
|
||||
{ CS_ARCH_M680X, (cs_mode)CS_MODE_M680X_HCS12X, "M680X_HCS12X",
|
||||
"hcs12x" },
|
||||
{ //item 44
|
||||
CS_ARCH_RISCV, CS_MODE_RISCV32, "RISCV", "riscv32" },
|
||||
{ //item 45
|
||||
|
||||
+130
-1
@@ -3502,4 +3502,133 @@ test_cases:
|
||||
access: CS_AC_WRITE
|
||||
size: 1
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc, a ]
|
||||
regs_read: [ cc, a ]
|
||||
-
|
||||
input:
|
||||
bytes: [ 0x18, 0x92, 0xDD, 0x18, 0xB6, 0x12, 0x34, 0x18, 0x39, 0x18, 0x35, 0x12, 0x18, 0x42, 0x18, 0xA7, 0x18, 0xC0, 0x11, 0x11, 0x18, 0xC2, 0x11, 0x11, 0x18, 0x8A, 0x11, 0x11 ]
|
||||
arch: "m680x"
|
||||
options: [ CS_OPT_DETAIL, CS_MODE_M680X_HCS12X ]
|
||||
address: 0x1000
|
||||
expected:
|
||||
insns:
|
||||
-
|
||||
asm_text: "sbex $dd"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_REGISTER
|
||||
reg: x
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 2
|
||||
-
|
||||
type: M680X_OP_DIRECT
|
||||
direct_addr: 0x00DD
|
||||
direct_addr_set: true
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 2
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc, x ]
|
||||
-
|
||||
asm_text: "gldaa $1234"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_REGISTER
|
||||
reg: a
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 1
|
||||
-
|
||||
type: M680X_OP_EXTENDED
|
||||
ext_address: 0x1234
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 1
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc, a ]
|
||||
regs_write: [ cc,a ]
|
||||
-
|
||||
asm_text: "pshcw"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_REGISTER
|
||||
reg: cc
|
||||
access: CS_AC_READ
|
||||
size: 1
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc ]
|
||||
-
|
||||
asm_text: "btas $12"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_DIRECT
|
||||
direct_addr: 0x0012
|
||||
direct_addr_set: true
|
||||
size: 1
|
||||
-
|
||||
asm_text: "incx"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_REGISTER
|
||||
reg: x
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 2
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc, x ]
|
||||
regs_write: [ cc, x ]
|
||||
-
|
||||
asm_text: "sys"
|
||||
-
|
||||
asm_text: "suby #4369"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_REGISTER
|
||||
reg: y
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 2
|
||||
-
|
||||
type: M680X_OP_IMMEDIATE
|
||||
imm: 0x1111
|
||||
access: CS_AC_READ
|
||||
size: 2
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc, y ]
|
||||
regs_write: [ cc, y ]
|
||||
-
|
||||
asm_text: "sbey $1111"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_REGISTER
|
||||
reg: y
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 2
|
||||
-
|
||||
type: M680X_OP_EXTENDED
|
||||
ext_address: 0x1111
|
||||
access: CS_AC_READ_WRITE
|
||||
size: 2
|
||||
flags: [M680X_FIRST_OP_IN_MNEM]
|
||||
regs_read: [ cc, y ]
|
||||
regs_write: [ cc, y ]
|
||||
-
|
||||
asm_text: "orx #17"
|
||||
details:
|
||||
m680x:
|
||||
operands:
|
||||
-
|
||||
type: M680X_OP_IMMEDIATE
|
||||
imm: 0x11
|
||||
access: CS_AC_READ
|
||||
size: 1
|
||||
regs_read: [ cc ]
|
||||
regs_write: [ cc ]
|
||||
Reference in New Issue
Block a user