Mercurial > repos > blastem
comparison dis.c @ 2213:53411df7fc71
More 68K disassembler refactoring and fix Windows build failure
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 29 Aug 2022 21:58:37 -0700 |
parents | 4c265d2f6c88 |
children | 80dde7fb445b |
comparison
equal
deleted
inserted
replaced
2212:71b0cb7c34a6 | 2213:53411df7fc71 |
---|---|
29 case MODE_ABSOLUTE: | 29 case MODE_ABSOLUTE: |
30 case MODE_ABSOLUTE_SHORT: | 30 case MODE_ABSOLUTE_SHORT: |
31 reference(context, op->params.immed); | 31 reference(context, op->params.immed); |
32 break; | 32 break; |
33 } | 33 } |
34 } | |
35 | |
36 int label_fun(char *dst, uint32_t address, void * data) | |
37 { | |
38 disasm_context *context = data; | |
39 label_def *def = find_label(context, address); | |
40 if (def && def->num_labels) { | |
41 return sprintf(dst, "%s", def->labels[0]); | |
42 } | |
43 return m68k_default_label_fun(dst, address, NULL); | |
44 } | 34 } |
45 | 35 |
46 typedef struct { | 36 typedef struct { |
47 uint32_t address_off; | 37 uint32_t address_off; |
48 uint32_t address_end; | 38 uint32_t address_end; |
417 } | 407 } |
418 for (address = address_off; address < address_end; address+=2) { | 408 for (address = address_off; address < address_end; address+=2) { |
419 if (is_visited(context, address)) { | 409 if (is_visited(context, address)) { |
420 m68k_decode(fetch, &rom, &instbuf, address); | 410 m68k_decode(fetch, &rom, &instbuf, address); |
421 if (labels) { | 411 if (labels) { |
422 m68k_disasm_labels(&instbuf, disbuf, label_fun, context); | 412 m68k_disasm_labels(&instbuf, disbuf, context); |
423 label_def *label = find_label(context, address); | 413 label_def *label = find_label(context, address); |
424 if (label) { | 414 if (label) { |
425 if (label->num_labels) { | 415 if (label->num_labels) { |
426 for (int i = 0; i < label->num_labels; i++) | 416 for (int i = 0; i < label->num_labels; i++) |
427 { | 417 { |