xref: /aosp_15_r20/external/capstone/arch/M68K/M68KDisassembler.h (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
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