Merge pull request #1723 from npwoods/dasmstream_powerpc

Changed the PowerPC disassembler to use 'std::ostream &' internally
This commit is contained in:
Vas Crabb 2016-11-17 11:29:17 +11:00 committed by GitHub
commit 721d5687f3
4 changed files with 20 additions and 11 deletions

View File

@ -835,7 +835,7 @@ static int Simplified(uint32_t op, uint32_t vpc, char *signed16, char *mnem, cha
return 1;
}
offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op)
offs_t ppc_dasm_one(std::ostream &stream, uint32_t pc, uint32_t op)
{
char signed16[12];
uint32_t disp;
@ -858,11 +858,11 @@ offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op)
*/
if( Simplified(op, pc, signed16, mnem, oprs) ) {
buffer += sprintf(buffer, "%s", mnem);
util::stream_format(stream, "%s", mnem);
for( j = strlen(mnem); j < 10; j++ ) {
buffer += sprintf(buffer, " ");
util::stream_format(stream, " ");
}
buffer += sprintf(buffer, "%s", oprs);
util::stream_format(stream, "%s", oprs);
return 4 | flags;
}
@ -1156,19 +1156,28 @@ offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op)
else if (itab[i].flags & FL_SO)
flags |= DASMFLAG_STEP_OUT;
buffer += sprintf(buffer, "%s", mnem);
util::stream_format(stream, "%s", mnem);
for( j = strlen(mnem); j < 10; j++ ) {
buffer += sprintf(buffer, " ");
util::stream_format(stream, " ");
}
buffer += sprintf(buffer, "%s", oprs);
util::stream_format(stream, "%s", oprs);
return 4 | flags;
}
}
sprintf(buffer, "?");
util::stream_format(stream, "?");
return 4 | flags;
}
offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op)
{
std::ostringstream stream;
offs_t result = ppc_dasm_one(stream, pc, op);
std::string stream_str = stream.str();
strcpy(buffer, stream_str.c_str());
return result;
}
CPU_DISASSEMBLE( powerpc )
{
uint32_t op = *(uint32_t *)oprom;

View File

@ -1234,7 +1234,6 @@ void ppc_device::device_reset()
offs_t ppc_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{
extern offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op);
uint32_t op = *(uint32_t *)oprom;
op = big_endianize_int32(op);
return ppc_dasm_one(buffer, pc, op);

View File

@ -475,6 +475,9 @@ enum
#define G_TO(op) ((op & M_TO) >> (31 - 10))
#define G_XO(op) ((op & M_XO) >> (31 - 30))
extern offs_t ppc_dasm_one(std::ostream &stream, uint32_t pc, uint32_t op);
extern offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op);
#endif /* __PPCCOM_H__ */

View File

@ -25,8 +25,6 @@
using namespace uml;
extern offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op);
/***************************************************************************