summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Vas Crabb <cuavas@users.noreply.github.com>2016-11-16 17:41:24 +1100
committer GitHub <noreply@github.com>2016-11-16 17:41:24 +1100
commit31ff573b08aa9b83911a4e16c82a61a2d2155236 (patch)
tree0ab29b7246928480ea94bbb2e383f14b0a640fa0 /src
parent633214b69b002c2ab8227068cdb6bca66cfe412d (diff)
parent3589318d9be94f922ca8541db609862cbcddea0f (diff)
Merge pull request #1705 from npwoods/dasmstream_m68k
Changed the m68k disassembler to use 'std::ostream &' internally
Diffstat (limited to 'src')
-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)