Mercurial > repos > blastem
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_ |