Mercurial > repos > blastem
diff dis.c @ 634:4a6ec64acd79
Better support for labels sourced from VOS program module header
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 11 Oct 2014 22:18:49 -0700 |
parents | a759f4e38488 |
children | 6992a1b07714 |
line wrap: on
line diff
--- a/dis.c Sat Oct 11 21:42:33 2014 -0700 +++ b/dis.c Sat Oct 11 22:18:49 2014 -0700 @@ -99,6 +99,19 @@ } } +int label_fun(char *dst, uint32_t address, void * data) +{ + tern_node * labels = data; + char key[MAX_INT_KEY_SIZE]; + label_names * names = tern_find_ptr(labels, tern_int_key(address & 0xFFFFFF, key)); + if (names) + { + return sprintf(dst, "%s", names->labels[0]); + } else { + return m68k_default_label_fun(dst, address, NULL); + } +} + int main(int argc, char ** argv) { long filesize; @@ -310,7 +323,7 @@ encoded = filebuf + (address-address_off)/2; m68k_decode(encoded, &instbuf, address); if (labels) { - m68k_disasm_labels(&instbuf, disbuf); + m68k_disasm_labels(&instbuf, disbuf, label_fun, named_labels); char keybuf[MAX_INT_KEY_SIZE]; label_names * names = tern_find_ptr(named_labels, tern_int_key(address, keybuf)); if (names)