summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m68000
diff options
context:
space:
mode:
author Nathan Woods <npwoods@mess.org>2016-11-15 20:39:06 -0500
committer Nathan Woods <npwoods@mess.org>2016-11-15 20:40:30 -0500
commit3589318d9be94f922ca8541db609862cbcddea0f (patch)
treeab3a0fede7393e8e92ca82a8386fb9b25776ad4f /src/devices/cpu/m68000
parent0ca7ac3b2a1a61e4ea7c65564a7bd90561fb13d1 (diff)
Changed the m68k disassembler to use 'std::ostream &' internally
Diffstat (limited to 'src/devices/cpu/m68000')
-rw-r--r--src/devices/cpu/m68000/m68000.h1
-rw-r--r--src/devices/cpu/m68000/m68kdasm.cpp17
2 files changed, 14 insertions, 4 deletions
diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h
index 61c0af7a228..ac7c0021421 100644
--- a/src/devices/cpu/m68000/m68000.h
+++ b/src/devices/cpu/m68000/m68000.h
@@ -109,6 +109,7 @@ enum
M68K_FPSR, M68K_FPCR
};
+unsigned int m68k_disassemble_raw(std::ostream &stream, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type);
unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type);
class m68000_base_device;
diff --git a/src/devices/cpu/m68000/m68kdasm.cpp b/src/devices/cpu/m68000/m68kdasm.cpp
index 8f9e9987cb8..c92b73126c5 100644
--- a/src/devices/cpu/m68000/m68kdasm.cpp
+++ b/src/devices/cpu/m68000/m68kdasm.cpp
@@ -3829,7 +3829,7 @@ static void build_opcode_table(void)
/* ======================================================================== */
/* Disasemble one instruction at pc and store in str_buff */
-static unsigned int m68k_disassemble(char* str_buff, unsigned int pc, unsigned int cpu_type)
+static unsigned int m68k_disassemble(std::ostream &stream, unsigned int pc, unsigned int cpu_type)
{
if(!g_initialized)
{
@@ -3875,7 +3875,7 @@ static unsigned int m68k_disassemble(char* str_buff, unsigned int pc, unsigned i
g_cpu_ir = read_imm_16();
g_opcode_type = 0;
g_instruction_table[g_cpu_ir]();
- sprintf(str_buff, "%s%s", g_dasm_str, g_helper_str);
+ util::stream_format(stream, "%s%s", g_dasm_str, g_helper_str);
return COMBINE_OPCODE_FLAGS(g_cpu_pc - pc);
}
@@ -3889,17 +3889,26 @@ char* m68ki_disassemble_quick(unsigned int pc, unsigned int cpu_type)
}
#endif
-unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type)
+unsigned int m68k_disassemble_raw(std::ostream &stream, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type)
{
unsigned int result;
g_rawop = opdata;
g_rawbasepc = pc;
- result = m68k_disassemble(str_buff, pc, cpu_type);
+ result = m68k_disassemble(stream, pc, cpu_type);
g_rawop = nullptr;
return result;
}
+unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type)
+{
+ std::ostringstream stream;
+ unsigned int result = m68k_disassemble_raw(stream, pc, opdata, argdata, cpu_type);
+ std::string stream_str = stream.str();
+ strcpy(str_buff, stream_str.c_str());
+ return result;
+}
+
#ifdef UNUSED_FUNCTION
/* Check if the instruction is a valid one */
unsigned int m68k_is_valid_instruction(unsigned int instruction, unsigned int cpu_type)