aboutsummaryrefslogtreecommitdiffstats
path: root/capstone/arch/M680X/M680XDisassemblerInternals.h
diff options
context:
space:
mode:
Diffstat (limited to 'capstone/arch/M680X/M680XDisassemblerInternals.h')
-rw-r--r--capstone/arch/M680X/M680XDisassemblerInternals.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/capstone/arch/M680X/M680XDisassemblerInternals.h b/capstone/arch/M680X/M680XDisassemblerInternals.h
new file mode 100644
index 000000000..2f59c3f59
--- /dev/null
+++ b/capstone/arch/M680X/M680XDisassemblerInternals.h
@@ -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
+