diff options
author | Michael Pavone <pavone@retrodev.com> | 2014-10-11 22:18:49 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2014-10-11 22:18:49 -0700 |
commit | fc252737d7e366c5eccbbc08dc028b6adcb7d793 (patch) | |
tree | 970494fd15f05765b940facd8ed3a2a5f31c04e9 /dis.c | |
parent | a4b73b992202fb0d0b3da08cee05e0da16be7e59 (diff) |
Better support for labels sourced from VOS program module header
Diffstat (limited to 'dis.c')
-rw-r--r-- | dis.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -99,6 +99,19 @@ void check_reference(m68kinst * inst, m68k_op_info * op) } } +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 @@ int main(int argc, char ** argv) 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) |