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 {