uint32_t ti68k_debug_disassemble(uint32_t addr, char **line) { static struct disassemble_info di; static char *output = NULL; uint32_t offset; gchar **split; gchar *p; if (!output) { di = gdb_disassemble_info (NULL, NULL); output = di.stream; } *output = 0; offset = print_insn_m68k(addr, &di); split = g_strsplit(output, " ", 2); if(split[1]) for(p = split[1]; *p == ' '; p++); else p = ""; *line = g_strdup_printf("%06x: %s %s", addr, split[0] ? split[0] : "", p); g_strfreev(split); return offset; }
uint32_t Dasm68000(unsigned char *mem_buf, char *output_buf, uint32_t addr) { struct disassemble_info di = gdb_disassemble_info(mem_buf, output_buf); uint32_t offset; *output_buf = 0; di.buffer_vma = addr; offset = print_insn_m68k(addr, &di); return offset; }