M680XDisassemblerInternals.h
Go to the documentation of this file.
1 /* Capstone Disassembly Engine */
2 /* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
3 
4 #ifndef CS_M680XDISASSEMBLERINTERNALS_H
5 #define CS_M680XDISASSEMBLERINTERNALS_H
6 
7 #include "../../MCInst.h"
8 #include "../../include/capstone/m680x.h"
9 
10 typedef enum e_cpu_type {
12  M680X_CPU_TYPE_6301, // M680X Hitachi HD6301,HD6303 mode
13  M680X_CPU_TYPE_6309, // M680X Hitachi HD6309 mode
14  M680X_CPU_TYPE_6800, // M680X Motorola 6800,6802 mode
15  M680X_CPU_TYPE_6801, // M680X Motorola 6801,6803 mode
16  M680X_CPU_TYPE_6805, // M680X Motorola/Freescale M68HC05 mode
17  M680X_CPU_TYPE_6808, // M680X Motorola/Freescale M68HC08 mode
18  M680X_CPU_TYPE_6809, // M680X Motorola 6809 mode
19  M680X_CPU_TYPE_6811, // M680X Motorola/Freescale M68HC11 mode
20  M680X_CPU_TYPE_CPU12, // M680X Motorola/Freescale CPU12 mode
21  // used on M68HC12/HCS12
22  M680X_CPU_TYPE_HCS08, // M680X Freescale HCS08 mode
24 } e_cpu_type;
25 
26 struct inst_page1;
27 struct inst_pageX;
28 
29 typedef struct {
30  const struct inst_page1 *inst_page1_table;
31  const struct inst_pageX *inst_overlay_table[2];
32  size_t overlay_table_size[2];
33  uint8_t pageX_prefix[3];
34  const struct inst_pageX *inst_pageX_table[3];
35  size_t pageX_table_size[3];
37  const bool *tfr_reg_valid;
38  m680x_insn insn_cc_not_modified[2];
39 } cpu_tables;
40 
41 /* Private, For internal use only */
42 typedef struct m680x_info {
43  const uint8_t *code; // code buffer
44  uint32_t size; // byte size of code
45  uint16_t offset; // address offset of first byte in code buffer
46  e_cpu_type cpu_type; // The CPU type to be used for disassembling
47  cs_m680x m680x; // M680X specific properties
48  const cpu_tables *cpu;
49  m680x_insn insn; // Instruction ID
50  uint8_t insn_size; // byte size of instruction
51 } m680x_info;
52 
53 extern cs_err M680X_disassembler_init(cs_struct *ud);
54 extern cs_err M680X_instprinter_init(cs_struct *ud);
55 
56 #endif
57 
M680X_CPU_TYPE_6811
@ M680X_CPU_TYPE_6811
Definition: M680XDisassemblerInternals.h:19
m680x_info::cpu_type
e_cpu_type cpu_type
Definition: M680XDisassemblerInternals.h:46
cpu_tables::inst_page1_table
const struct inst_page1 * inst_page1_table
Definition: M680XDisassemblerInternals.h:30
M680X_instprinter_init
cs_err M680X_instprinter_init(cs_struct *ud)
uint16_t
unsigned short uint16_t
Definition: stdint-msvc2008.h:79
cpu_tables::tfr_reg_valid
const bool * tfr_reg_valid
Definition: M680XDisassemblerInternals.h:37
M680X_CPU_TYPE_6809
@ M680X_CPU_TYPE_6809
Definition: M680XDisassemblerInternals.h:18
m680x_insn
m680x_insn
M680X instruction IDs.
Definition: m680x.h:172
m680x_info::code
const uint8_t * code
Definition: M680XDisassemblerInternals.h:43
M680X_CPU_TYPE_ENDING
@ M680X_CPU_TYPE_ENDING
Definition: M680XDisassemblerInternals.h:23
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
M680X_CPU_TYPE_CPU12
@ M680X_CPU_TYPE_CPU12
Definition: M680XDisassemblerInternals.h:20
e_cpu_type
e_cpu_type
Definition: M680XDisassemblerInternals.h:10
m680x_info::insn_size
uint8_t insn_size
Definition: M680XDisassemblerInternals.h:50
m680x_info
Definition: M680XDisassemblerInternals.h:42
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
cs_struct
Definition: cs_priv.h:51
M680X_CPU_TYPE_INVALID
@ M680X_CPU_TYPE_INVALID
Definition: M680XDisassemblerInternals.h:11
M680X_CPU_TYPE_6808
@ M680X_CPU_TYPE_6808
Definition: M680XDisassemblerInternals.h:17
M680X_CPU_TYPE_6805
@ M680X_CPU_TYPE_6805
Definition: M680XDisassemblerInternals.h:16
M680X_CPU_TYPE_6801
@ M680X_CPU_TYPE_6801
Definition: M680XDisassemblerInternals.h:15
cs_m680x
The M680X instruction and it's operands.
Definition: m680x.h:165
m680x_info::insn
m680x_insn insn
Definition: M680XDisassemblerInternals.h:49
m680x_info::cpu
const cpu_tables * cpu
Definition: M680XDisassemblerInternals.h:48
cpu_tables::reg_byte_size
const uint8_t * reg_byte_size
Definition: M680XDisassemblerInternals.h:36
M680X_CPU_TYPE_HCS08
@ M680X_CPU_TYPE_HCS08
Definition: M680XDisassemblerInternals.h:22
M680X_CPU_TYPE_6800
@ M680X_CPU_TYPE_6800
Definition: M680XDisassemblerInternals.h:14
M680X_CPU_TYPE_6301
@ M680X_CPU_TYPE_6301
Definition: M680XDisassemblerInternals.h:12
cpu_tables
Definition: M680XDisassemblerInternals.h:29
M680X_disassembler_init
cs_err M680X_disassembler_init(cs_struct *ud)
m680x_info::m680x
cs_m680x m680x
Definition: M680XDisassemblerInternals.h:47
M680X_CPU_TYPE_6309
@ M680X_CPU_TYPE_6309
Definition: M680XDisassemblerInternals.h:13
m680x_info::offset
uint16_t offset
Definition: M680XDisassemblerInternals.h:45
m680x_info::size
uint32_t size
Definition: M680XDisassemblerInternals.h:44
m680x_info
struct m680x_info m680x_info


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:30