1*9a0e4156SSadaf Ebrahimi /* Capstone Disassembly Engine */ 2*9a0e4156SSadaf Ebrahimi /* M68K Backend by Daniel Collin <[email protected]> 2015-2016 */ 3*9a0e4156SSadaf Ebrahimi 4*9a0e4156SSadaf Ebrahimi #ifndef CS_M68KDISASSEMBLER_H 5*9a0e4156SSadaf Ebrahimi #define CS_M68KDISASSEMBLER_H 6*9a0e4156SSadaf Ebrahimi 7*9a0e4156SSadaf Ebrahimi #include "../../MCInst.h" 8*9a0e4156SSadaf Ebrahimi 9*9a0e4156SSadaf Ebrahimi /* Private, For internal use only */ 10*9a0e4156SSadaf Ebrahimi typedef struct m68k_info { 11*9a0e4156SSadaf Ebrahimi const uint8_t *code; 12*9a0e4156SSadaf Ebrahimi size_t code_len; 13*9a0e4156SSadaf Ebrahimi uint64_t baseAddress; 14*9a0e4156SSadaf Ebrahimi MCInst *inst; 15*9a0e4156SSadaf Ebrahimi unsigned int pc; /* program counter */ 16*9a0e4156SSadaf Ebrahimi unsigned int ir; /* instruction register */ 17*9a0e4156SSadaf Ebrahimi unsigned int type; 18*9a0e4156SSadaf Ebrahimi unsigned int address_mask; /* Address mask to simulate address lines */ 19*9a0e4156SSadaf Ebrahimi cs_m68k extension; 20*9a0e4156SSadaf Ebrahimi uint16_t regs_read[20]; // list of implicit registers read by this insn 21*9a0e4156SSadaf Ebrahimi uint8_t regs_read_count; // number of implicit registers read by this insn 22*9a0e4156SSadaf Ebrahimi uint16_t regs_write[20]; // list of implicit registers modified by this insn 23*9a0e4156SSadaf Ebrahimi uint8_t regs_write_count; // number of implicit registers modified by this insn 24*9a0e4156SSadaf Ebrahimi uint8_t groups[8]; 25*9a0e4156SSadaf Ebrahimi uint8_t groups_count; 26*9a0e4156SSadaf Ebrahimi } m68k_info; 27*9a0e4156SSadaf Ebrahimi 28*9a0e4156SSadaf Ebrahimi bool M68K_getInstruction(csh ud, const uint8_t* code, size_t code_len, MCInst* instr, uint16_t* size, uint64_t address, void* info); 29*9a0e4156SSadaf Ebrahimi 30*9a0e4156SSadaf Ebrahimi #endif 31