diff disasm.h @ 2206:4c265d2f6c88

Minor refactor of 68K disassembler
author Michael Pavone <pavone@retrodev.com>
date Sat, 27 Aug 2022 17:07:57 -0700
parents
children 53411df7fc71
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/disasm.h	Sat Aug 27 17:07:57 2022 -0700
@@ -0,0 +1,37 @@
+#ifndef DISASM_H_
+#define DISASM_H_
+
+#include <stdint.h>
+#include "tern.h"
+#include "backend.h"
+
+typedef struct {
+	char     **labels;
+	uint32_t num_labels;
+	uint32_t storage;
+	uint32_t full_address;
+	uint8_t  referenced;
+} label_def;
+
+typedef struct {
+	tern_node     *labels;
+	uint8_t       *visited;
+	deferred_addr *deferred;
+	uint32_t      address_mask;
+	uint32_t      invalid_inst_addr_mask;
+	uint32_t      visit_preshift;
+} disasm_context;
+
+label_def *find_label(disasm_context *context, uint32_t address);
+void weak_label(disasm_context *context, const char *name, uint32_t address);
+void reference(disasm_context *context, uint32_t address);
+void add_label(disasm_context *context, const char *name, uint32_t address);
+void visit(disasm_context *context, uint32_t address);
+uint8_t is_visited(disasm_context *context, uint32_t address);
+void defer_disasm(disasm_context *context, uint32_t address);
+void process_m68k_vectors(disasm_context *context, uint16_t *table, uint8_t labels_only);
+void add_segacd_maincpu_labels(disasm_context *context);
+void add_segacd_subcpu_labels(disasm_context *context);
+disasm_context *create_68000_disasm(void);
+
+#endif //DISASM_H_