comparison 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
comparison
equal deleted inserted replaced
2205:90297f1fb3fe 2206:4c265d2f6c88
1 #ifndef DISASM_H_
2 #define DISASM_H_
3
4 #include <stdint.h>
5 #include "tern.h"
6 #include "backend.h"
7
8 typedef struct {
9 char **labels;
10 uint32_t num_labels;
11 uint32_t storage;
12 uint32_t full_address;
13 uint8_t referenced;
14 } label_def;
15
16 typedef struct {
17 tern_node *labels;
18 uint8_t *visited;
19 deferred_addr *deferred;
20 uint32_t address_mask;
21 uint32_t invalid_inst_addr_mask;
22 uint32_t visit_preshift;
23 } disasm_context;
24
25 label_def *find_label(disasm_context *context, uint32_t address);
26 void weak_label(disasm_context *context, const char *name, uint32_t address);
27 void reference(disasm_context *context, uint32_t address);
28 void add_label(disasm_context *context, const char *name, uint32_t address);
29 void visit(disasm_context *context, uint32_t address);
30 uint8_t is_visited(disasm_context *context, uint32_t address);
31 void defer_disasm(disasm_context *context, uint32_t address);
32 void process_m68k_vectors(disasm_context *context, uint16_t *table, uint8_t labels_only);
33 void add_segacd_maincpu_labels(disasm_context *context);
34 void add_segacd_subcpu_labels(disasm_context *context);
35 disasm_context *create_68000_disasm(void);
36
37 #endif //DISASM_H_