mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-07-24 22:13:57 +00:00
Initial Commit
This commit is contained in:
2307
thirdparty/capstone/arch/M680X/M680XDisassembler.c
vendored
Normal file
2307
thirdparty/capstone/arch/M680X/M680XDisassembler.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
17
thirdparty/capstone/arch/M680X/M680XDisassembler.h
vendored
Normal file
17
thirdparty/capstone/arch/M680X/M680XDisassembler.h
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Capstone Disassembly Engine */
|
||||
/* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
|
||||
|
||||
#ifndef CS_M680XDISASSEMBLER_H
|
||||
#define CS_M680XDISASSEMBLER_H
|
||||
|
||||
#include "../../MCInst.h"
|
||||
|
||||
bool M680X_getInstruction(csh ud, const uint8_t *code, size_t code_len,
|
||||
MCInst *instr, uint16_t *size, uint64_t address, void *info);
|
||||
void M680X_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id);
|
||||
void M680X_reg_access(const cs_insn *insn,
|
||||
cs_regs regs_read, uint8_t *regs_read_count,
|
||||
cs_regs regs_write, uint8_t *regs_write_count);
|
||||
|
||||
#endif
|
||||
|
57
thirdparty/capstone/arch/M680X/M680XDisassemblerInternals.h
vendored
Normal file
57
thirdparty/capstone/arch/M680X/M680XDisassemblerInternals.h
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
/* Capstone Disassembly Engine */
|
||||
/* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
|
||||
|
||||
#ifndef CS_M680XDISASSEMBLERINTERNALS_H
|
||||
#define CS_M680XDISASSEMBLERINTERNALS_H
|
||||
|
||||
#include "../../MCInst.h"
|
||||
#include "../../include/capstone/m680x.h"
|
||||
|
||||
typedef enum e_cpu_type {
|
||||
M680X_CPU_TYPE_INVALID,
|
||||
M680X_CPU_TYPE_6301, // M680X Hitachi HD6301,HD6303 mode
|
||||
M680X_CPU_TYPE_6309, // M680X Hitachi HD6309 mode
|
||||
M680X_CPU_TYPE_6800, // M680X Motorola 6800,6802 mode
|
||||
M680X_CPU_TYPE_6801, // M680X Motorola 6801,6803 mode
|
||||
M680X_CPU_TYPE_6805, // M680X Motorola/Freescale M68HC05 mode
|
||||
M680X_CPU_TYPE_6808, // M680X Motorola/Freescale M68HC08 mode
|
||||
M680X_CPU_TYPE_6809, // M680X Motorola 6809 mode
|
||||
M680X_CPU_TYPE_6811, // M680X Motorola/Freescale M68HC11 mode
|
||||
M680X_CPU_TYPE_CPU12, // M680X Motorola/Freescale CPU12 mode
|
||||
// used on M68HC12/HCS12
|
||||
M680X_CPU_TYPE_HCS08, // M680X Freescale HCS08 mode
|
||||
M680X_CPU_TYPE_ENDING,
|
||||
} e_cpu_type;
|
||||
|
||||
struct inst_page1;
|
||||
struct inst_pageX;
|
||||
|
||||
typedef struct {
|
||||
const struct inst_page1 *inst_page1_table;
|
||||
const struct inst_pageX *inst_overlay_table[2];
|
||||
size_t overlay_table_size[2];
|
||||
uint8_t pageX_prefix[3];
|
||||
const struct inst_pageX *inst_pageX_table[3];
|
||||
size_t pageX_table_size[3];
|
||||
const uint8_t *reg_byte_size;
|
||||
const bool *tfr_reg_valid;
|
||||
m680x_insn insn_cc_not_modified[2];
|
||||
} cpu_tables;
|
||||
|
||||
/* Private, For internal use only */
|
||||
typedef struct m680x_info {
|
||||
const uint8_t *code; // code buffer
|
||||
uint32_t size; // byte size of code
|
||||
uint16_t offset; // address offset of first byte in code buffer
|
||||
e_cpu_type cpu_type; // The CPU type to be used for disassembling
|
||||
cs_m680x m680x; // M680X specific properties
|
||||
const cpu_tables *cpu;
|
||||
m680x_insn insn; // Instruction ID
|
||||
uint8_t insn_size; // byte size of instruction
|
||||
} m680x_info;
|
||||
|
||||
extern cs_err M680X_disassembler_init(cs_struct *ud);
|
||||
extern cs_err M680X_instprinter_init(cs_struct *ud);
|
||||
|
||||
#endif
|
||||
|
362
thirdparty/capstone/arch/M680X/M680XInstPrinter.c
vendored
Normal file
362
thirdparty/capstone/arch/M680X/M680XInstPrinter.c
vendored
Normal file
@@ -0,0 +1,362 @@
|
||||
/* Capstone Disassembly Engine */
|
||||
/* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
|
||||
|
||||
#ifdef CAPSTONE_HAS_M680X
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <capstone/platform.h>
|
||||
|
||||
#include "../../cs_priv.h"
|
||||
#include "../../MCInst.h"
|
||||
#include "../../SStream.h"
|
||||
#include "../../MCRegisterInfo.h"
|
||||
#include "../../Mapping.h"
|
||||
#include "../../MCInstPrinter.h"
|
||||
#include "../../utils.h"
|
||||
#include "M680XInstPrinter.h"
|
||||
#include "M680XDisassembler.h"
|
||||
#include "M680XDisassemblerInternals.h"
|
||||
|
||||
#ifndef CAPSTONE_DIET
|
||||
static const char s_reg_names[][10] = {
|
||||
"<invalid>", "a", "b", "e", "f", "0", "d", "w", "cc", "dp", "md",
|
||||
"hx", "h", "x", "y", "s", "u", "v", "q", "pc", "tmp2", "tmp3",
|
||||
};
|
||||
|
||||
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", "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", "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",
|
||||
};
|
||||
|
||||
static const name_map s_group_names[] = {
|
||||
{ M680X_GRP_INVALID, "<invalid>" },
|
||||
{ M680X_GRP_JUMP, "jump" },
|
||||
{ M680X_GRP_CALL, "call" },
|
||||
{ M680X_GRP_RET, "return" },
|
||||
{ M680X_GRP_INT, "interrupt" },
|
||||
{ M680X_GRP_IRET, "interrupt_return" },
|
||||
{ M680X_GRP_PRIV, "privileged" },
|
||||
{ M680X_GRP_BRAREL, "branch_relative" },
|
||||
};
|
||||
#endif
|
||||
|
||||
static void printRegName(cs_struct *handle, SStream *OS, unsigned int reg)
|
||||
{
|
||||
#ifndef CAPSTONE_DIET
|
||||
SStream_concat0(OS, handle->reg_name((csh)handle, reg));
|
||||
#endif
|
||||
}
|
||||
|
||||
static void printInstructionName(cs_struct *handle, SStream *OS,
|
||||
unsigned int insn)
|
||||
{
|
||||
#ifndef CAPSTONE_DIET
|
||||
SStream_concat0(OS, handle->insn_name((csh)handle, insn));
|
||||
#endif
|
||||
}
|
||||
|
||||
static uint32_t get_unsigned(int32_t value, int byte_size)
|
||||
{
|
||||
switch (byte_size) {
|
||||
case 1:
|
||||
return (uint32_t)(value & 0xff);
|
||||
|
||||
case 2:
|
||||
return (uint32_t)(value & 0xffff);
|
||||
|
||||
default:
|
||||
case 4:
|
||||
return (uint32_t)value;
|
||||
}
|
||||
}
|
||||
|
||||
static void printIncDec(bool isPost, SStream *O, m680x_info *info,
|
||||
cs_m680x_op *op)
|
||||
{
|
||||
static const char s_inc_dec[][3] = { "--", "-", "", "+", "++" };
|
||||
|
||||
if (!op->idx.inc_dec)
|
||||
return;
|
||||
|
||||
if ((!isPost && !(op->idx.flags & M680X_IDX_POST_INC_DEC)) ||
|
||||
(isPost && (op->idx.flags & M680X_IDX_POST_INC_DEC))) {
|
||||
const char *prePostfix = "";
|
||||
|
||||
if (info->cpu_type == M680X_CPU_TYPE_CPU12)
|
||||
prePostfix = (op->idx.inc_dec < 0) ? "-" : "+";
|
||||
else if (op->idx.inc_dec >= -2 && (op->idx.inc_dec <= 2)) {
|
||||
prePostfix = (char *)s_inc_dec[op->idx.inc_dec + 2];
|
||||
}
|
||||
|
||||
SStream_concat0(O, prePostfix);
|
||||
}
|
||||
}
|
||||
|
||||
static void printOperand(MCInst *MI, SStream *O, m680x_info *info,
|
||||
cs_m680x_op *op)
|
||||
{
|
||||
switch (op->type) {
|
||||
case M680X_OP_REGISTER:
|
||||
printRegName(MI->csh, O, op->reg);
|
||||
break;
|
||||
|
||||
case M680X_OP_CONSTANT:
|
||||
SStream_concat(O, "%u", op->const_val);
|
||||
break;
|
||||
|
||||
case M680X_OP_IMMEDIATE:
|
||||
if (MI->csh->imm_unsigned)
|
||||
SStream_concat(O, "#%u",
|
||||
get_unsigned(op->imm, op->size));
|
||||
else
|
||||
SStream_concat(O, "#%d", op->imm);
|
||||
|
||||
break;
|
||||
|
||||
case M680X_OP_INDEXED:
|
||||
if (op->idx.flags & M680X_IDX_INDIRECT)
|
||||
SStream_concat0(O, "[");
|
||||
|
||||
if (op->idx.offset_reg != M680X_REG_INVALID)
|
||||
printRegName(MI->csh, O, op->idx.offset_reg);
|
||||
else if (op->idx.offset_bits > 0) {
|
||||
if (op->idx.base_reg == M680X_REG_PC)
|
||||
SStream_concat(O, "$%04x", op->idx.offset_addr);
|
||||
else
|
||||
SStream_concat(O, "%d", op->idx.offset);
|
||||
}
|
||||
else if (op->idx.inc_dec != 0 &&
|
||||
info->cpu_type == M680X_CPU_TYPE_CPU12)
|
||||
SStream_concat(O, "%d", abs(op->idx.inc_dec));
|
||||
|
||||
if (!(op->idx.flags & M680X_IDX_NO_COMMA))
|
||||
SStream_concat(O, ", ");
|
||||
|
||||
printIncDec(false, O, info, op);
|
||||
|
||||
printRegName(MI->csh, O, op->idx.base_reg);
|
||||
|
||||
if (op->idx.base_reg == M680X_REG_PC &&
|
||||
(op->idx.offset_bits > 0))
|
||||
SStream_concat(O, "r");
|
||||
|
||||
printIncDec(true, O, info, op);
|
||||
|
||||
if (op->idx.flags & M680X_IDX_INDIRECT)
|
||||
SStream_concat(O, "]");
|
||||
|
||||
break;
|
||||
|
||||
case M680X_OP_RELATIVE:
|
||||
SStream_concat(O, "$%04x", op->rel.address);
|
||||
break;
|
||||
|
||||
case M680X_OP_DIRECT:
|
||||
SStream_concat(O, "$%02x", op->direct_addr);
|
||||
break;
|
||||
|
||||
case M680X_OP_EXTENDED:
|
||||
if (op->ext.indirect)
|
||||
SStream_concat(O, "[$%04x]", op->ext.address);
|
||||
else {
|
||||
if (op->ext.address < 256) {
|
||||
SStream_concat(O, ">$%04x", op->ext.address);
|
||||
}
|
||||
else {
|
||||
SStream_concat(O, "$%04x", op->ext.address);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
SStream_concat0(O, "<invalid_operand>");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const char *getDelimiter(m680x_info *info, cs_m680x *m680x)
|
||||
{
|
||||
bool indexed = false;
|
||||
int count = 0;
|
||||
int i;
|
||||
|
||||
if (info->insn == M680X_INS_TFM)
|
||||
return ", ";
|
||||
|
||||
if (m680x->op_count > 1) {
|
||||
for (i = 0; i < m680x->op_count; ++i) {
|
||||
if (m680x->operands[i].type == M680X_OP_INDEXED)
|
||||
indexed = true;
|
||||
|
||||
if (m680x->operands[i].type != M680X_OP_REGISTER)
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return (indexed && (count >= 1)) ? "; " : ", ";
|
||||
};
|
||||
|
||||
void M680X_printInst(MCInst *MI, SStream *O, void *PrinterInfo)
|
||||
{
|
||||
m680x_info *info = (m680x_info *)PrinterInfo;
|
||||
cs_m680x *m680x = &info->m680x;
|
||||
cs_detail *detail = MI->flat_insn->detail;
|
||||
int suppress_operands = 0;
|
||||
const char *delimiter = getDelimiter(info, m680x);
|
||||
int i;
|
||||
|
||||
if (detail != NULL)
|
||||
memcpy(&detail->m680x, m680x, sizeof(cs_m680x));
|
||||
|
||||
if (info->insn == M680X_INS_INVLD || info->insn == M680X_INS_ILLGL) {
|
||||
if (m680x->op_count)
|
||||
SStream_concat(O, "fcb $%02x", m680x->operands[0].imm);
|
||||
else
|
||||
SStream_concat0(O, "fcb $<unknown>");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
printInstructionName(MI->csh, O, info->insn);
|
||||
SStream_concat0(O, " ");
|
||||
|
||||
if ((m680x->flags & M680X_FIRST_OP_IN_MNEM) != 0)
|
||||
suppress_operands++;
|
||||
|
||||
if ((m680x->flags & M680X_SECOND_OP_IN_MNEM) != 0)
|
||||
suppress_operands++;
|
||||
|
||||
for (i = 0; i < m680x->op_count; ++i) {
|
||||
if (i >= suppress_operands) {
|
||||
printOperand(MI, O, info, &m680x->operands[i]);
|
||||
|
||||
if ((i + 1) != m680x->op_count)
|
||||
SStream_concat0(O, delimiter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char *M680X_reg_name(csh handle, unsigned int reg)
|
||||
{
|
||||
#ifndef CAPSTONE_DIET
|
||||
|
||||
if (reg >= ARR_SIZE(s_reg_names))
|
||||
return NULL;
|
||||
|
||||
return s_reg_names[(int)reg];
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *M680X_insn_name(csh handle, unsigned int id)
|
||||
{
|
||||
#ifndef CAPSTONE_DIET
|
||||
|
||||
if (id >= ARR_SIZE(s_instruction_names))
|
||||
return NULL;
|
||||
else
|
||||
return s_instruction_names[(int)id];
|
||||
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *M680X_group_name(csh handle, unsigned int id)
|
||||
{
|
||||
#ifndef CAPSTONE_DIET
|
||||
return id2name(s_group_names, ARR_SIZE(s_group_names), id);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
cs_err M680X_instprinter_init(cs_struct *ud)
|
||||
{
|
||||
#ifndef CAPSTONE_DIET
|
||||
|
||||
if (M680X_REG_ENDING != ARR_SIZE(s_reg_names)) {
|
||||
CS_ASSERT(M680X_REG_ENDING == ARR_SIZE(s_reg_names));
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
if (M680X_INS_ENDING != ARR_SIZE(s_instruction_names)) {
|
||||
CS_ASSERT(M680X_INS_ENDING == ARR_SIZE(s_instruction_names));
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
if (M680X_GRP_ENDING != ARR_SIZE(s_group_names)) {
|
||||
CS_ASSERT(M680X_GRP_ENDING == ARR_SIZE(s_group_names));
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return CS_ERR_OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
25
thirdparty/capstone/arch/M680X/M680XInstPrinter.h
vendored
Normal file
25
thirdparty/capstone/arch/M680X/M680XInstPrinter.h
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Capstone Disassembly Engine */
|
||||
/* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
|
||||
|
||||
#ifndef CS_M680XINSTPRINTER_H
|
||||
#define CS_M680XINSTPRINTER_H
|
||||
|
||||
|
||||
#include "capstone/capstone.h"
|
||||
#include "../../MCRegisterInfo.h"
|
||||
#include "../../MCInst.h"
|
||||
|
||||
struct SStream;
|
||||
|
||||
void M680X_init(MCRegisterInfo *MRI);
|
||||
|
||||
void M680X_printInst(MCInst *MI, struct SStream *O, void *Info);
|
||||
const char *M680X_reg_name(csh handle, unsigned int reg);
|
||||
const char *M680X_insn_name(csh handle, unsigned int id);
|
||||
const char *M680X_group_name(csh handle, unsigned int id);
|
||||
void M680X_post_printer(csh handle, cs_insn *flat_insn, char *insn_asm,
|
||||
MCInst *mci);
|
||||
|
||||
#endif
|
||||
|
||||
|
77
thirdparty/capstone/arch/M680X/M680XModule.c
vendored
Normal file
77
thirdparty/capstone/arch/M680X/M680XModule.c
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/* Capstone Disassembly Engine */
|
||||
/* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
|
||||
|
||||
#ifdef CAPSTONE_HAS_M680X
|
||||
|
||||
#include "../../utils.h"
|
||||
#include "../../MCRegisterInfo.h"
|
||||
#include "M680XDisassembler.h"
|
||||
#include "M680XDisassemblerInternals.h"
|
||||
#include "M680XInstPrinter.h"
|
||||
#include "M680XModule.h"
|
||||
|
||||
cs_err M680X_global_init(cs_struct *ud)
|
||||
{
|
||||
m680x_info *info;
|
||||
cs_err errcode;
|
||||
|
||||
/* Do some validation checks */
|
||||
errcode = M680X_disassembler_init(ud);
|
||||
|
||||
if (errcode != CS_ERR_OK)
|
||||
return errcode;
|
||||
|
||||
errcode = M680X_instprinter_init(ud);
|
||||
|
||||
if (errcode != CS_ERR_OK)
|
||||
return errcode;
|
||||
|
||||
// verify if requested mode is valid
|
||||
if (ud->mode & ~(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)) {
|
||||
// At least one mode is not supported by M680X
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
if (!(ud->mode & (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))) {
|
||||
// At least the cpu type has to be selected. No default.
|
||||
return CS_ERR_MODE;
|
||||
}
|
||||
|
||||
info = cs_mem_malloc(sizeof(m680x_info));
|
||||
|
||||
if (!info)
|
||||
return CS_ERR_MEM;
|
||||
|
||||
ud->printer = M680X_printInst;
|
||||
ud->printer_info = info;
|
||||
ud->getinsn_info = NULL;
|
||||
ud->disasm = M680X_getInstruction;
|
||||
ud->reg_name = M680X_reg_name;
|
||||
ud->insn_id = M680X_get_insn_id;
|
||||
ud->insn_name = M680X_insn_name;
|
||||
ud->group_name = M680X_group_name;
|
||||
ud->skipdata_size = 1;
|
||||
ud->post_printer = NULL;
|
||||
#ifndef CAPSTONE_DIET
|
||||
ud->reg_access = M680X_reg_access;
|
||||
#endif
|
||||
|
||||
return CS_ERR_OK;
|
||||
}
|
||||
|
||||
cs_err M680X_option(cs_struct *handle, cs_opt_type type, size_t value)
|
||||
{
|
||||
//TODO
|
||||
return CS_ERR_OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
12
thirdparty/capstone/arch/M680X/M680XModule.h
vendored
Normal file
12
thirdparty/capstone/arch/M680X/M680XModule.h
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/* Capstone Disassembly Engine */
|
||||
/* By Travis Finkenauer <tmfinken@gmail.com>, 2018 */
|
||||
|
||||
#ifndef CS_M680X_MODULE_H
|
||||
#define CS_M680X_MODULE_H
|
||||
|
||||
#include "../../utils.h"
|
||||
|
||||
cs_err M680X_global_init(cs_struct *ud);
|
||||
cs_err M680X_option(cs_struct *handle, cs_opt_type type, size_t value);
|
||||
|
||||
#endif
|
335
thirdparty/capstone/arch/M680X/cpu12.inc
vendored
Normal file
335
thirdparty/capstone/arch/M680X/cpu12.inc
vendored
Normal file
@@ -0,0 +1,335 @@
|
||||
|
||||
// CPU12 instructions on PAGE1
|
||||
static const inst_page1 g_cpu12_inst_page1_table[256] = {
|
||||
// 0x0x
|
||||
{ M680X_INS_BGND, inh_hid, inh_hid },
|
||||
{ M680X_INS_MEM, inh_hid, inh_hid },
|
||||
{ M680X_INS_INY, inh_hid, inh_hid },
|
||||
{ M680X_INS_DEY, inh_hid, inh_hid },
|
||||
{ M680X_INS_DBEQ, loop_hid, inh_hid }, // or DBNE/IBEQ/IBNE/TBEQ/TBNE
|
||||
{ M680X_INS_JMP, idx12_hid, inh_hid },
|
||||
{ M680X_INS_JMP, ext_hid, inh_hid },
|
||||
{ M680X_INS_BSR, rel8_hid, inh_hid },
|
||||
{ M680X_INS_INX, inh_hid, inh_hid },
|
||||
{ M680X_INS_DEX, inh_hid, inh_hid },
|
||||
{ M680X_INS_RTC, inh_hid, inh_hid },
|
||||
{ M680X_INS_RTI, inh_hid, inh_hid },
|
||||
{ M680X_INS_BSET, idx12_hid, imm8_hid },
|
||||
{ M680X_INS_BCLR, idx12_hid, imm8_hid },
|
||||
{ M680X_INS_BRSET, idx12_hid, imm8rel_hid },
|
||||
{ M680X_INS_BRCLR, idx12_hid, imm8rel_hid },
|
||||
// 0x1x
|
||||
{ M680X_INS_ANDCC, imm8_hid, inh_hid },
|
||||
{ M680X_INS_EDIV, inh_hid, inh_hid },
|
||||
{ M680X_INS_MUL, inh_hid, inh_hid },
|
||||
{ M680X_INS_EMUL, inh_hid, inh_hid },
|
||||
{ M680X_INS_ORCC, imm8_hid, inh_hid },
|
||||
{ M680X_INS_JSR, idx12_hid, inh_hid },
|
||||
{ M680X_INS_JSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_JSR, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LEAY, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LEAX, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LEAS, idx12_hid, inh_hid },
|
||||
{ M680X_INS_BSET, ext_hid, imm8_hid },
|
||||
{ M680X_INS_BCLR, ext_hid, imm8_hid },
|
||||
{ M680X_INS_BRSET, ext_hid, imm8rel_hid },
|
||||
{ M680X_INS_BRCLR, ext_hid, imm8rel_hid },
|
||||
// 0x2x, relative branch instructions
|
||||
{ M680X_INS_BRA, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BRN, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BHI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BNE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BEQ, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BVC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BVS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BPL, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BMI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BGE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLT, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BGT, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLE, rel8_hid, inh_hid },
|
||||
// 0x3x
|
||||
{ M680X_INS_PULX, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULY, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULA, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULB, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHX, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHY, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHA, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHB, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULC, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHC, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULD, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHD, inh_hid, inh_hid },
|
||||
{ M680X_INS_WAVR, inh_hid, inh_hid },
|
||||
{ M680X_INS_RTS, inh_hid, inh_hid },
|
||||
{ M680X_INS_WAI, inh_hid, inh_hid },
|
||||
{ M680X_INS_SWI, inh_hid, inh_hid },
|
||||
// 0x4x
|
||||
{ M680X_INS_NEGA, inh_hid, inh_hid },
|
||||
{ M680X_INS_COMA, inh_hid, inh_hid },
|
||||
{ M680X_INS_INCA, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_RORA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRD, inh_hid, inh_hid },
|
||||
{ M680X_INS_CALL, ext_hid, index_hid },
|
||||
{ M680X_INS_CALL, idx12_hid, index_hid },
|
||||
{ M680X_INS_BSET, dir_hid, imm8_hid },
|
||||
{ M680X_INS_BCLR, dir_hid, imm8_hid },
|
||||
{ M680X_INS_BRSET, dir_hid, imm8rel_hid },
|
||||
{ M680X_INS_BRCLR, dir_hid, imm8rel_hid },
|
||||
// 0x5x
|
||||
{ M680X_INS_NEGB, inh_hid, inh_hid },
|
||||
{ M680X_INS_COMB, inh_hid, inh_hid },
|
||||
{ M680X_INS_INCB, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECB, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLB, inh_hid, inh_hid },
|
||||
{ M680X_INS_RORB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASLB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASLD, inh_hid, inh_hid },
|
||||
{ M680X_INS_STAA, dir_hid, inh_hid },
|
||||
{ M680X_INS_STAB, dir_hid, inh_hid },
|
||||
{ M680X_INS_STD, dir_hid, inh_hid },
|
||||
{ M680X_INS_STY, dir_hid, inh_hid },
|
||||
{ M680X_INS_STX, dir_hid, inh_hid },
|
||||
{ M680X_INS_STS, dir_hid, inh_hid },
|
||||
// 0x6x
|
||||
{ M680X_INS_NEG, idx12_hid, inh_hid },
|
||||
{ M680X_INS_COM, idx12_hid, inh_hid },
|
||||
{ M680X_INS_INC, idx12_hid, inh_hid },
|
||||
{ M680X_INS_DEC, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LSR, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ROL, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ROR, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ASR, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ASL, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CLR, idx12_hid, inh_hid },
|
||||
{ M680X_INS_STAA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_STAB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_STD, idx12_hid, inh_hid },
|
||||
{ M680X_INS_STY, idx12_hid, inh_hid },
|
||||
{ M680X_INS_STX, idx12_hid, inh_hid },
|
||||
{ M680X_INS_STS, idx12_hid, inh_hid },
|
||||
// 0x7x
|
||||
{ M680X_INS_NEG, ext_hid, inh_hid },
|
||||
{ M680X_INS_COM, ext_hid, inh_hid },
|
||||
{ M680X_INS_INC, ext_hid, inh_hid },
|
||||
{ M680X_INS_DEC, ext_hid, inh_hid },
|
||||
{ M680X_INS_LSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ROL, ext_hid, inh_hid },
|
||||
{ M680X_INS_ROR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ASR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ASL, ext_hid, inh_hid },
|
||||
{ M680X_INS_CLR, ext_hid, inh_hid },
|
||||
{ M680X_INS_STAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_STAB, ext_hid, inh_hid },
|
||||
{ M680X_INS_STD, ext_hid, inh_hid },
|
||||
{ M680X_INS_STY, ext_hid, inh_hid },
|
||||
{ M680X_INS_STX, ext_hid, inh_hid },
|
||||
{ M680X_INS_STS, ext_hid, inh_hid },
|
||||
// 0x8x
|
||||
{ M680X_INS_SUBA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BITA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CLRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_EORA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CPD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_CPY, imm16_hid, inh_hid },
|
||||
{ M680X_INS_CPX, imm16_hid, inh_hid },
|
||||
{ M680X_INS_CPS, imm16_hid, inh_hid },
|
||||
// 0x9x
|
||||
{ M680X_INS_SUBA, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, dir_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, dir_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_BITA, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, dir_hid, inh_hid },
|
||||
{ M680X_INS_TSTA, inh_hid, inh_hid },
|
||||
{ M680X_INS_EORA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_CPD, dir_hid, inh_hid },
|
||||
{ M680X_INS_CPY, dir_hid, inh_hid },
|
||||
{ M680X_INS_CPX, dir_hid, inh_hid },
|
||||
{ M680X_INS_CPS, dir_hid, inh_hid },
|
||||
// 0xAx
|
||||
{ M680X_INS_SUBA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_BITA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_NOP, inh_hid, inh_hid },
|
||||
{ M680X_INS_EORA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CPD, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CPY, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CPX, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CPS, idx12_hid, inh_hid },
|
||||
// 0xBx
|
||||
{ M680X_INS_SUBA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, ext_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_BITA, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_TFR, rr12_hid, inh_hid }, // or EXG
|
||||
{ M680X_INS_EORA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CPD, ext_hid, inh_hid },
|
||||
{ M680X_INS_CPY, ext_hid, inh_hid },
|
||||
{ M680X_INS_CPX, ext_hid, inh_hid },
|
||||
{ M680X_INS_CPS, ext_hid, inh_hid },
|
||||
// 0xCx
|
||||
{ M680X_INS_SUBB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BITB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CLRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_EORB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_LDY, imm16_hid, inh_hid },
|
||||
{ M680X_INS_LDX, imm16_hid, inh_hid },
|
||||
{ M680X_INS_LDS, imm16_hid, inh_hid },
|
||||
// 0xDx
|
||||
{ M680X_INS_SUBB, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, dir_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_BITB, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, dir_hid, inh_hid },
|
||||
{ M680X_INS_TSTB, inh_hid, inh_hid },
|
||||
{ M680X_INS_EORB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDD, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDY, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDX, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDS, dir_hid, inh_hid },
|
||||
// 0xEx
|
||||
{ M680X_INS_SUBB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_BITB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_TST, idx12_hid, inh_hid },
|
||||
{ M680X_INS_EORB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LDD, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LDY, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LDX, idx12_hid, inh_hid },
|
||||
{ M680X_INS_LDS, idx12_hid, inh_hid },
|
||||
// 0xFx
|
||||
{ M680X_INS_SUBA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, ext_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_BITA, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_TST, ext_hid, inh_hid },
|
||||
{ M680X_INS_EORA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDD, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDY, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDX, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDS, ext_hid, inh_hid },
|
||||
};
|
||||
|
||||
// CPU12 instructions on PAGE2
|
||||
static const inst_pageX g_cpu12_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, imm8_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 },
|
||||
{ 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 },
|
||||
};
|
||||
|
60
thirdparty/capstone/arch/M680X/hcs08.inc
vendored
Normal file
60
thirdparty/capstone/arch/M680X/hcs08.inc
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
|
||||
// Additional instructions only supported on HCS08
|
||||
static const inst_pageX g_hcs08_inst_overlay_table[] = {
|
||||
{ 0x32, M680X_INS_LDHX, ext_hid, inh_hid },
|
||||
{ 0x3e, M680X_INS_CPHX, ext_hid, inh_hid },
|
||||
{ 0x82, M680X_INS_BGND, inh_hid, inh_hid },
|
||||
{ 0x96, M680X_INS_STHX, ext_hid, inh_hid },
|
||||
};
|
||||
|
||||
// HCS08 PAGE2 instructions (prefix 0x9E)
|
||||
static const inst_pageX g_hcs08_inst_page2_table[] = {
|
||||
{ 0x60, M680X_INS_NEG, idxS_hid, inh_hid },
|
||||
{ 0x61, M680X_INS_CBEQ, idxS_hid,rel8_hid },
|
||||
{ 0x63, M680X_INS_COM, idxS_hid, inh_hid },
|
||||
{ 0x64, M680X_INS_LSR, idxS_hid, inh_hid },
|
||||
{ 0x66, M680X_INS_ROR, idxS_hid, inh_hid },
|
||||
{ 0x67, M680X_INS_ASR, idxS_hid, inh_hid },
|
||||
{ 0x68, M680X_INS_LSL, idxS_hid, inh_hid },
|
||||
{ 0x69, M680X_INS_ROL, idxS_hid, inh_hid },
|
||||
{ 0x6a, M680X_INS_DEC, idxS_hid, inh_hid },
|
||||
{ 0x6b, M680X_INS_DBNZ, idxS_hid,rel8_hid },
|
||||
{ 0x6c, M680X_INS_INC, idxS_hid, inh_hid },
|
||||
{ 0x6d, M680X_INS_TST, idxS_hid, inh_hid },
|
||||
{ 0x6f, M680X_INS_CLR, idxS_hid, inh_hid },
|
||||
{ 0xae, M680X_INS_LDHX, idxX0_hid, inh_hid },
|
||||
{ 0xbe, M680X_INS_LDHX, idxX16_hid, inh_hid },
|
||||
{ 0xce, M680X_INS_LDHX, idxX_hid, inh_hid },
|
||||
{ 0xd0, M680X_INS_SUB, idxS16_hid, inh_hid },
|
||||
{ 0xd1, M680X_INS_CMP, idxS16_hid, inh_hid },
|
||||
{ 0xd2, M680X_INS_SBC, idxS16_hid, inh_hid },
|
||||
{ 0xd3, M680X_INS_CPX, idxS16_hid, inh_hid },
|
||||
{ 0xd4, M680X_INS_AND, idxS16_hid, inh_hid },
|
||||
{ 0xd5, M680X_INS_BIT, idxS16_hid, inh_hid },
|
||||
{ 0xd6, M680X_INS_LDA, idxS16_hid, inh_hid },
|
||||
{ 0xd7, M680X_INS_STA, idxS16_hid, inh_hid },
|
||||
{ 0xd8, M680X_INS_EOR, idxS16_hid, inh_hid },
|
||||
{ 0xd9, M680X_INS_ADC, idxS16_hid, inh_hid },
|
||||
{ 0xda, M680X_INS_ORA, idxS16_hid, inh_hid },
|
||||
{ 0xdb, M680X_INS_ADD, idxS16_hid, inh_hid },
|
||||
{ 0xde, M680X_INS_LDX, idxS16_hid, inh_hid },
|
||||
{ 0xdf, M680X_INS_STX, idxS16_hid, inh_hid },
|
||||
{ 0xe0, M680X_INS_SUB, idxS_hid, inh_hid },
|
||||
{ 0xe1, M680X_INS_CMP, idxS_hid, inh_hid },
|
||||
{ 0xe2, M680X_INS_SBC, idxS_hid, inh_hid },
|
||||
{ 0xe3, M680X_INS_CPX, idxS_hid, inh_hid },
|
||||
{ 0xe4, M680X_INS_AND, idxS_hid, inh_hid },
|
||||
{ 0xe5, M680X_INS_BIT, idxS_hid, inh_hid },
|
||||
{ 0xe6, M680X_INS_LDA, idxS_hid, inh_hid },
|
||||
{ 0xe7, M680X_INS_STA, idxS_hid, inh_hid },
|
||||
{ 0xe8, M680X_INS_EOR, idxS_hid, inh_hid },
|
||||
{ 0xe9, M680X_INS_ADC, idxS_hid, inh_hid },
|
||||
{ 0xea, M680X_INS_ORA, idxS_hid, inh_hid },
|
||||
{ 0xeb, M680X_INS_ADD, idxS_hid, inh_hid },
|
||||
{ 0xee, M680X_INS_LDX, idxS_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STX, idxS_hid, inh_hid },
|
||||
{ 0xf3, M680X_INS_CPHX, idxS_hid, inh_hid },
|
||||
{ 0xfe, M680X_INS_LDHX, idxS_hid, inh_hid },
|
||||
{ 0xff, M680X_INS_STHX, idxS_hid, inh_hid },
|
||||
};
|
||||
|
15
thirdparty/capstone/arch/M680X/hd6301.inc
vendored
Normal file
15
thirdparty/capstone/arch/M680X/hd6301.inc
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
// Additional instructions only supported on HD6301/3
|
||||
static const inst_pageX g_hd6301_inst_overlay_table[] = {
|
||||
{ 0x18, M680X_INS_XGDX, inh_hid, inh_hid },
|
||||
{ 0x1a, M680X_INS_SLP, inh_hid, inh_hid },
|
||||
{ 0x61, M680X_INS_AIM, imm8_hid, idxX_hid },
|
||||
{ 0x62, M680X_INS_OIM, imm8_hid, idxX_hid },
|
||||
{ 0x65, M680X_INS_EIM, imm8_hid, idxX_hid },
|
||||
{ 0x6B, M680X_INS_TIM, imm8_hid, idxX_hid },
|
||||
{ 0x71, M680X_INS_AIM, imm8_hid, dir_hid },
|
||||
{ 0x72, M680X_INS_OIM, imm8_hid, dir_hid },
|
||||
{ 0x75, M680X_INS_EIM, imm8_hid, dir_hid },
|
||||
{ 0x7B, M680X_INS_TIM, imm8_hid, dir_hid },
|
||||
};
|
||||
|
259
thirdparty/capstone/arch/M680X/hd6309.inc
vendored
Normal file
259
thirdparty/capstone/arch/M680X/hd6309.inc
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
|
||||
// The following array has to be sorted by increasing
|
||||
// opcodes. Otherwise the binary_search will fail.
|
||||
//
|
||||
// Additional instructions only supported on HD6309 PAGE1
|
||||
static const inst_pageX g_hd6309_inst_overlay_table[] = {
|
||||
{ 0x01, M680X_INS_OIM, imm8_hid, dir_hid },
|
||||
{ 0x02, M680X_INS_AIM, imm8_hid, dir_hid },
|
||||
{ 0x05, M680X_INS_EIM, imm8_hid, dir_hid },
|
||||
{ 0x0B, M680X_INS_TIM, imm8_hid, dir_hid },
|
||||
{ 0x14, M680X_INS_SEXW, inh_hid, inh_hid },
|
||||
{ 0x61, M680X_INS_OIM, imm8_hid, idx09_hid },
|
||||
{ 0x62, M680X_INS_AIM, imm8_hid, idx09_hid },
|
||||
{ 0x65, M680X_INS_EIM, imm8_hid, idx09_hid },
|
||||
{ 0x6B, M680X_INS_TIM, imm8_hid, idx09_hid },
|
||||
{ 0x71, M680X_INS_OIM, imm8_hid, ext_hid },
|
||||
{ 0x72, M680X_INS_AIM, imm8_hid, ext_hid },
|
||||
{ 0x75, M680X_INS_EIM, imm8_hid, ext_hid },
|
||||
{ 0x7B, M680X_INS_TIM, imm8_hid, ext_hid },
|
||||
{ 0xCD, M680X_INS_LDQ, imm32_hid, inh_hid },
|
||||
};
|
||||
|
||||
// The following array has to be sorted by increasing
|
||||
// opcodes. Otherwise the binary_search will fail.
|
||||
//
|
||||
// HD6309 PAGE2 instructions (with prefix 0x10)
|
||||
static const inst_pageX g_hd6309_inst_page2_table[] = {
|
||||
// 0x2x, relative long branch instructions
|
||||
{ 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 },
|
||||
// 0x3x
|
||||
{ 0x30, M680X_INS_ADDR, rr09_hid, inh_hid },
|
||||
{ 0x31, M680X_INS_ADCR, rr09_hid, inh_hid },
|
||||
{ 0x32, M680X_INS_SUBR, rr09_hid, inh_hid },
|
||||
{ 0x33, M680X_INS_SBCR, rr09_hid, inh_hid },
|
||||
{ 0x34, M680X_INS_ANDR, rr09_hid, inh_hid },
|
||||
{ 0x35, M680X_INS_ORR, rr09_hid, inh_hid },
|
||||
{ 0x36, M680X_INS_EORR, rr09_hid, inh_hid },
|
||||
{ 0x37, M680X_INS_CMPR, rr09_hid, inh_hid },
|
||||
{ 0x38, M680X_INS_PSHSW, inh_hid, inh_hid },
|
||||
{ 0x39, M680X_INS_PULSW, inh_hid, inh_hid },
|
||||
{ 0x3a, M680X_INS_PSHUW, inh_hid, inh_hid },
|
||||
{ 0x3b, M680X_INS_PULUW, inh_hid, inh_hid },
|
||||
{ 0x3f, M680X_INS_SWI2, inh_hid, inh_hid },
|
||||
// 0x4x, Register D instructions
|
||||
{ 0x40, M680X_INS_NEGD, inh_hid, inh_hid },
|
||||
{ 0x43, M680X_INS_COMD, inh_hid, inh_hid },
|
||||
{ 0x44, M680X_INS_LSRD, inh_hid, inh_hid },
|
||||
{ 0x46, M680X_INS_RORD, inh_hid, inh_hid },
|
||||
{ 0x47, M680X_INS_ASRD, inh_hid, inh_hid },
|
||||
{ 0x48, M680X_INS_LSLD, inh_hid, inh_hid },
|
||||
{ 0x49, M680X_INS_ROLD, inh_hid, inh_hid },
|
||||
{ 0x4a, M680X_INS_DECD, inh_hid, inh_hid },
|
||||
{ 0x4c, M680X_INS_INCD, inh_hid, inh_hid },
|
||||
{ 0x4d, M680X_INS_TSTD, inh_hid, inh_hid },
|
||||
{ 0x4f, M680X_INS_CLRD, inh_hid, inh_hid },
|
||||
// 0x5x, Register W instructions
|
||||
{ 0x53, M680X_INS_COMW, inh_hid, inh_hid },
|
||||
{ 0x54, M680X_INS_LSRW, inh_hid, inh_hid },
|
||||
{ 0x56, M680X_INS_RORW, inh_hid, inh_hid },
|
||||
{ 0x59, M680X_INS_ROLW, inh_hid, inh_hid },
|
||||
{ 0x5a, M680X_INS_DECW, inh_hid, inh_hid },
|
||||
{ 0x5c, M680X_INS_INCW, inh_hid, inh_hid },
|
||||
{ 0x5d, M680X_INS_TSTW, inh_hid, inh_hid },
|
||||
{ 0x5f, M680X_INS_CLRW, inh_hid, inh_hid },
|
||||
// 0x8x, immediate instructionY with register D,W,Y
|
||||
{ 0x80, M680X_INS_SUBW, imm16_hid, inh_hid },
|
||||
{ 0x81, M680X_INS_CMPW, imm16_hid, inh_hid },
|
||||
{ 0x82, M680X_INS_SBCD, imm16_hid, inh_hid },
|
||||
{ 0x83, M680X_INS_CMPD, imm16_hid, inh_hid },
|
||||
{ 0x84, M680X_INS_ANDD, imm16_hid, inh_hid },
|
||||
{ 0x85, M680X_INS_BITD, imm16_hid, inh_hid },
|
||||
{ 0x86, M680X_INS_LDW, imm16_hid, inh_hid },
|
||||
{ 0x88, M680X_INS_EORD, imm16_hid, inh_hid },
|
||||
{ 0x89, M680X_INS_ADCD, imm16_hid, inh_hid },
|
||||
{ 0x8a, M680X_INS_ORD, imm16_hid, inh_hid },
|
||||
{ 0x8b, M680X_INS_ADDW, imm16_hid, inh_hid },
|
||||
{ 0x8c, M680X_INS_CMPY, imm16_hid, inh_hid },
|
||||
{ 0x8e, M680X_INS_LDY, imm16_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register D,W,Y
|
||||
{ 0x90, M680X_INS_SUBW, dir_hid, inh_hid },
|
||||
{ 0x91, M680X_INS_CMPW, dir_hid, inh_hid },
|
||||
{ 0x92, M680X_INS_SBCD, dir_hid, inh_hid },
|
||||
{ 0x93, M680X_INS_CMPD, dir_hid, inh_hid },
|
||||
{ 0x94, M680X_INS_ANDD, dir_hid, inh_hid },
|
||||
{ 0x95, M680X_INS_BITD, dir_hid, inh_hid },
|
||||
{ 0x96, M680X_INS_LDW, dir_hid, inh_hid },
|
||||
{ 0x97, M680X_INS_STW, dir_hid, inh_hid },
|
||||
{ 0x98, M680X_INS_EORD, dir_hid, inh_hid },
|
||||
{ 0x99, M680X_INS_ADCD, dir_hid, inh_hid },
|
||||
{ 0x9a, M680X_INS_ORD, dir_hid, inh_hid },
|
||||
{ 0x9b, M680X_INS_ADDW, dir_hid, inh_hid },
|
||||
{ 0x9c, M680X_INS_CMPY, dir_hid, inh_hid },
|
||||
{ 0x9e, M680X_INS_LDY, dir_hid, inh_hid },
|
||||
{ 0x9f, M680X_INS_STY, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with register D,W,Y
|
||||
{ 0xa0, M680X_INS_SUBW, idx09_hid, inh_hid },
|
||||
{ 0xa1, M680X_INS_CMPW, idx09_hid, inh_hid },
|
||||
{ 0xa2, M680X_INS_SBCD, idx09_hid, inh_hid },
|
||||
{ 0xa3, M680X_INS_CMPD, idx09_hid, inh_hid },
|
||||
{ 0xa4, M680X_INS_ANDD, idx09_hid, inh_hid },
|
||||
{ 0xa5, M680X_INS_BITD, idx09_hid, inh_hid },
|
||||
{ 0xa6, M680X_INS_LDW, idx09_hid, inh_hid },
|
||||
{ 0xa7, M680X_INS_STW, idx09_hid, inh_hid },
|
||||
{ 0xa8, M680X_INS_EORD, idx09_hid, inh_hid },
|
||||
{ 0xa9, M680X_INS_ADCD, idx09_hid, inh_hid },
|
||||
{ 0xaa, M680X_INS_ORD, idx09_hid, inh_hid },
|
||||
{ 0xab, M680X_INS_ADDW, idx09_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CMPY, idx09_hid, inh_hid },
|
||||
{ 0xae, M680X_INS_LDY, idx09_hid, inh_hid },
|
||||
{ 0xaf, M680X_INS_STY, idx09_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register D,W,Y
|
||||
{ 0xb0, M680X_INS_SUBW, ext_hid, inh_hid },
|
||||
{ 0xb1, M680X_INS_CMPW, ext_hid, inh_hid },
|
||||
{ 0xb2, M680X_INS_SBCD, ext_hid, inh_hid },
|
||||
{ 0xb3, M680X_INS_CMPD, ext_hid, inh_hid },
|
||||
{ 0xb4, M680X_INS_ANDD, ext_hid, inh_hid },
|
||||
{ 0xb5, M680X_INS_BITD, ext_hid, inh_hid },
|
||||
{ 0xb6, M680X_INS_LDW, ext_hid, inh_hid },
|
||||
{ 0xb7, M680X_INS_STW, ext_hid, inh_hid },
|
||||
{ 0xb8, M680X_INS_EORD, ext_hid, inh_hid },
|
||||
{ 0xb9, M680X_INS_ADCD, ext_hid, inh_hid },
|
||||
{ 0xba, M680X_INS_ORD, ext_hid, inh_hid },
|
||||
{ 0xbb, M680X_INS_ADDW, ext_hid, inh_hid },
|
||||
{ 0xbc, M680X_INS_CMPY, ext_hid, inh_hid },
|
||||
{ 0xbe, M680X_INS_LDY, ext_hid, inh_hid },
|
||||
{ 0xbf, M680X_INS_STY, ext_hid, inh_hid },
|
||||
// 0xCx, immediate instructions with register S
|
||||
{ 0xce, M680X_INS_LDS, imm16_hid, inh_hid },
|
||||
// 0xDx, direct instructions with register S,Q
|
||||
{ 0xdc, M680X_INS_LDQ, dir_hid, inh_hid },
|
||||
{ 0xdd, M680X_INS_STQ, dir_hid, inh_hid },
|
||||
{ 0xde, M680X_INS_LDS, dir_hid, inh_hid },
|
||||
{ 0xdf, M680X_INS_STS, dir_hid, inh_hid },
|
||||
// 0xEx, indexed instructions with register S,Q
|
||||
{ 0xec, M680X_INS_LDQ, idx09_hid, inh_hid },
|
||||
{ 0xed, M680X_INS_STQ, idx09_hid, inh_hid },
|
||||
{ 0xee, M680X_INS_LDS, idx09_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STS, idx09_hid, inh_hid },
|
||||
// 0xFx, extended instructions with register S,Q
|
||||
{ 0xfc, M680X_INS_LDQ, ext_hid, inh_hid },
|
||||
{ 0xfd, M680X_INS_STQ, ext_hid, inh_hid },
|
||||
{ 0xfe, M680X_INS_LDS, ext_hid, inh_hid },
|
||||
{ 0xff, M680X_INS_STS, ext_hid, inh_hid },
|
||||
};
|
||||
|
||||
// The following array has to be sorted by increasing
|
||||
// opcodes. Otherwise the binary_search will fail.
|
||||
//
|
||||
// HD6309 PAGE3 instructions (with prefix 0x11)
|
||||
static const inst_pageX g_hd6309_inst_page3_table[] = {
|
||||
{ 0x30, M680X_INS_BAND, bitmv_hid, inh_hid },
|
||||
{ 0x31, M680X_INS_BIAND, bitmv_hid, inh_hid },
|
||||
{ 0x32, M680X_INS_BOR, bitmv_hid, inh_hid },
|
||||
{ 0x33, M680X_INS_BIOR, bitmv_hid, inh_hid },
|
||||
{ 0x34, M680X_INS_BEOR, bitmv_hid, inh_hid },
|
||||
{ 0x35, M680X_INS_BIEOR, bitmv_hid, inh_hid },
|
||||
{ 0x36, M680X_INS_LDBT, bitmv_hid, inh_hid },
|
||||
{ 0x37, M680X_INS_STBT, bitmv_hid, inh_hid },
|
||||
{ 0x38, M680X_INS_TFM, tfm_hid, inh_hid },
|
||||
{ 0x39, M680X_INS_TFM, tfm_hid, inh_hid },
|
||||
{ 0x3a, M680X_INS_TFM, tfm_hid, inh_hid },
|
||||
{ 0x3b, M680X_INS_TFM, tfm_hid, inh_hid },
|
||||
{ 0x3c, M680X_INS_BITMD, imm8_hid, inh_hid },
|
||||
{ 0x3d, M680X_INS_LDMD, imm8_hid, inh_hid },
|
||||
{ 0x3f, M680X_INS_SWI3, inh_hid, inh_hid },
|
||||
// 0x4x, Register E instructions
|
||||
{ 0x43, M680X_INS_COME, inh_hid, inh_hid },
|
||||
{ 0x4a, M680X_INS_DECE, inh_hid, inh_hid },
|
||||
{ 0x4c, M680X_INS_INCE, inh_hid, inh_hid },
|
||||
{ 0x4d, M680X_INS_TSTE, inh_hid, inh_hid },
|
||||
{ 0x4f, M680X_INS_CLRE, inh_hid, inh_hid },
|
||||
// 0x5x, Register F instructions
|
||||
{ 0x53, M680X_INS_COMF, inh_hid, inh_hid },
|
||||
{ 0x5a, M680X_INS_DECF, inh_hid, inh_hid },
|
||||
{ 0x5c, M680X_INS_INCF, inh_hid, inh_hid },
|
||||
{ 0x5d, M680X_INS_TSTF, inh_hid, inh_hid },
|
||||
{ 0x5f, M680X_INS_CLRF, inh_hid, inh_hid },
|
||||
// 0x8x, immediate instructions with register U,S,E
|
||||
{ 0x80, M680X_INS_SUBE, imm8_hid, inh_hid },
|
||||
{ 0x81, M680X_INS_CMPE, imm8_hid, inh_hid },
|
||||
{ 0x83, M680X_INS_CMPU, imm16_hid, inh_hid },
|
||||
{ 0x86, M680X_INS_LDE, imm8_hid, inh_hid },
|
||||
{ 0x8b, M680X_INS_ADDE, imm8_hid, inh_hid },
|
||||
{ 0x8c, M680X_INS_CMPS, imm16_hid, inh_hid },
|
||||
{ 0x8d, M680X_INS_DIVD, imm8_hid, inh_hid },
|
||||
{ 0x8e, M680X_INS_DIVQ, imm16_hid, inh_hid },
|
||||
{ 0x8f, M680X_INS_MULD, imm16_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register U,S,E,Q
|
||||
{ 0x90, M680X_INS_SUBE, dir_hid, inh_hid },
|
||||
{ 0x91, M680X_INS_CMPE, dir_hid, inh_hid },
|
||||
{ 0x93, M680X_INS_CMPU, dir_hid, inh_hid },
|
||||
{ 0x96, M680X_INS_LDE, dir_hid, inh_hid },
|
||||
{ 0x97, M680X_INS_STE, dir_hid, inh_hid },
|
||||
{ 0x9b, M680X_INS_ADDE, dir_hid, inh_hid },
|
||||
{ 0x9c, M680X_INS_CMPS, dir_hid, inh_hid },
|
||||
{ 0x9d, M680X_INS_DIVD, dir_hid, inh_hid },
|
||||
{ 0x9e, M680X_INS_DIVQ, dir_hid, inh_hid },
|
||||
{ 0x9f, M680X_INS_MULD, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with register U,S,D,Q
|
||||
{ 0xa0, M680X_INS_SUBE, idx09_hid, inh_hid },
|
||||
{ 0xa1, M680X_INS_CMPE, idx09_hid, inh_hid },
|
||||
{ 0xa3, M680X_INS_CMPU, idx09_hid, inh_hid },
|
||||
{ 0xa6, M680X_INS_LDE, idx09_hid, inh_hid },
|
||||
{ 0xa7, M680X_INS_STE, idx09_hid, inh_hid },
|
||||
{ 0xab, M680X_INS_ADDE, idx09_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CMPS, idx09_hid, inh_hid },
|
||||
{ 0xad, M680X_INS_DIVD, idx09_hid, inh_hid },
|
||||
{ 0xae, M680X_INS_DIVQ, idx09_hid, inh_hid },
|
||||
{ 0xaf, M680X_INS_MULD, idx09_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register U,S,D,Q
|
||||
{ 0xb0, M680X_INS_SUBE, ext_hid, inh_hid },
|
||||
{ 0xb1, M680X_INS_CMPE, ext_hid, inh_hid },
|
||||
{ 0xb3, M680X_INS_CMPU, ext_hid, inh_hid },
|
||||
{ 0xb6, M680X_INS_LDE, ext_hid, inh_hid },
|
||||
{ 0xb7, M680X_INS_STE, ext_hid, inh_hid },
|
||||
{ 0xbb, M680X_INS_ADDE, ext_hid, inh_hid },
|
||||
{ 0xbc, M680X_INS_CMPS, ext_hid, inh_hid },
|
||||
{ 0xbd, M680X_INS_DIVD, ext_hid, inh_hid },
|
||||
{ 0xbe, M680X_INS_DIVQ, ext_hid, inh_hid },
|
||||
{ 0xbf, M680X_INS_MULD, ext_hid, inh_hid },
|
||||
// 0xCx, immediate instructions with register F
|
||||
{ 0xc0, M680X_INS_SUBF, imm8_hid, inh_hid },
|
||||
{ 0xc1, M680X_INS_CMPF, imm8_hid, inh_hid },
|
||||
{ 0xc6, M680X_INS_LDF, imm8_hid, inh_hid },
|
||||
{ 0xcb, M680X_INS_ADDF, imm8_hid, inh_hid },
|
||||
// 0xDx, direct instructions with register F
|
||||
{ 0xd0, M680X_INS_SUBF, dir_hid, inh_hid },
|
||||
{ 0xd1, M680X_INS_CMPF, dir_hid, inh_hid },
|
||||
{ 0xd6, M680X_INS_LDF, dir_hid, inh_hid },
|
||||
{ 0xd7, M680X_INS_STF, dir_hid, inh_hid },
|
||||
{ 0xdb, M680X_INS_ADDF, dir_hid, inh_hid },
|
||||
// 0xEx, indexed instructions with register F
|
||||
{ 0xe0, M680X_INS_SUBF, idx09_hid, inh_hid },
|
||||
{ 0xe1, M680X_INS_CMPF, idx09_hid, inh_hid },
|
||||
{ 0xe6, M680X_INS_LDF, idx09_hid, inh_hid },
|
||||
{ 0xe7, M680X_INS_STF, idx09_hid, inh_hid },
|
||||
{ 0xeb, M680X_INS_ADDF, idx09_hid, inh_hid },
|
||||
// 0xFx, extended instructions with register F
|
||||
{ 0xf0, M680X_INS_SUBF, ext_hid, inh_hid },
|
||||
{ 0xf1, M680X_INS_CMPF, ext_hid, inh_hid },
|
||||
{ 0xf6, M680X_INS_LDF, ext_hid, inh_hid },
|
||||
{ 0xf7, M680X_INS_STF, ext_hid, inh_hid },
|
||||
{ 0xfb, M680X_INS_ADDF, ext_hid, inh_hid },
|
||||
};
|
||||
|
367
thirdparty/capstone/arch/M680X/insn_props.inc
vendored
Normal file
367
thirdparty/capstone/arch/M680X/insn_props.inc
vendored
Normal file
@@ -0,0 +1,367 @@
|
||||
|
||||
// These temporary defines keep the following table short and handy.
|
||||
#define NOG M680X_GRP_INVALID
|
||||
#define NOR M680X_REG_INVALID
|
||||
|
||||
static const insn_props g_insn_props[] = {
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // INVLD
|
||||
{ NOG, rmmm, M680X_REG_B, M680X_REG_A, true, false }, // ABA
|
||||
{ NOG, rmmm, M680X_REG_B, M680X_REG_X, false, false }, // ABX
|
||||
{ NOG, rmmm, M680X_REG_B, M680X_REG_Y, false, false }, // ABY
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ADC
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ADCA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ADCB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ADCD
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ADCR
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ADD
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ADDA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ADDB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ADDD
|
||||
{ NOG, mrrr, M680X_REG_E, NOR, true, false }, // ADDE
|
||||
{ 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, 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_CC, NOR, true, false }, // ANDCC
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // ANDD
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // ANDR
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // ASL
|
||||
{ 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, 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_X, NOR, true, false }, // ASRX
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BAND
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BCC
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // BCLR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BCS
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BEOR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BEQ
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BGE
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // BGND
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BGT
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BHCC
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BHCS
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BHI
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BIAND
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BIEOR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BIH
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BIL
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BIOR
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // BIT
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // BITA
|
||||
{ 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
|
||||
{ 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
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BMC
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BMI
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BMS
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BNE
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // BOR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BPL
|
||||
{ M680X_GRP_JUMP, rruu, NOR, NOR, false, false }, // BRCLR
|
||||
{ M680X_GRP_JUMP, rruu, NOR, NOR, false, false }, // BRSET
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BRA
|
||||
{ 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, false }, // BVC
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // BVS
|
||||
{ M680X_GRP_CALL, uuuu, NOR, NOR, false, true }, // CALL
|
||||
{ NOG, rrrr, M680X_REG_B, M680X_REG_A, true, false }, // CBA
|
||||
{ M680X_GRP_JUMP, rruu, M680X_REG_A, NOR, false, false }, // CBEQ
|
||||
{ M680X_GRP_JUMP, rruu, M680X_REG_A, NOR, false, false }, // CBEQA
|
||||
{ M680X_GRP_JUMP, rruu, M680X_REG_X, NOR, false, false }, // CBEQX
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // CLC
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // CLI
|
||||
{ NOG, wrrr, NOR, NOR, true, false }, // CLR
|
||||
{ NOG, wrrr, M680X_REG_A, NOR, true, false }, // CLRA
|
||||
{ NOG, wrrr, M680X_REG_B, NOR, true, false }, // CLRB
|
||||
{ NOG, wrrr, M680X_REG_D, NOR, true, false }, // CLRD
|
||||
{ NOG, wrrr, M680X_REG_E, NOR, true, false }, // CLRE
|
||||
{ NOG, wrrr, M680X_REG_F, NOR, true, false }, // CLRF
|
||||
{ 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, uuuu, NOR, NOR, true, false }, // CLV
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // CMP
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // CMPA
|
||||
{ NOG, rrrr, M680X_REG_B, NOR, true, false }, // CMPB
|
||||
{ NOG, rrrr, M680X_REG_D, NOR, true, false }, // CMPD
|
||||
{ NOG, rrrr, M680X_REG_E, NOR, true, false }, // CMPE
|
||||
{ NOG, rrrr, M680X_REG_F, NOR, true, false }, // CMPF
|
||||
{ NOG, rrrr, NOR, NOR, true, false }, // CMPR
|
||||
{ NOG, rrrr, M680X_REG_S, NOR, true, false }, // CMPS
|
||||
{ NOG, rrrr, M680X_REG_U, NOR, true, false }, // CMPU
|
||||
{ NOG, rrrr, M680X_REG_W, NOR, true, false }, // CMPW
|
||||
{ NOG, rrrr, M680X_REG_X, NOR, true, false }, // CMPX
|
||||
{ NOG, rrrr, M680X_REG_Y, NOR, true, false }, // CMPY
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // COM
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // COMA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // COMB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // COMD
|
||||
{ NOG, mrrr, M680X_REG_E, NOR, true, false }, // COME
|
||||
{ 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, rrrr, M680X_REG_D, NOR, true, false }, // CPD
|
||||
{ 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
|
||||
{ NOG, rrrr, M680X_REG_Y, NOR, true, false }, // CPY
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // CWAI
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // DAA
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // DBEQ
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // DBNE
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // DBNZ
|
||||
{ M680X_GRP_JUMP, muuu, M680X_REG_A, NOR, false, false }, // DBNZA
|
||||
{ M680X_GRP_JUMP, muuu, M680X_REG_X, NOR, false, false }, // DBNZX
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // DEC
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // DECA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // DECB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // DECD
|
||||
{ NOG, mrrr, M680X_REG_E, NOR, true, false }, // DECE
|
||||
{ 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_S, NOR, false, false }, // DES
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // DEX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // DEY
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // DIV
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // DIVD
|
||||
{ NOG, mrrr, M680X_REG_Q, NOR, true, false }, // DIVQ
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // EDIV
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // EDIVS
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // EIM
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // EMACS
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // EMAXD
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // EMAXM
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // EMIND
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // EMINM
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // EMUL
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // EMULS
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // EOR
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // EORA
|
||||
{ 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, rmmm, NOR, NOR, true, true }, // ETBL
|
||||
{ NOG, mmmm, NOR, NOR, false, false }, // EXG
|
||||
{ NOG, mmmm, NOR, NOR, true, true }, // FDIV
|
||||
{ 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
|
||||
{ NOG, mmmm, NOR, NOR, true, true }, // IDIVS
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // ILLGL
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // INC
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // INCA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // INCB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // INCD
|
||||
{ NOG, mrrr, M680X_REG_E, NOR, true, false }, // INCE
|
||||
{ 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_S, NOR, false, false }, // INS
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // INX
|
||||
{ NOG, mrrr, M680X_REG_Y, NOR, true, false }, // INY
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // JMP
|
||||
{ M680X_GRP_CALL, uuuu, NOR, NOR, false, true }, // JSR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBCC
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBCS
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBEQ
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBGE
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBGT
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBHI
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBLE
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBLS
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBLT
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBMI
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBNE
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBPL
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBRA
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBRN never branches
|
||||
{ M680X_GRP_CALL, uuuu, NOR, NOR, false, true }, // LBSR
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBVC
|
||||
{ M680X_GRP_JUMP, uuuu, NOR, NOR, false, false }, // LBVS
|
||||
{ NOG, wrrr, M680X_REG_A, NOR, true, false }, // LDA
|
||||
{ NOG, wrrr, M680X_REG_A, NOR, true, false }, // LDAA
|
||||
{ NOG, wrrr, M680X_REG_B, NOR, true, false }, // LDAB
|
||||
{ NOG, wrrr, M680X_REG_B, NOR, true, false }, // LDB
|
||||
{ NOG, mrrr, NOR, NOR, false, false }, // LDBT
|
||||
{ NOG, wrrr, M680X_REG_D, NOR, true, false }, // LDD
|
||||
{ NOG, wrrr, M680X_REG_E, NOR, true, false }, // LDE
|
||||
{ NOG, wrrr, M680X_REG_F, NOR, true, false }, // LDF
|
||||
{ NOG, wrrr, M680X_REG_HX, NOR, true, false }, // LDHX
|
||||
{ NOG, mrrr, M680X_REG_MD, NOR, false, false }, // LDMD
|
||||
{ NOG, wrrr, M680X_REG_Q, NOR, true, false }, // LDQ
|
||||
{ NOG, wrrr, M680X_REG_S, NOR, true, false }, // LDS
|
||||
{ NOG, wrrr, M680X_REG_U, NOR, true, false }, // LDU
|
||||
{ NOG, wrrr, M680X_REG_W, NOR, true, false }, // LDW
|
||||
{ NOG, wrrr, M680X_REG_X, NOR, true, false }, // LDX
|
||||
{ NOG, wrrr, M680X_REG_Y, NOR, true, false }, // LDY
|
||||
{ NOG, wrrr, M680X_REG_S, NOR, false, false }, // LEAS
|
||||
{ NOG, wrrr, M680X_REG_U, NOR, false, false }, // LEAU
|
||||
{ NOG, wrrr, M680X_REG_X, NOR, false, false }, // LEAX
|
||||
{ NOG, wrrr, M680X_REG_Y, NOR, false, false }, // LEAY
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // LSL
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // LSLA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // LSLB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // LSLD
|
||||
{ NOG, mrrr, M680X_REG_X, NOR, true, false }, // LSLX
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // LSR
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // LSRA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // LSRB
|
||||
{ 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_A, NOR, true, false }, // MAXA
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // MAXM
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // MEM
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // MINA
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // MINM
|
||||
{ NOG, rwww, NOR, NOR, true, false }, // MOV
|
||||
{ NOG, rwww, NOR, NOR, false, false }, // MOVB
|
||||
{ NOG, rwww, NOR, NOR, false, false }, // MOVW
|
||||
{ NOG, mmmm, NOR, NOR, true, true }, // MUL
|
||||
{ NOG, mwrr, M680X_REG_D, NOR, true, true }, // MULD
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // NEG
|
||||
{ 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_X, NOR, true, false }, // NEGX
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // NOP
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // NSA
|
||||
{ NOG, rmmm, NOR, NOR, true, false }, // OIM
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ORA
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ORAA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ORAB
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ORB
|
||||
{ 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, 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_D, NOR, false, true }, // PSHD
|
||||
{ NOG, rmmm, M680X_REG_H, NOR, false, true }, // PSHH
|
||||
{ NOG, mrrr, M680X_REG_S, NOR, false, false }, // PSHS
|
||||
{ NOG, mrrr, M680X_REG_S, M680X_REG_W, false, false }, // PSHSW
|
||||
{ NOG, mrrr, M680X_REG_U, NOR, false, false }, // PSHU
|
||||
{ NOG, mrrr, M680X_REG_U, M680X_REG_W, false, false }, // PSHUW
|
||||
{ NOG, rmmm, M680X_REG_X, NOR, false, true }, // PSHX
|
||||
{ NOG, rmmm, M680X_REG_Y, NOR, false, true }, // PSHY
|
||||
{ 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_D, NOR, false, true }, // PULD
|
||||
{ NOG, wmmm, M680X_REG_H, NOR, false, true }, // PULH
|
||||
{ NOG, mwww, M680X_REG_S, NOR, false, false }, // PULS
|
||||
{ NOG, mwww, M680X_REG_S, M680X_REG_W, false, false }, // PULSW
|
||||
{ NOG, mwww, M680X_REG_U, NOR, false, false }, // PULU
|
||||
{ NOG, mwww, M680X_REG_U, M680X_REG_W, false, false }, // PULUW
|
||||
{ NOG, wmmm, M680X_REG_X, NOR, false, true }, // PULX
|
||||
{ NOG, wmmm, M680X_REG_Y, NOR, false, true }, // PULY
|
||||
{ NOG, mmrr, NOR, NOR, true, true }, // REV
|
||||
{ NOG, mmmm, NOR, NOR, true, true }, // REVW
|
||||
{ NOG, mrrr, NOR, NOR, true, false }, // ROL
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // ROLA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // ROLB
|
||||
{ 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, 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, 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
|
||||
{ M680X_GRP_RET, mwww, NOR, NOR, false, true }, // RTS
|
||||
{ NOG, rmmm, M680X_REG_B, M680X_REG_A, true, false }, // SBA
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // SBC
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // SBCA
|
||||
{ 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, uuuu, NOR, NOR, true, false }, // SEC
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // SEI
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // SEV
|
||||
{ NOG, wrrr, NOR, NOR, true, true }, // SEX
|
||||
{ NOG, rwww, M680X_REG_W, NOR, true, true }, // SEXW
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // SLP
|
||||
{ NOG, rwww, M680X_REG_A, NOR, true, false }, // STA
|
||||
{ NOG, rwww, M680X_REG_A, NOR, true, false }, // STAA
|
||||
{ NOG, rwww, M680X_REG_B, NOR, true, false }, // STAB
|
||||
{ NOG, rwww, M680X_REG_B, NOR, true, false }, // STB
|
||||
{ NOG, rrrm, NOR, NOR, false, false }, // STBT
|
||||
{ NOG, rwww, M680X_REG_D, NOR, true, false }, // STD
|
||||
{ NOG, rwww, M680X_REG_E, NOR, true, false }, // STE
|
||||
{ NOG, rwww, M680X_REG_F, NOR, true, false }, // STF
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // STOP
|
||||
{ NOG, rwww, M680X_REG_HX, NOR, true, false }, // STHX
|
||||
{ NOG, rwww, M680X_REG_Q, NOR, true, false }, // STQ
|
||||
{ NOG, rwww, M680X_REG_S, NOR, true, false }, // STS
|
||||
{ NOG, rwww, M680X_REG_U, NOR, true, false }, // STU
|
||||
{ NOG, rwww, M680X_REG_W, NOR, true, false }, // STW
|
||||
{ NOG, rwww, M680X_REG_X, NOR, true, false }, // STX
|
||||
{ NOG, rwww, M680X_REG_Y, NOR, true, false }, // STY
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // SUB
|
||||
{ NOG, mrrr, M680X_REG_A, NOR, true, false }, // SUBA
|
||||
{ NOG, mrrr, M680X_REG_B, NOR, true, false }, // SUBB
|
||||
{ NOG, mrrr, M680X_REG_D, NOR, true, false }, // SUBD
|
||||
{ NOG, mrrr, M680X_REG_E, NOR, true, false }, // SUBE
|
||||
{ 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
|
||||
{ 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, 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
|
||||
{ NOG, rwww, M680X_REG_B, M680X_REG_A, true, false }, // TBA
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // TBEQ
|
||||
{ NOG, rmmm, NOR, NOR, true, true }, // TBL
|
||||
{ M680X_GRP_JUMP, muuu, NOR, NOR, false, false }, // TBNE
|
||||
{ NOG, uuuu, NOR, NOR, false, false }, // TEST
|
||||
{ NOG, rwww, NOR, NOR, false, false }, // TFM
|
||||
{ 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, rrrr, NOR, NOR, true, false }, // TST
|
||||
{ NOG, rrrr, M680X_REG_A, NOR, true, false }, // TSTA
|
||||
{ NOG, rrrr, M680X_REG_B, NOR, true, false }, // TSTB
|
||||
{ NOG, rrrr, M680X_REG_D, NOR, true, false }, // TSTD
|
||||
{ NOG, rrrr, M680X_REG_E, NOR, true, false }, // TSTE
|
||||
{ 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, 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
|
||||
{ NOG, rwww, M680X_REG_HX, M680X_REG_S, false, false }, // TXS
|
||||
{ NOG, rwww, M680X_REG_Y, M680X_REG_S, false, false }, // TYS
|
||||
{ NOG, mrrr, NOR, NOR, true, true }, // WAI
|
||||
{ NOG, uuuu, NOR, NOR, true, false }, // WAIT
|
||||
{ NOG, uuuu, NOR, NOR, true, true }, // WAV
|
||||
{ NOG, uuuu, NOR, NOR, true, true }, // WAVR
|
||||
{ NOG, mmmm, M680X_REG_D, M680X_REG_X, false, false }, // XGDX
|
||||
{ NOG, mmmm, M680X_REG_D, M680X_REG_Y, false, false }, // XGDY
|
||||
};
|
||||
#undef NOR
|
||||
#undef NOG
|
||||
|
277
thirdparty/capstone/arch/M680X/m6800.inc
vendored
Normal file
277
thirdparty/capstone/arch/M680X/m6800.inc
vendored
Normal file
@@ -0,0 +1,277 @@
|
||||
|
||||
// M6800/2 instructions
|
||||
static const inst_page1 g_m6800_inst_page1_table[256] = {
|
||||
// 0x0x, inherent instructions
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_NOP, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_TAP, inh_hid, inh_hid },
|
||||
{ M680X_INS_TPA, inh_hid, inh_hid },
|
||||
{ M680X_INS_INX, inh_hid, inh_hid },
|
||||
{ M680X_INS_DEX, inh_hid, inh_hid },
|
||||
{ M680X_INS_CLV, inh_hid, inh_hid },
|
||||
{ M680X_INS_SEV, inh_hid, inh_hid },
|
||||
{ M680X_INS_CLC, inh_hid, inh_hid },
|
||||
{ M680X_INS_SEC, inh_hid, inh_hid },
|
||||
{ M680X_INS_CLI, inh_hid, inh_hid },
|
||||
{ M680X_INS_SEI, inh_hid, inh_hid },
|
||||
// 0x1x, inherent instructions
|
||||
{ M680X_INS_SBA, inh_hid, inh_hid },
|
||||
{ M680X_INS_CBA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_TAB, inh_hid, inh_hid },
|
||||
{ M680X_INS_TBA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_DAA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ABA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
// 0x2x, relative branch instructions
|
||||
{ M680X_INS_BRA, rel8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_BHI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BNE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BEQ, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BVC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BVS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BPL, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BMI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BGE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLT, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BGT, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLE, rel8_hid, inh_hid },
|
||||
// 0x3x, inherent instructions
|
||||
{ M680X_INS_TSX, inh_hid, inh_hid },
|
||||
{ M680X_INS_INS, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULA, inh_hid, inh_hid },
|
||||
{ M680X_INS_PULB, inh_hid, inh_hid },
|
||||
{ M680X_INS_DES, inh_hid, inh_hid },
|
||||
{ M680X_INS_TXS, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHA, inh_hid, inh_hid },
|
||||
{ M680X_INS_PSHB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RTS, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RTI, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_WAI, inh_hid, inh_hid },
|
||||
{ M680X_INS_SWI, inh_hid, inh_hid },
|
||||
// 0x4x, Register A instructions
|
||||
{ M680X_INS_NEGA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COMA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RORA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INCA, inh_hid, inh_hid },
|
||||
{ M680X_INS_TSTA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLRA, inh_hid, inh_hid },
|
||||
// 0x5x, Register B instructions
|
||||
{ M680X_INS_NEGB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COMB, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RORB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASLB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLB, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INCB, inh_hid, inh_hid },
|
||||
{ M680X_INS_TSTB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLRB, inh_hid, inh_hid },
|
||||
// 0x6x, indexed instructions
|
||||
{ M680X_INS_NEG, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LSR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ASR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ASL, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ROL, idxX_hid, inh_hid },
|
||||
{ M680X_INS_DEC, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, idxX_hid, inh_hid },
|
||||
{ M680X_INS_TST, idxX_hid, inh_hid },
|
||||
{ M680X_INS_JMP, idxX_hid, inh_hid },
|
||||
{ M680X_INS_CLR, idxX_hid, inh_hid },
|
||||
// 0x7x, extended instructions
|
||||
{ M680X_INS_NEG, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, ext_hid, inh_hid },
|
||||
{ M680X_INS_LSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ASR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ASL, ext_hid, inh_hid },
|
||||
{ M680X_INS_ROL, ext_hid, inh_hid },
|
||||
{ M680X_INS_DEC, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, ext_hid, inh_hid },
|
||||
{ M680X_INS_TST, ext_hid, inh_hid },
|
||||
{ M680X_INS_JMP, ext_hid, inh_hid },
|
||||
{ M680X_INS_CLR, ext_hid, inh_hid },
|
||||
// 0x8x, immediate instructions with Register A,X,S
|
||||
{ M680X_INS_SUBA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BITA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_EORA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CPX, imm16_hid, inh_hid },
|
||||
{ M680X_INS_BSR, rel8_hid, inh_hid },
|
||||
{ M680X_INS_LDS, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register A,X,S
|
||||
{ M680X_INS_SUBA, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_BITA, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, dir_hid, inh_hid },
|
||||
{ M680X_INS_STAA, dir_hid, inh_hid },
|
||||
{ M680X_INS_EORA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_CPX, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LDS, dir_hid, inh_hid },
|
||||
{ M680X_INS_STS, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with Register A,X
|
||||
{ M680X_INS_SUBA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_BITA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_STAA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_EORA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_CPX, idxX_hid, inh_hid },
|
||||
{ M680X_INS_JSR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LDS, idxX_hid, inh_hid },
|
||||
{ M680X_INS_STS, idxX_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register A,X,S
|
||||
{ M680X_INS_SUBA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_BITA, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_STAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_EORA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORAA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CPX, ext_hid, inh_hid },
|
||||
{ M680X_INS_JSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDS, ext_hid, inh_hid },
|
||||
{ M680X_INS_STS, ext_hid, inh_hid },
|
||||
// 0xCx, immediate instructions with register B,X
|
||||
{ M680X_INS_SUBB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BITB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_EORB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LDX, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
// 0xDx direct instructions with register B,X
|
||||
{ M680X_INS_SUBB, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_BITB, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, dir_hid, inh_hid },
|
||||
{ M680X_INS_STAB, dir_hid, inh_hid },
|
||||
{ M680X_INS_EORB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LDX, dir_hid, inh_hid },
|
||||
{ M680X_INS_STX, dir_hid, inh_hid },
|
||||
// 0xEx, indexed instruction with register B,X
|
||||
{ M680X_INS_SUBB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_BITB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_STAB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_EORB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LDX, idxX_hid, inh_hid },
|
||||
{ M680X_INS_STX, idxX_hid, inh_hid },
|
||||
// 0xFx, extended instructions with register B,U
|
||||
{ M680X_INS_SUBB, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, ext_hid, inh_hid },
|
||||
{ M680X_INS_BITB, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDAB, ext_hid, inh_hid },
|
||||
{ M680X_INS_STAB, ext_hid, inh_hid },
|
||||
{ M680X_INS_EORB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORAB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LDX, ext_hid, inh_hid },
|
||||
{ M680X_INS_STX, ext_hid, inh_hid },
|
||||
};
|
||||
|
39
thirdparty/capstone/arch/M680X/m6801.inc
vendored
Normal file
39
thirdparty/capstone/arch/M680X/m6801.inc
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
// Additional instructions only supported on M6801/3
|
||||
static const inst_pageX g_m6801_inst_overlay_table[] = {
|
||||
// 0x0x, inherent instructions
|
||||
{ 0x04, M680X_INS_LSRD, inh_hid, inh_hid },
|
||||
{ 0x05, M680X_INS_ASLD, inh_hid, inh_hid },
|
||||
// 0x2x, relative branch instructions
|
||||
{ 0x21, M680X_INS_BRN, rel8_hid, inh_hid },
|
||||
// 0x3x, inherent instructions
|
||||
{ 0x38, M680X_INS_PULX, inh_hid, inh_hid },
|
||||
{ 0x3A, M680X_INS_ABX, inh_hid, inh_hid },
|
||||
{ 0x3C, M680X_INS_PSHX, inh_hid, inh_hid },
|
||||
{ 0x3D, M680X_INS_MUL, inh_hid, inh_hid },
|
||||
// 0x8x, immediate instructions with Register D
|
||||
{ 0x83, M680X_INS_SUBD, imm16_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register D
|
||||
{ 0x93, M680X_INS_SUBD, dir_hid, inh_hid },
|
||||
{ 0x9D, M680X_INS_JSR, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with Register D
|
||||
{ 0xA3, M680X_INS_SUBD, idxX_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register D
|
||||
{ 0xB3, M680X_INS_SUBD, ext_hid, inh_hid },
|
||||
// 0xCx, immediate instructions with register D
|
||||
{ 0xC3, M680X_INS_ADDD, imm16_hid, inh_hid },
|
||||
{ 0xCC, M680X_INS_LDD, imm16_hid, inh_hid },
|
||||
// 0xDx direct instructions with register D
|
||||
{ 0xD3, M680X_INS_ADDD, dir_hid, inh_hid },
|
||||
{ 0xDC, M680X_INS_LDD, dir_hid, inh_hid },
|
||||
{ 0xDD, M680X_INS_STD, dir_hid, inh_hid },
|
||||
// 0xEx, indexed instruction with register D
|
||||
{ 0xE3, M680X_INS_ADDD, idxX_hid, inh_hid },
|
||||
{ 0xEC, M680X_INS_LDD, idxX_hid, inh_hid },
|
||||
{ 0xED, M680X_INS_STD, idxX_hid, inh_hid },
|
||||
// 0xFx, extended instructions with register D
|
||||
{ 0xF3, M680X_INS_ADDD, ext_hid, inh_hid },
|
||||
{ 0xFC, M680X_INS_LDD, ext_hid, inh_hid },
|
||||
{ 0xFD, M680X_INS_STD, ext_hid, inh_hid },
|
||||
};
|
||||
|
277
thirdparty/capstone/arch/M680X/m6805.inc
vendored
Normal file
277
thirdparty/capstone/arch/M680X/m6805.inc
vendored
Normal file
@@ -0,0 +1,277 @@
|
||||
|
||||
// M68HC05 instructions
|
||||
static const inst_page1 g_m6805_inst_page1_table[256] = {
|
||||
// 0x0x, bit manipulation instructions
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRSET, opidxdr_hid, inh_hid },
|
||||
{ M680X_INS_BRCLR, opidxdr_hid, inh_hid },
|
||||
// 0x1x, bit set/clear instructions
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BCLR, opidx_hid, dir_hid },
|
||||
{ M680X_INS_BSET, opidx_hid, dir_hid },
|
||||
// 0x2x, relative branch instructions
|
||||
{ M680X_INS_BRA, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BRN, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BHI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BNE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BEQ, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BHCC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BHCS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BPL, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BMI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BMC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BMS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BIL, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BIH, rel8_hid, inh_hid },
|
||||
// 0x3x, direct instructions
|
||||
{ M680X_INS_NEG, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, dir_hid, inh_hid },
|
||||
{ M680X_INS_LSR, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, dir_hid, inh_hid },
|
||||
{ M680X_INS_ASR, dir_hid, inh_hid },
|
||||
{ M680X_INS_LSL, dir_hid, inh_hid },
|
||||
{ M680X_INS_ROL, dir_hid, inh_hid },
|
||||
{ M680X_INS_DEC, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, dir_hid, inh_hid },
|
||||
{ M680X_INS_TST, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLR, dir_hid, inh_hid },
|
||||
// 0x4x, inherent instructions
|
||||
{ M680X_INS_NEGA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_MUL, inh_hid, inh_hid },
|
||||
{ M680X_INS_COMA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RORA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INCA, inh_hid, inh_hid },
|
||||
{ M680X_INS_TSTA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLRA, inh_hid, inh_hid },
|
||||
// 0x5x, inherent instructions
|
||||
{ M680X_INS_NEGX, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COMX, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRX, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RORX, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRX, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSLX, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLX, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECX, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INCX, inh_hid, inh_hid },
|
||||
{ M680X_INS_TSTX, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLRX, inh_hid, inh_hid },
|
||||
// 0x6x, indexed, 1 byte offset instructions
|
||||
{ M680X_INS_NEG, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LSR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ASR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LSL, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ROL, idxX_hid, inh_hid },
|
||||
{ M680X_INS_DEC, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, idxX_hid, inh_hid },
|
||||
{ M680X_INS_TST, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLR, idxX_hid, inh_hid },
|
||||
// 0x7x, indexed, no offset instructions
|
||||
{ M680X_INS_NEG, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_LSR, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ASR, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_LSL, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ROL, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_DEC, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_TST, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLR, idxX0_hid, inh_hid },
|
||||
// 0x8x, inherent instructions
|
||||
{ M680X_INS_RTI, inh_hid, inh_hid },
|
||||
{ M680X_INS_RTS, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_SWI, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_STOP, inh_hid, inh_hid },
|
||||
{ M680X_INS_WAIT, inh_hid, inh_hid },
|
||||
// 0x9x, inherent instructions
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_TAX, inh_hid, inh_hid },
|
||||
{ M680X_INS_CLC, inh_hid, inh_hid },
|
||||
{ M680X_INS_SEC, inh_hid, inh_hid },
|
||||
{ M680X_INS_CLI, inh_hid, inh_hid },
|
||||
{ M680X_INS_SEI, inh_hid, inh_hid },
|
||||
{ M680X_INS_RSP, inh_hid, inh_hid },
|
||||
{ M680X_INS_NOP, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_TXA, inh_hid, inh_hid },
|
||||
// 0xAx, immediate instructions with reg. A
|
||||
{ M680X_INS_SUB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMP, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBC, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CPX, imm8_hid, inh_hid },
|
||||
{ M680X_INS_AND, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BIT, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_EOR, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADC, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADD, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_BSR, rel8_hid, inh_hid },
|
||||
{ M680X_INS_LDX, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
// 0xBx, direct instructions with reg. A
|
||||
{ M680X_INS_SUB, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMP, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBC, dir_hid, inh_hid },
|
||||
{ M680X_INS_CPX, dir_hid, inh_hid },
|
||||
{ M680X_INS_AND, dir_hid, inh_hid },
|
||||
{ M680X_INS_BIT, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_STA, dir_hid, inh_hid },
|
||||
{ M680X_INS_EOR, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADC, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADD, dir_hid, inh_hid },
|
||||
{ M680X_INS_JMP, dir_hid, inh_hid },
|
||||
{ M680X_INS_JSR, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDX, dir_hid, inh_hid },
|
||||
{ M680X_INS_STX, dir_hid, inh_hid },
|
||||
// 0xCx, extended instructions with reg. A
|
||||
{ M680X_INS_SUB, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMP, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBC, ext_hid, inh_hid },
|
||||
{ M680X_INS_CPX, ext_hid, inh_hid },
|
||||
{ M680X_INS_AND, ext_hid, inh_hid },
|
||||
{ M680X_INS_BIT, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_STA, ext_hid, inh_hid },
|
||||
{ M680X_INS_EOR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADC, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADD, ext_hid, inh_hid },
|
||||
{ M680X_INS_JMP, ext_hid, inh_hid },
|
||||
{ M680X_INS_JSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDX, ext_hid, inh_hid },
|
||||
{ M680X_INS_STX, ext_hid, inh_hid },
|
||||
// 0xDx, indexed with 2 byte offset instructions with reg. A
|
||||
{ M680X_INS_SUB, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_CMP, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_SBC, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_CPX, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_AND, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_BIT, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_LDA, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_STA, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_EOR, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_ADC, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_ORA, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_ADD, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_JMP, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_JSR, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_LDX, idxX16_hid, inh_hid },
|
||||
{ M680X_INS_STX, idxX16_hid, inh_hid },
|
||||
// 0xEx, indexed with 1 byte offset instructions with reg. A
|
||||
{ M680X_INS_SUB, idxX_hid, inh_hid },
|
||||
{ M680X_INS_CMP, idxX_hid, inh_hid },
|
||||
{ M680X_INS_SBC, idxX_hid, inh_hid },
|
||||
{ M680X_INS_CPX, idxX_hid, inh_hid },
|
||||
{ M680X_INS_AND, idxX_hid, inh_hid },
|
||||
{ M680X_INS_BIT, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LDA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_STA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_EOR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ADC, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ORA, idxX_hid, inh_hid },
|
||||
{ M680X_INS_ADD, idxX_hid, inh_hid },
|
||||
{ M680X_INS_JMP, idxX_hid, inh_hid },
|
||||
{ M680X_INS_JSR, idxX_hid, inh_hid },
|
||||
{ M680X_INS_LDX, idxX_hid, inh_hid },
|
||||
{ M680X_INS_STX, idxX_hid, inh_hid },
|
||||
// 0xFx, indexed without offset instructions with reg. A
|
||||
{ M680X_INS_SUB, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_CMP, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_SBC, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_CPX, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_AND, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_BIT, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_LDA, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_STA, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_EOR, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ADC, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ORA, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_ADD, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_JMP, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_JSR, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_LDX, idxX0_hid, inh_hid },
|
||||
{ M680X_INS_STX, idxX0_hid, inh_hid },
|
||||
};
|
||||
|
91
thirdparty/capstone/arch/M680X/m6808.inc
vendored
Normal file
91
thirdparty/capstone/arch/M680X/m6808.inc
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
|
||||
// Additional instructions only supported on M68HC08
|
||||
static const inst_pageX g_m6808_inst_overlay_table[] = {
|
||||
{ 0x31, M680X_INS_CBEQ, dir_hid, rel8_hid },
|
||||
{ 0x35, M680X_INS_STHX, dir_hid, inh_hid },
|
||||
{ 0x3b, M680X_INS_DBNZ, dir_hid, rel8_hid },
|
||||
{ 0x41, M680X_INS_CBEQA, imm8rel_hid, inh_hid },
|
||||
{ 0x45, M680X_INS_LDHX, imm16_hid, inh_hid },
|
||||
{ 0x4b, M680X_INS_DBNZA, rel8_hid, inh_hid },
|
||||
{ 0x4e, M680X_INS_MOV, dir_hid, dir_hid },
|
||||
{ 0x51, M680X_INS_CBEQX, imm8rel_hid, inh_hid },
|
||||
{ 0x52, M680X_INS_DIV, inh_hid, inh_hid },
|
||||
{ 0x55, M680X_INS_LDHX, dir_hid, inh_hid },
|
||||
{ 0x5b, M680X_INS_DBNZX, rel8_hid, inh_hid },
|
||||
{ 0x5e, M680X_INS_MOV, dir_hid, idxX0p_hid },
|
||||
{ 0x61, M680X_INS_CBEQ, idxXp_hid, rel8_hid },
|
||||
{ 0x62, M680X_INS_NSA, inh_hid, inh_hid },
|
||||
{ 0x65, M680X_INS_CPHX, imm16_hid, inh_hid },
|
||||
{ 0x6b, M680X_INS_DBNZ, idxX_hid, rel8_hid },
|
||||
{ 0x6e, M680X_INS_MOV, imm8_hid, dir_hid },
|
||||
{ 0x71, M680X_INS_CBEQ, idxX0p_hid, rel8_hid },
|
||||
{ 0x72, M680X_INS_DAA, inh_hid, inh_hid },
|
||||
{ 0x75, M680X_INS_CPHX, dir_hid, inh_hid },
|
||||
{ 0x7b, M680X_INS_DBNZ, idxX0_hid, rel8_hid },
|
||||
{ 0x7e, M680X_INS_MOV, idxX0p_hid, dir_hid },
|
||||
{ 0x84, M680X_INS_TAP, inh_hid, inh_hid },
|
||||
{ 0x85, M680X_INS_TPA, inh_hid, inh_hid },
|
||||
{ 0x86, M680X_INS_PULA, inh_hid, inh_hid },
|
||||
{ 0x87, M680X_INS_PSHA, inh_hid, inh_hid },
|
||||
{ 0x88, M680X_INS_PULX, inh_hid, inh_hid },
|
||||
{ 0x89, M680X_INS_PSHX, inh_hid, inh_hid },
|
||||
{ 0x8a, M680X_INS_PULH, inh_hid, inh_hid },
|
||||
{ 0x8b, M680X_INS_PSHH, inh_hid, inh_hid },
|
||||
{ 0x8c, M680X_INS_CLRH, inh_hid, inh_hid },
|
||||
{ 0x90, M680X_INS_BGE, rel8_hid, inh_hid },
|
||||
{ 0x91, M680X_INS_BLT, rel8_hid, inh_hid },
|
||||
{ 0x92, M680X_INS_BGT, rel8_hid, inh_hid },
|
||||
{ 0x93, M680X_INS_BLE, rel8_hid, inh_hid },
|
||||
{ 0x94, M680X_INS_TXS, inh_hid, inh_hid },
|
||||
{ 0x95, M680X_INS_TSX, inh_hid, inh_hid },
|
||||
{ 0x97, M680X_INS_TAX, inh_hid, inh_hid },
|
||||
{ 0x9f, M680X_INS_TXA, inh_hid, inh_hid },
|
||||
{ 0xa7, M680X_INS_AIS, imm8_hid, inh_hid },
|
||||
{ 0xaf, M680X_INS_AIX, imm8_hid, inh_hid },
|
||||
};
|
||||
|
||||
// M68HC08 PAGE2 instructions (prefix 0x9E)
|
||||
static const inst_pageX g_m6808_inst_page2_table[] = {
|
||||
{ 0x60, M680X_INS_NEG, idxS_hid, inh_hid },
|
||||
{ 0x61, M680X_INS_CBEQ, idxS_hid, rel8_hid },
|
||||
{ 0x63, M680X_INS_COM, idxS_hid, inh_hid },
|
||||
{ 0x64, M680X_INS_LSR, idxS_hid, inh_hid },
|
||||
{ 0x66, M680X_INS_ROR, idxS_hid, inh_hid },
|
||||
{ 0x67, M680X_INS_ASR, idxS_hid, inh_hid },
|
||||
{ 0x68, M680X_INS_LSL, idxS_hid, inh_hid },
|
||||
{ 0x69, M680X_INS_ROL, idxS_hid, inh_hid },
|
||||
{ 0x6a, M680X_INS_DEC, idxS_hid, inh_hid },
|
||||
{ 0x6b, M680X_INS_DBNZ, idxS_hid, rel8_hid },
|
||||
{ 0x6c, M680X_INS_INC, idxS_hid, inh_hid },
|
||||
{ 0x6d, M680X_INS_TST, idxS_hid, inh_hid },
|
||||
{ 0x6f, M680X_INS_CLR, idxS_hid, inh_hid },
|
||||
{ 0xd0, M680X_INS_SUB, idxS16_hid, inh_hid },
|
||||
{ 0xd1, M680X_INS_CMP, idxS16_hid, inh_hid },
|
||||
{ 0xd2, M680X_INS_SBC, idxS16_hid, inh_hid },
|
||||
{ 0xd3, M680X_INS_CPX, idxS16_hid, inh_hid },
|
||||
{ 0xd4, M680X_INS_AND, idxS16_hid, inh_hid },
|
||||
{ 0xd5, M680X_INS_BIT, idxS16_hid, inh_hid },
|
||||
{ 0xd6, M680X_INS_LDA, idxS16_hid, inh_hid },
|
||||
{ 0xd7, M680X_INS_STA, idxS16_hid, inh_hid },
|
||||
{ 0xd8, M680X_INS_EOR, idxS16_hid, inh_hid },
|
||||
{ 0xd9, M680X_INS_ADC, idxS16_hid, inh_hid },
|
||||
{ 0xda, M680X_INS_ORA, idxS16_hid, inh_hid },
|
||||
{ 0xdb, M680X_INS_ADD, idxS16_hid, inh_hid },
|
||||
{ 0xde, M680X_INS_LDX, idxS16_hid, inh_hid },
|
||||
{ 0xdf, M680X_INS_STX, idxS16_hid, inh_hid },
|
||||
{ 0xe0, M680X_INS_SUB, idxS_hid, inh_hid },
|
||||
{ 0xe1, M680X_INS_CMP, idxS_hid, inh_hid },
|
||||
{ 0xe2, M680X_INS_SBC, idxS_hid, inh_hid },
|
||||
{ 0xe3, M680X_INS_CPX, idxS_hid, inh_hid },
|
||||
{ 0xe4, M680X_INS_AND, idxS_hid, inh_hid },
|
||||
{ 0xe5, M680X_INS_BIT, idxS_hid, inh_hid },
|
||||
{ 0xe6, M680X_INS_LDA, idxS_hid, inh_hid },
|
||||
{ 0xe7, M680X_INS_STA, idxS_hid, inh_hid },
|
||||
{ 0xe8, M680X_INS_EOR, idxS_hid, inh_hid },
|
||||
{ 0xe9, M680X_INS_ADC, idxS_hid, inh_hid },
|
||||
{ 0xea, M680X_INS_ORA, idxS_hid, inh_hid },
|
||||
{ 0xeb, M680X_INS_ADD, idxS_hid, inh_hid },
|
||||
{ 0xee, M680X_INS_LDX, idxS_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STX, idxS_hid, inh_hid },
|
||||
};
|
||||
|
352
thirdparty/capstone/arch/M680X/m6809.inc
vendored
Normal file
352
thirdparty/capstone/arch/M680X/m6809.inc
vendored
Normal file
@@ -0,0 +1,352 @@
|
||||
|
||||
// M6809/HD6309 PAGE1 instructions
|
||||
static const inst_page1 g_m6809_inst_page1_table[256] = {
|
||||
// 0x0x, direct instructions
|
||||
{ M680X_INS_NEG, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, dir_hid, inh_hid },
|
||||
{ M680X_INS_LSR, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, dir_hid, inh_hid },
|
||||
{ M680X_INS_ASR, dir_hid, inh_hid },
|
||||
{ M680X_INS_LSL, dir_hid, inh_hid },
|
||||
{ M680X_INS_ROL, dir_hid, inh_hid },
|
||||
{ M680X_INS_DEC, dir_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, dir_hid, inh_hid },
|
||||
{ M680X_INS_TST, dir_hid, inh_hid },
|
||||
{ M680X_INS_JMP, dir_hid, inh_hid },
|
||||
{ M680X_INS_CLR, dir_hid, inh_hid },
|
||||
// 0x1x, misc instructions
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid }, // PAGE2
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid }, // PAGE3
|
||||
{ M680X_INS_NOP, inh_hid, inh_hid },
|
||||
{ M680X_INS_SYNC, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LBRA, rel16_hid, inh_hid },
|
||||
{ M680X_INS_LBSR, rel16_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_DAA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ORCC, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ANDCC, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SEX, inh_hid, inh_hid },
|
||||
{ M680X_INS_EXG, rr09_hid, inh_hid },
|
||||
{ M680X_INS_TFR, rr09_hid, inh_hid },
|
||||
// 0x2x, relative branch instructions
|
||||
{ M680X_INS_BRA, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BRN, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BHI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BCS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BNE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BEQ, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BVC, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BVS, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BPL, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BMI, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BGE, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLT, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BGT, rel8_hid, inh_hid },
|
||||
{ M680X_INS_BLE, rel8_hid, inh_hid },
|
||||
// 0x3x, misc instructions
|
||||
{ M680X_INS_LEAX, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LEAY, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LEAS, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LEAU, idx09_hid, inh_hid },
|
||||
{ M680X_INS_PSHS, rbits_hid, inh_hid },
|
||||
{ M680X_INS_PULS, rbits_hid, inh_hid },
|
||||
{ M680X_INS_PSHU, rbits_hid, inh_hid },
|
||||
{ M680X_INS_PULU, rbits_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RTS, inh_hid, inh_hid },
|
||||
{ M680X_INS_ABX, inh_hid, inh_hid },
|
||||
{ M680X_INS_RTI, inh_hid, inh_hid },
|
||||
{ M680X_INS_CWAI, imm8_hid, inh_hid },
|
||||
{ M680X_INS_MUL, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_SWI, inh_hid, inh_hid },
|
||||
// 0x4x, Register A instructions
|
||||
{ M680X_INS_NEGA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COMA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RORA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRA, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLA, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INCA, inh_hid, inh_hid },
|
||||
{ M680X_INS_TSTA, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLRA, inh_hid, inh_hid },
|
||||
// 0x5x, Register B instructions
|
||||
{ M680X_INS_NEGB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COMB, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_RORB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ASRB, inh_hid, inh_hid },
|
||||
{ M680X_INS_LSLB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ROLB, inh_hid, inh_hid },
|
||||
{ M680X_INS_DECB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INCB, inh_hid, inh_hid },
|
||||
{ M680X_INS_TSTB, inh_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_CLRB, inh_hid, inh_hid },
|
||||
// 0x6x, indexed instructions
|
||||
{ M680X_INS_NEG, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LSR, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ASR, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LSL, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ROL, idx09_hid, inh_hid },
|
||||
{ M680X_INS_DEC, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, idx09_hid, inh_hid },
|
||||
{ M680X_INS_TST, idx09_hid, inh_hid },
|
||||
{ M680X_INS_JMP, idx09_hid, inh_hid },
|
||||
{ M680X_INS_CLR, idx09_hid, inh_hid },
|
||||
// 0x7x, extended instructions
|
||||
{ M680X_INS_NEG, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_COM, ext_hid, inh_hid },
|
||||
{ M680X_INS_LSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_ROR, ext_hid, inh_hid },
|
||||
{ M680X_INS_ASR, ext_hid, inh_hid },
|
||||
{ M680X_INS_LSL, ext_hid, inh_hid },
|
||||
{ M680X_INS_ROL, ext_hid, inh_hid },
|
||||
{ M680X_INS_DEC, ext_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_INC, ext_hid, inh_hid },
|
||||
{ M680X_INS_TST, ext_hid, inh_hid },
|
||||
{ M680X_INS_JMP, ext_hid, inh_hid },
|
||||
{ M680X_INS_CLR, ext_hid, inh_hid },
|
||||
// 0x8x, immediate instructions with Register A,D,X
|
||||
{ M680X_INS_SUBA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BITA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_EORA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPX, imm16_hid, inh_hid },
|
||||
{ M680X_INS_BSR, rel8_hid, inh_hid },
|
||||
{ M680X_INS_LDX, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register A,D,X
|
||||
{ M680X_INS_SUBA, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, dir_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, dir_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_BITA, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_STA, dir_hid, inh_hid },
|
||||
{ M680X_INS_EORA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORA, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPX, dir_hid, inh_hid },
|
||||
{ M680X_INS_JSR, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDX, dir_hid, inh_hid },
|
||||
{ M680X_INS_STX, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with Register A,D,X
|
||||
{ M680X_INS_SUBA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_BITA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LDA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_STA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_EORA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ORA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, idx09_hid, inh_hid },
|
||||
{ M680X_INS_CMPX, idx09_hid, inh_hid },
|
||||
{ M680X_INS_JSR, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LDX, idx09_hid, inh_hid },
|
||||
{ M680X_INS_STX, idx09_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register A,D,X
|
||||
{ M680X_INS_SUBA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPA, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_SUBD, ext_hid, inh_hid },
|
||||
{ M680X_INS_ANDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_BITA, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_STA, ext_hid, inh_hid },
|
||||
{ M680X_INS_EORA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADCA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORA, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDA, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPX, ext_hid, inh_hid },
|
||||
{ M680X_INS_JSR, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDX, ext_hid, inh_hid },
|
||||
{ M680X_INS_STX, ext_hid, inh_hid },
|
||||
// 0xCx, immediate instructions with register B,D,U
|
||||
{ M680X_INS_SUBB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_BITB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_EORB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ORB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, imm8_hid, inh_hid },
|
||||
{ M680X_INS_LDD, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
{ M680X_INS_LDU, imm16_hid, inh_hid },
|
||||
{ M680X_INS_ILLGL, illgl_hid, inh_hid },
|
||||
// 0xDx direct instructions with register B,D,U
|
||||
{ M680X_INS_SUBB, dir_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, dir_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, dir_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_BITB, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_STB, dir_hid, inh_hid },
|
||||
{ M680X_INS_EORB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ORB, dir_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDD, dir_hid, inh_hid },
|
||||
{ M680X_INS_STD, dir_hid, inh_hid },
|
||||
{ M680X_INS_LDU, dir_hid, inh_hid },
|
||||
{ M680X_INS_STU, dir_hid, inh_hid },
|
||||
// 0xEx, indexed instruction with register B,D,U
|
||||
{ M680X_INS_SUBB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_BITB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LDB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_STB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_EORB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ORB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LDD, idx09_hid, inh_hid },
|
||||
{ M680X_INS_STD, idx09_hid, inh_hid },
|
||||
{ M680X_INS_LDU, idx09_hid, inh_hid },
|
||||
{ M680X_INS_STU, idx09_hid, inh_hid },
|
||||
// 0xFx, extended instructions with register B,D,U
|
||||
{ M680X_INS_SUBB, ext_hid, inh_hid },
|
||||
{ M680X_INS_CMPB, ext_hid, inh_hid },
|
||||
{ M680X_INS_SBCB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDD, ext_hid, inh_hid },
|
||||
{ M680X_INS_ANDB, ext_hid, inh_hid },
|
||||
{ M680X_INS_BITB, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDB, ext_hid, inh_hid },
|
||||
{ M680X_INS_STB, ext_hid, inh_hid },
|
||||
{ M680X_INS_EORB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADCB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ORB, ext_hid, inh_hid },
|
||||
{ M680X_INS_ADDB, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDD, ext_hid, inh_hid },
|
||||
{ M680X_INS_STD, ext_hid, inh_hid },
|
||||
{ M680X_INS_LDU, ext_hid, inh_hid },
|
||||
{ M680X_INS_STU, ext_hid, inh_hid },
|
||||
};
|
||||
|
||||
// The following array has to be sorted by increasing
|
||||
// opcodes. Otherwise the binary_search will fail.
|
||||
//
|
||||
// M6809 PAGE2 instructions (with prefix 0x10)
|
||||
static const inst_pageX g_m6809_inst_page2_table[] = {
|
||||
// 0x2x, relative long branch instructions
|
||||
{ 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 },
|
||||
// 0x3x
|
||||
{ 0x3f, M680X_INS_SWI2, inh_hid, inh_hid },
|
||||
// 0x8x, immediate instructions with register D,Y
|
||||
{ 0x83, M680X_INS_CMPD, imm16_hid, inh_hid },
|
||||
{ 0x8c, M680X_INS_CMPY, imm16_hid, inh_hid },
|
||||
{ 0x8e, M680X_INS_LDY, imm16_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register D,Y
|
||||
{ 0x93, M680X_INS_CMPD, dir_hid, inh_hid },
|
||||
{ 0x9c, M680X_INS_CMPY, dir_hid, inh_hid },
|
||||
{ 0x9e, M680X_INS_LDY, dir_hid, inh_hid },
|
||||
{ 0x9f, M680X_INS_STY, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with register D,Y
|
||||
{ 0xa3, M680X_INS_CMPD, idx09_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CMPY, idx09_hid, inh_hid },
|
||||
{ 0xae, M680X_INS_LDY, idx09_hid, inh_hid },
|
||||
{ 0xaf, M680X_INS_STY, idx09_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register D,Y
|
||||
{ 0xb3, M680X_INS_CMPD, ext_hid, inh_hid },
|
||||
{ 0xbc, M680X_INS_CMPY, ext_hid, inh_hid },
|
||||
{ 0xbe, M680X_INS_LDY, ext_hid, inh_hid },
|
||||
{ 0xbf, M680X_INS_STY, ext_hid, inh_hid },
|
||||
// 0xCx, immediate instructions with register S
|
||||
{ 0xce, M680X_INS_LDS, imm16_hid, inh_hid },
|
||||
// 0xDx, direct instructions with register S
|
||||
{ 0xde, M680X_INS_LDS, dir_hid, inh_hid },
|
||||
{ 0xdf, M680X_INS_STS, dir_hid, inh_hid },
|
||||
// 0xEx, indexed instructions with register S
|
||||
{ 0xee, M680X_INS_LDS, idx09_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STS, idx09_hid, inh_hid },
|
||||
// 0xFx, extended instructions with register S
|
||||
{ 0xfe, M680X_INS_LDS, ext_hid, inh_hid },
|
||||
{ 0xff, M680X_INS_STS, ext_hid, inh_hid },
|
||||
};
|
||||
|
||||
// The following array has to be sorted by increasing
|
||||
// opcodes. Otherwise the binary_search will fail.
|
||||
//
|
||||
// M6809 PAGE3 instructions (with prefix 0x11)
|
||||
static const inst_pageX g_m6809_inst_page3_table[] = {
|
||||
{ 0x3f, M680X_INS_SWI3, inh_hid, inh_hid },
|
||||
// 0x8x, immediate instructions with register U,S
|
||||
{ 0x83, M680X_INS_CMPU, imm16_hid, inh_hid },
|
||||
{ 0x8c, M680X_INS_CMPS, imm16_hid, inh_hid },
|
||||
// 0x9x, direct instructions with register U,S
|
||||
{ 0x93, M680X_INS_CMPU, dir_hid, inh_hid },
|
||||
{ 0x9c, M680X_INS_CMPS, dir_hid, inh_hid },
|
||||
// 0xAx, indexed instructions with register U,S
|
||||
{ 0xa3, M680X_INS_CMPU, idx09_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CMPS, idx09_hid, inh_hid },
|
||||
// 0xBx, extended instructions with register U,S
|
||||
{ 0xb3, M680X_INS_CMPU, ext_hid, inh_hid },
|
||||
{ 0xbc, M680X_INS_CMPS, ext_hid, inh_hid },
|
||||
};
|
||||
|
105
thirdparty/capstone/arch/M680X/m6811.inc
vendored
Normal file
105
thirdparty/capstone/arch/M680X/m6811.inc
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
|
||||
// Additional instructions only supported on M68HC11
|
||||
static const inst_pageX g_m6811_inst_overlay_table[] = {
|
||||
{ 0x00, M680X_INS_TEST, inh_hid, inh_hid },
|
||||
{ 0x02, M680X_INS_IDIV, inh_hid, inh_hid },
|
||||
{ 0x03, M680X_INS_FDIV, inh_hid, inh_hid },
|
||||
{ 0x12, M680X_INS_BRSET, dir_hid, imm8rel_hid },
|
||||
{ 0x13, M680X_INS_BRCLR, dir_hid, imm8rel_hid },
|
||||
{ 0x14, M680X_INS_BSET, dir_hid, imm8_hid },
|
||||
{ 0x15, M680X_INS_BCLR, dir_hid, imm8_hid },
|
||||
{ 0x1c, M680X_INS_BSET, idxX_hid, imm8_hid },
|
||||
{ 0x1d, M680X_INS_BCLR, idxX_hid, imm8_hid },
|
||||
{ 0x1e, M680X_INS_BRSET, idxX_hid, imm8rel_hid },
|
||||
{ 0x1f, M680X_INS_BRCLR, idxX_hid, imm8rel_hid },
|
||||
{ 0x8f, M680X_INS_XGDX, inh_hid, inh_hid },
|
||||
{ 0xcf, M680X_INS_STOP, inh_hid, inh_hid },
|
||||
};
|
||||
|
||||
// M68HC11 PAGE2 instructions
|
||||
static const inst_pageX g_m6811_inst_page2_table[] = {
|
||||
{ 0x08, M680X_INS_INY, inh_hid, inh_hid },
|
||||
{ 0x09, M680X_INS_DEY, inh_hid, inh_hid },
|
||||
{ 0x1c, M680X_INS_BSET, idxY_hid, imm8_hid },
|
||||
{ 0x1d, M680X_INS_BCLR, idxY_hid, imm8_hid },
|
||||
{ 0x1e, M680X_INS_BRSET, idxY_hid, imm8rel_hid },
|
||||
{ 0x1f, M680X_INS_BRCLR, idxY_hid, imm8rel_hid },
|
||||
{ 0x30, M680X_INS_TSY, inh_hid, inh_hid },
|
||||
{ 0x35, M680X_INS_TYS, inh_hid, inh_hid },
|
||||
{ 0x38, M680X_INS_PULY, inh_hid, inh_hid },
|
||||
{ 0x3a, M680X_INS_ABY, inh_hid, inh_hid },
|
||||
{ 0x3c, M680X_INS_PSHY, inh_hid, inh_hid },
|
||||
{ 0x60, M680X_INS_NEG, idxY_hid, inh_hid },
|
||||
{ 0x63, M680X_INS_COM, idxY_hid, inh_hid },
|
||||
{ 0x64, M680X_INS_LSR, idxY_hid, inh_hid },
|
||||
{ 0x66, M680X_INS_ROR, idxY_hid, inh_hid },
|
||||
{ 0x67, M680X_INS_ASR, idxY_hid, inh_hid },
|
||||
{ 0x68, M680X_INS_ASL, idxY_hid, inh_hid },
|
||||
{ 0x69, M680X_INS_ROL, idxY_hid, inh_hid },
|
||||
{ 0x6a, M680X_INS_DEC, idxY_hid, inh_hid },
|
||||
{ 0x6c, M680X_INS_INC, idxY_hid, inh_hid },
|
||||
{ 0x6d, M680X_INS_TST, idxY_hid, inh_hid },
|
||||
{ 0x6e, M680X_INS_JMP, idxY_hid, inh_hid },
|
||||
{ 0x6f, M680X_INS_CLR, idxY_hid, inh_hid },
|
||||
{ 0x8c, M680X_INS_CPY, imm16_hid, inh_hid },
|
||||
{ 0x8f, M680X_INS_XGDY, inh_hid, inh_hid },
|
||||
{ 0x9c, M680X_INS_CPY, dir_hid, inh_hid },
|
||||
{ 0xa0, M680X_INS_SUBA, idxY_hid, inh_hid },
|
||||
{ 0xa1, M680X_INS_CMPA, idxY_hid, inh_hid },
|
||||
{ 0xa2, M680X_INS_SBCA, idxY_hid, inh_hid },
|
||||
{ 0xa3, M680X_INS_SUBD, idxY_hid, inh_hid },
|
||||
{ 0xa4, M680X_INS_ANDA, idxY_hid, inh_hid },
|
||||
{ 0xa5, M680X_INS_BITA, idxY_hid, inh_hid },
|
||||
{ 0xa6, M680X_INS_LDAA, idxY_hid, inh_hid },
|
||||
{ 0xa7, M680X_INS_STAA, idxY_hid, inh_hid },
|
||||
{ 0xa8, M680X_INS_EORA, idxY_hid, inh_hid },
|
||||
{ 0xa9, M680X_INS_ADCA, idxY_hid, inh_hid },
|
||||
{ 0xaa, M680X_INS_ORAA, idxY_hid, inh_hid },
|
||||
{ 0xab, M680X_INS_ADDA, idxY_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CPY, idxY_hid, inh_hid },
|
||||
{ 0xad, M680X_INS_JSR, idxY_hid, inh_hid },
|
||||
{ 0xae, M680X_INS_LDS, idxY_hid, inh_hid },
|
||||
{ 0xaf, M680X_INS_STS, idxY_hid, inh_hid },
|
||||
{ 0xbc, M680X_INS_CPY, ext_hid, inh_hid },
|
||||
{ 0xce, M680X_INS_LDY, imm16_hid, inh_hid },
|
||||
{ 0xde, M680X_INS_LDY, dir_hid, inh_hid },
|
||||
{ 0xdf, M680X_INS_STY, dir_hid, inh_hid },
|
||||
{ 0xe0, M680X_INS_SUBB, idxY_hid, inh_hid },
|
||||
{ 0xe1, M680X_INS_CMPB, idxY_hid, inh_hid },
|
||||
{ 0xe2, M680X_INS_SBCB, idxY_hid, inh_hid },
|
||||
{ 0xe3, M680X_INS_ADDD, idxY_hid, inh_hid },
|
||||
{ 0xe4, M680X_INS_ANDB, idxY_hid, inh_hid },
|
||||
{ 0xe5, M680X_INS_BITB, idxY_hid, inh_hid },
|
||||
{ 0xe6, M680X_INS_LDAB, idxY_hid, inh_hid },
|
||||
{ 0xe7, M680X_INS_STAB, idxY_hid, inh_hid },
|
||||
{ 0xe8, M680X_INS_EORB, idxY_hid, inh_hid },
|
||||
{ 0xe9, M680X_INS_ADCB, idxY_hid, inh_hid },
|
||||
{ 0xea, M680X_INS_ORAB, idxY_hid, inh_hid },
|
||||
{ 0xeb, M680X_INS_ADDB, idxY_hid, inh_hid },
|
||||
{ 0xec, M680X_INS_LDD, idxY_hid, inh_hid },
|
||||
{ 0xed, M680X_INS_STD, idxY_hid, inh_hid },
|
||||
{ 0xee, M680X_INS_LDY, idxY_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STY, idxY_hid, inh_hid },
|
||||
{ 0xfe, M680X_INS_LDY, ext_hid, inh_hid },
|
||||
{ 0xff, M680X_INS_STY, ext_hid, inh_hid },
|
||||
};
|
||||
|
||||
// M68HC11 PAGE3 instructions
|
||||
static const inst_pageX g_m6811_inst_page3_table[] = {
|
||||
{ 0x83, M680X_INS_CPD, imm16_hid, inh_hid },
|
||||
{ 0x93, M680X_INS_CPD, dir_hid, inh_hid },
|
||||
{ 0xa3, M680X_INS_CPD, idxX_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CPY, idxX_hid, inh_hid },
|
||||
{ 0xb3, M680X_INS_CPD, ext_hid, inh_hid },
|
||||
{ 0xee, M680X_INS_LDY, idxX_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STY, idxX_hid, inh_hid },
|
||||
};
|
||||
|
||||
// M68HC11 PAGE4 instructions
|
||||
static const inst_pageX g_m6811_inst_page4_table[] = {
|
||||
{ 0xa3, M680X_INS_CPD, idxY_hid, inh_hid },
|
||||
{ 0xac, M680X_INS_CPX, idxY_hid, inh_hid },
|
||||
{ 0xee, M680X_INS_LDX, idxY_hid, inh_hid },
|
||||
{ 0xef, M680X_INS_STX, idxY_hid, inh_hid },
|
||||
};
|
||||
|
Reference in New Issue
Block a user