Common/GekkoDisassembler: Don't print out '\0' as a character
Prevents a few instructions from having mangled names in some cases.
This commit is contained in:
parent
0a7395bfba
commit
ce30efc6cf
|
@ -626,11 +626,11 @@ void GekkoDisassembler::bli(u32 in)
|
||||||
m_displacement = d;
|
m_displacement = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GekkoDisassembler::mcrf(u32 in, char c)
|
void GekkoDisassembler::mcrf(u32 in, std::string_view suffix)
|
||||||
{
|
{
|
||||||
if ((in & 0x0063f801) == 0)
|
if ((in & 0x0063f801) == 0)
|
||||||
{
|
{
|
||||||
m_opcode = fmt::format("mcrf{}", c);
|
m_opcode = fmt::format("mcrf{}", suffix);
|
||||||
m_operands = fmt::format("cr{}, cr{}", PPCGETCRD(in), PPCGETCRA(in));
|
m_operands = fmt::format("cr{}, cr{}", PPCGETCRD(in), PPCGETCRA(in));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -680,7 +680,7 @@ void GekkoDisassembler::rlw(u32 in, std::string_view name, int i)
|
||||||
int mb = (int)PPCGETC(in);
|
int mb = (int)PPCGETC(in);
|
||||||
int me = (int)PPCGETM(in);
|
int me = (int)PPCGETM(in);
|
||||||
|
|
||||||
m_opcode = fmt::format("rlw{}{}", name, (in & 1) ? '.' : '\0');
|
m_opcode = fmt::format("rlw{}{}", name, (in & 1) ? "." : "");
|
||||||
m_operands = fmt::format("{}, {}, {}{}, {}, {} ({:08x})", regnames[a], regnames[s], regsel[i],
|
m_operands = fmt::format("{}, {}, {}{}, {}, {} ({:08x})", regnames[a], regnames[s], regsel[i],
|
||||||
bsh, mb, me, HelperRotateMask(bsh, mb, me));
|
bsh, mb, me, HelperRotateMask(bsh, mb, me));
|
||||||
}
|
}
|
||||||
|
@ -699,7 +699,7 @@ void GekkoDisassembler::rld(u32 in, std::string_view name, int i)
|
||||||
int m = (int)(in & 0x7e0) >> 5;
|
int m = (int)(in & 0x7e0) >> 5;
|
||||||
|
|
||||||
m_flags |= PPCF_64;
|
m_flags |= PPCF_64;
|
||||||
m_opcode = fmt::format("rld{}{}", name, (in & 1) ? '.' : '\0');
|
m_opcode = fmt::format("rld{}{}", name, (in & 1) ? "." : "");
|
||||||
m_operands = fmt::format("{}, {}, {}{}, {}", regnames[a], regnames[s], regsel[i], bsh, m);
|
m_operands = fmt::format("{}, {}, {}{}, {}", regnames[a], regnames[s], regsel[i], bsh, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -815,7 +815,7 @@ void GekkoDisassembler::mtcr(u32 in)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_opcode = fmt::format("mtcr{}", crm == 0xff ? '\0' : 'f');
|
m_opcode = fmt::format("mtcr{}", crm == 0xff ? "" : "f");
|
||||||
|
|
||||||
if (crm != 0xff)
|
if (crm != 0xff)
|
||||||
m_operands += fmt::format("0x{:02x},", crm);
|
m_operands += fmt::format("0x{:02x},", crm);
|
||||||
|
@ -910,19 +910,18 @@ void GekkoDisassembler::mtb(u32 in)
|
||||||
{
|
{
|
||||||
m_operands += regnames[d];
|
m_operands += regnames[d];
|
||||||
|
|
||||||
char x;
|
const char* x = "";
|
||||||
switch (tbr)
|
switch (tbr)
|
||||||
{
|
{
|
||||||
case 268:
|
case 268:
|
||||||
x = 'l';
|
x = "l";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 269:
|
case 269:
|
||||||
x = 'u';
|
x = "u";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
x = '\0';
|
|
||||||
m_flags |= PPCF_SUPER;
|
m_flags |= PPCF_SUPER;
|
||||||
m_operands += fmt::format(",{}", tbr);
|
m_operands += fmt::format(",{}", tbr);
|
||||||
break;
|
break;
|
||||||
|
@ -939,7 +938,7 @@ void GekkoDisassembler::sradi(u32 in)
|
||||||
int bsh = (int)(((in & 2) << 4) + PPCGETB(in));
|
int bsh = (int)(((in & 2) << 4) + PPCGETB(in));
|
||||||
|
|
||||||
m_flags |= PPCF_64;
|
m_flags |= PPCF_64;
|
||||||
m_opcode = fmt::format("sradi{}", (in & 1) ? '.' : '\0');
|
m_opcode = fmt::format("sradi{}", (in & 1) ? "." : "");
|
||||||
m_operands = fmt::format("{}, {}, {}", regnames[a], regnames[s], bsh);
|
m_operands = fmt::format("{}, {}, {}", regnames[a], regnames[s], bsh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1374,7 +1373,7 @@ u32* GekkoDisassembler::DoDisassembly(bool big_endian)
|
||||||
switch (PPCGETIDX2(in))
|
switch (PPCGETIDX2(in))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
mcrf(in, '\0'); // mcrf
|
mcrf(in, ""); // mcrf
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
|
@ -2268,7 +2267,7 @@ u32* GekkoDisassembler::DoDisassembly(bool big_endian)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 64:
|
case 64:
|
||||||
mcrf(in, 's'); // mcrfs
|
mcrf(in, "s"); // mcrfs
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 70:
|
case 70:
|
||||||
|
|
|
@ -65,7 +65,7 @@ private:
|
||||||
static size_t branch(u32 in, std::string_view bname, int aform, int bdisp);
|
static size_t branch(u32 in, std::string_view bname, int aform, int bdisp);
|
||||||
static void bc(u32 in);
|
static void bc(u32 in);
|
||||||
static void bli(u32 in);
|
static void bli(u32 in);
|
||||||
static void mcrf(u32 in, char c);
|
static void mcrf(u32 in, std::string_view suffix);
|
||||||
static void crop(u32 in, std::string_view n1, std::string_view n2);
|
static void crop(u32 in, std::string_view n1, std::string_view n2);
|
||||||
static void nooper(u32 in, std::string_view name, unsigned char dmode);
|
static void nooper(u32 in, std::string_view name, unsigned char dmode);
|
||||||
static void rlw(u32 in, std::string_view name, int i);
|
static void rlw(u32 in, std::string_view name, int i);
|
||||||
|
|
Loading…
Reference in New Issue