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)