mirror of
https://github.com/dingusdev/dingusppc.git
synced 2024-06-09 07:29:36 +00:00
debugger: Ensure space between opcode and operand.
Instructions that are 8 characters or longer (such as mtdbat3l) did not have a space between opcode and operand. Now there is always a space. The width of the opcode column is unchanged except for those opcodes that have 8 or more characters.
This commit is contained in:
parent
c9d4cc3321
commit
78558e4c52
|
@ -286,52 +286,52 @@ const char* spr_index31[32] = {
|
||||||
|
|
||||||
/** various formatting helpers. */
|
/** various formatting helpers. */
|
||||||
void fmt_oneop(PPCDisasmContext* ctx, const char* opc, int src) {
|
void fmt_oneop(PPCDisasmContext* ctx, const char* opc, int src) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opc, src);
|
ctx->instr_str = my_sprintf("%-7s r%d", opc, src);
|
||||||
add_reg_in(ctx, "r%d", src);
|
add_reg_in(ctx, "r%d", src);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_oneop_out(PPCDisasmContext* ctx, const char* opc, int dst) {
|
void fmt_oneop_out(PPCDisasmContext* ctx, const char* opc, int dst) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opc, dst);
|
ctx->instr_str = my_sprintf("%-7s r%d", opc, dst);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_twoop(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
void fmt_twoop(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", opc, dst, src);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", opc, dst, src);
|
||||||
add_reg_in(ctx, "r%d", src);
|
add_reg_in(ctx, "r%d", src);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_twoop_in(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
void fmt_twoop_in(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", opc, dst, src);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", opc, dst, src);
|
||||||
add_reg_in(ctx, "r%d", src);
|
add_reg_in(ctx, "r%d", src);
|
||||||
add_reg_in(ctx, "r%d", dst);
|
add_reg_in(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_twoop_simm(PPCDisasmContext* ctx, const char* opc, int dst, int imm) {
|
void fmt_twoop_simm(PPCDisasmContext* ctx, const char* opc, int dst, int imm) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, %s0x%X", opc, dst, (imm < 0) ? "-" : "", abs(imm));
|
ctx->instr_str = my_sprintf("%-7s r%d, %s0x%X", opc, dst, (imm < 0) ? "-" : "", abs(imm));
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_twoop_fromspr(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
void fmt_twoop_fromspr(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
||||||
ctx->instr_str = my_sprintf("%-8spr%d, spr%d", opc, dst, src);
|
ctx->instr_str = my_sprintf("%-7s pr%d, spr%d", opc, dst, src);
|
||||||
add_reg_in(ctx, "spr%d", src);
|
add_reg_in(ctx, "spr%d", src);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_twoop_tospr(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
void fmt_twoop_tospr(PPCDisasmContext* ctx, const char* opc, int dst, int src) {
|
||||||
ctx->instr_str = my_sprintf("%-8sspr%d, r%d", opc, dst, src);
|
ctx->instr_str = my_sprintf("%-7s spr%d, r%d", opc, dst, src);
|
||||||
add_reg_in(ctx, "r%d", src);
|
add_reg_in(ctx, "r%d", src);
|
||||||
add_reg_out(ctx, "spr%d", dst);
|
add_reg_out(ctx, "spr%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_twoop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1) {
|
void fmt_twoop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1) {
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opc, dst, src1);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opc, dst, src1);
|
||||||
add_reg_in(ctx, "f%d", src1);
|
add_reg_in(ctx, "f%d", src1);
|
||||||
add_reg_out(ctx, "f%d", dst);
|
add_reg_out(ctx, "f%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_threeop(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2) {
|
void fmt_threeop(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, r%d", opc, dst, src1, src2);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, r%d", opc, dst, src1, src2);
|
||||||
add_reg_in(ctx, "r%d", src1);
|
add_reg_in(ctx, "r%d", src1);
|
||||||
add_reg_in(ctx, "r%d", src2);
|
add_reg_in(ctx, "r%d", src2);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
|
@ -345,32 +345,32 @@ void fmt_threeop_store(PPCDisasmContext* ctx, const char* opc, int dst, int src1
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_threeop_crb(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2) {
|
void fmt_threeop_crb(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2) {
|
||||||
ctx->instr_str = my_sprintf("%-8scrb%d, crb%d, crb%d", opc, dst, src1, src2);
|
ctx->instr_str = my_sprintf("%-7s crb%d, crb%d, crb%d", opc, dst, src1, src2);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_threeop_uimm(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int imm) {
|
void fmt_threeop_uimm(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int imm) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, 0x%X", opc, dst, src1, imm);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, 0x%X", opc, dst, src1, imm);
|
||||||
add_reg_in(ctx, "r%d", src1);
|
add_reg_in(ctx, "r%d", src1);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_threeop_simm(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int imm) {
|
void fmt_threeop_simm(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int imm) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, %s0x%X", opc, dst, src1, (imm < 0) ? "-" : "", abs(imm));
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, %s0x%X", opc, dst, src1, (imm < 0) ? "-" : "", abs(imm));
|
||||||
add_reg_in(ctx, "r%d", src1);
|
add_reg_in(ctx, "r%d", src1);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_threeop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2) {
|
void fmt_threeop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2) {
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d, f%d", opc, dst, src1, src2);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d, f%d", opc, dst, src1, src2);
|
||||||
add_reg_in(ctx, "f%d", src1);
|
add_reg_in(ctx, "f%d", src1);
|
||||||
add_reg_in(ctx, "f%d", src2);
|
add_reg_in(ctx, "f%d", src2);
|
||||||
add_reg_out(ctx, "f%d", dst);
|
add_reg_out(ctx, "f%d", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fmt_fourop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2, int src3) {
|
void fmt_fourop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1, int src2, int src3) {
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d, f%d, f%d", opc, dst, src1, src2, src3);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d, f%d, f%d", opc, dst, src1, src2, src3);
|
||||||
add_reg_in(ctx, "f%d", src1);
|
add_reg_in(ctx, "f%d", src1);
|
||||||
add_reg_in(ctx, "f%d", src2);
|
add_reg_in(ctx, "f%d", src2);
|
||||||
add_reg_in(ctx, "f%d", src3);
|
add_reg_in(ctx, "f%d", src3);
|
||||||
|
@ -379,12 +379,12 @@ void fmt_fourop_flt(PPCDisasmContext* ctx, const char* opc, int dst, int src1, i
|
||||||
|
|
||||||
void fmt_rotateop(PPCDisasmContext* ctx, const char* opc, int dst, int src, int sh, int mb, int me, bool imm) {
|
void fmt_rotateop(PPCDisasmContext* ctx, const char* opc, int dst, int src, int sh, int mb, int me, bool imm) {
|
||||||
if (imm) {
|
if (imm) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, %d, %d, %d", opc, dst, src, sh, mb, me);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, %d, %d, %d", opc, dst, src, sh, mb, me);
|
||||||
add_reg_in(ctx, "r%d", src);
|
add_reg_in(ctx, "r%d", src);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, r%d, %d, %d", opc, dst, src, sh, mb, me);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, r%d, %d, %d", opc, dst, src, sh, mb, me);
|
||||||
add_reg_in(ctx, "r%d", src);
|
add_reg_in(ctx, "r%d", src);
|
||||||
add_reg_in(ctx, "r%d", sh);
|
add_reg_in(ctx, "r%d", sh);
|
||||||
add_reg_out(ctx, "r%d", dst);
|
add_reg_out(ctx, "r%d", dst);
|
||||||
|
@ -394,7 +394,7 @@ void fmt_rotateop(PPCDisasmContext* ctx, const char* opc, int dst, int src, int
|
||||||
/* Opcodes */
|
/* Opcodes */
|
||||||
|
|
||||||
void opc_illegal(PPCDisasmContext* ctx) {
|
void opc_illegal(PPCDisasmContext* ctx) {
|
||||||
ctx->instr_str = my_sprintf("%-8s0x%08X", "dc.l", ctx->instr_code);
|
ctx->instr_str = my_sprintf("%-7s 0x%08X", "dc.l", ctx->instr_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_twi(PPCDisasmContext* ctx) {
|
void opc_twi(PPCDisasmContext* ctx) {
|
||||||
|
@ -409,12 +409,12 @@ void opc_twi(PPCDisasmContext* ctx) {
|
||||||
|
|
||||||
if (strlen(opcode) > 0) {
|
if (strlen(opcode) > 0) {
|
||||||
strcat(opcode, "i");
|
strcat(opcode, "i");
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0x%X", opcode, ra, imm);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0x%X", opcode, ra, imm);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, r%d, 0x%X", "twi", to, ra, imm);
|
ctx->instr_str = my_sprintf("%-7s %d, r%d, 0x%X", "twi", to, ra, imm);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ void fmt_rot_imm(PPCDisasmContext* ctx, const char* opc, int ra, int rs, int n)
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, %d", opcode, ra, rs, n);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, %d", opcode, ra, rs, n);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "r%d", ra);
|
add_reg_out(ctx, "r%d", ra);
|
||||||
}
|
}
|
||||||
|
@ -492,7 +492,7 @@ void fmt_rot_2imm(PPCDisasmContext* ctx, const char* opc, int ra, int rs, int n,
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d, %d, %d", opcode, ra, rs, n, b);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d, %d, %d", opcode, ra, rs, n, b);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "r%d", ra);
|
add_reg_out(ctx, "r%d", ra);
|
||||||
}
|
}
|
||||||
|
@ -630,13 +630,13 @@ void opc_cmp_i_li(PPCDisasmContext* ctx) {
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
if (!ls) {
|
if (!ls) {
|
||||||
if ((ctx->instr_code >> 26) & 0x1) {
|
if ((ctx->instr_code >> 26) & 0x1) {
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, r%d, 0x%X", "cmpwi", crfd, ra, imm);
|
ctx->instr_str = my_sprintf("%-7s cr%d, r%d, 0x%X", "cmpwi", crfd, ra, imm);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8scr%d, r%d, %s0x%X", "cmplwi", crfd, ra, (imm < 0) ? "-" : "", abs(imm));
|
"%-7s cr%d, r%d, %s0x%X", "cmplwi", crfd, ra, (imm < 0) ? "-" : "", abs(imm));
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
@ -645,13 +645,13 @@ void opc_cmp_i_li(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ctx->instr_code >> 26) & 0x1) {
|
if ((ctx->instr_code >> 26) & 0x1) {
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, %d, r%d, 0x%X", "cmpi", crfd, ls, ra, imm);
|
ctx->instr_str = my_sprintf("%-7s cr%d, %d, r%d, 0x%X", "cmpi", crfd, ls, ra, imm);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8scr%d, %d, r%d, %s0x%X", "cmpli", crfd, ls, ra, (imm < 0) ? "-" : "", abs(imm));
|
"%-7s cr%d, %d, r%d, %s0x%X", "cmpli", crfd, ls, ra, (imm < 0) ? "-" : "", abs(imm));
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
@ -668,7 +668,7 @@ void opc_bool_im(PPCDisasmContext* ctx) {
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
if (imm == 0 && !ra && !rs && !imm) { /* unofficial, produced by IDA */
|
if (imm == 0 && !ra && !rs && !imm) { /* unofficial, produced by IDA */
|
||||||
ctx->instr_str = my_sprintf("%-8s", "nop");
|
ctx->instr_str = my_sprintf("%-7s ", "nop");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -701,7 +701,7 @@ void generic_bcx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi, uint32_t dst)
|
||||||
if (ctx->instr_code & 2) {
|
if (ctx->instr_code & 2) {
|
||||||
strcat(opcode, "a"); /* add suffix "a" if the AA bit is set */
|
strcat(opcode, "a"); /* add suffix "a" if the AA bit is set */
|
||||||
}
|
}
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, %d, 0x%08X", opcode, bo, bi, dst);
|
ctx->instr_str = my_sprintf("%-7s %d, %d, 0x%08X", opcode, bo, bi, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void generic_bcctrx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi) {
|
void generic_bcctrx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi) {
|
||||||
|
@ -718,7 +718,7 @@ void generic_bcctrx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi) {
|
||||||
add_reg_out(ctx, "lr");
|
add_reg_out(ctx, "lr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, %d, 0x%08X", opcode, bo, bi);
|
ctx->instr_str = my_sprintf("%-7s %d, %d, 0x%08X", opcode, bo, bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
void generic_bclrx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi) {
|
void generic_bclrx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi) {
|
||||||
|
@ -739,7 +739,7 @@ void generic_bclrx(PPCDisasmContext* ctx, uint32_t bo, uint32_t bi) {
|
||||||
add_reg_out(ctx, "lr");
|
add_reg_out(ctx, "lr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, %d, 0x%08X", opcode, bo, bi);
|
ctx->instr_str = my_sprintf("%-7s %d, %d, 0x%08X", opcode, bo, bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_bcx(PPCDisasmContext* ctx) {
|
void opc_bcx(PPCDisasmContext* ctx) {
|
||||||
|
@ -758,7 +758,7 @@ void opc_bcx(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((bo & 0x14) == 0x14) {
|
if ((bo & 0x14) == 0x14) {
|
||||||
ctx->instr_str = my_sprintf("%-8s0x%08X", bx_mnem[0], dst);
|
ctx->instr_str = my_sprintf("%-7s 0x%08X", bx_mnem[0], dst);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -799,7 +799,7 @@ void opc_bcx(PPCDisasmContext* ctx) {
|
||||||
strcat(opcode, (ctx->instr_code & 0x8000) ? "-" : "+");
|
strcat(opcode, (ctx->instr_code & 0x8000) ? "-" : "+");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%s0x%08X", opcode, operands, dst);
|
ctx->instr_str = my_sprintf("%-7s %s0x%08X", opcode, operands, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_bcctrx(PPCDisasmContext* ctx) {
|
void opc_bcctrx(PPCDisasmContext* ctx) {
|
||||||
|
@ -821,7 +821,7 @@ void opc_bcctrx(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((bo & 0x14) == 0x14) {
|
if ((bo & 0x14) == 0x14) {
|
||||||
ctx->instr_str = my_sprintf("%-8s", bcctrx_mnem[ctx->instr_code & 1]);
|
ctx->instr_str = my_sprintf("%-7s ", bcctrx_mnem[ctx->instr_code & 1]);
|
||||||
add_reg_in(ctx, "ctr");
|
add_reg_in(ctx, "ctr");
|
||||||
if (ctx->instr_code & 1) {
|
if (ctx->instr_code & 1) {
|
||||||
add_reg_out(ctx, "lr");
|
add_reg_out(ctx, "lr");
|
||||||
|
@ -849,7 +849,7 @@ void opc_bcctrx(PPCDisasmContext* ctx) {
|
||||||
strcat(opcode, "+");
|
strcat(opcode, "+");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%s", opcode, operands);
|
ctx->instr_str = my_sprintf("%-7s %s", opcode, operands);
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_bclrx(PPCDisasmContext* ctx) {
|
void opc_bclrx(PPCDisasmContext* ctx) {
|
||||||
|
@ -867,7 +867,7 @@ void opc_bclrx(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((bo & 0x14) == 0x14) {
|
if ((bo & 0x14) == 0x14) {
|
||||||
ctx->instr_str = my_sprintf("%-8s", bclrx_mnem[ctx->instr_code & 1]);
|
ctx->instr_str = my_sprintf("%-7s ", bclrx_mnem[ctx->instr_code & 1]);
|
||||||
add_reg_in(ctx, "lr");
|
add_reg_in(ctx, "lr");
|
||||||
if (ctx->instr_code & 1) {
|
if (ctx->instr_code & 1) {
|
||||||
add_reg_out(ctx, "lr");
|
add_reg_out(ctx, "lr");
|
||||||
|
@ -911,21 +911,21 @@ void opc_bclrx(PPCDisasmContext* ctx) {
|
||||||
strcat(opcode, "+");
|
strcat(opcode, "+");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%s", opcode, operands);
|
ctx->instr_str = my_sprintf("%-7s %s", opcode, operands);
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_bx(PPCDisasmContext* ctx) {
|
void opc_bx(PPCDisasmContext* ctx) {
|
||||||
uint32_t dst = ((ctx->instr_code & 2) ? 0 : ctx->instr_addr) +
|
uint32_t dst = ((ctx->instr_code & 2) ? 0 : ctx->instr_addr) +
|
||||||
SIGNEXT(ctx->instr_code & 0x3FFFFFC, 25);
|
SIGNEXT(ctx->instr_code & 0x3FFFFFC, 25);
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s0x%08X", bx_mnem[ctx->instr_code & 3], dst);
|
ctx->instr_str = my_sprintf("%-7s 0x%08X", bx_mnem[ctx->instr_code & 3], dst);
|
||||||
if (ctx->instr_code & 1) {
|
if (ctx->instr_code & 1) {
|
||||||
add_reg_in(ctx, "lr");
|
add_reg_in(ctx, "lr");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_sc(PPCDisasmContext* ctx) {
|
void opc_sc(PPCDisasmContext* ctx) {
|
||||||
ctx->instr_str = my_sprintf("%-8s", "sc");
|
ctx->instr_str = my_sprintf("%-7s ", "sc");
|
||||||
}
|
}
|
||||||
|
|
||||||
void opc_group19(PPCDisasmContext* ctx) {
|
void opc_group19(PPCDisasmContext* ctx) {
|
||||||
|
@ -958,7 +958,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
|
|
||||||
switch (ext_opc) {
|
switch (ext_opc) {
|
||||||
case 0:
|
case 0:
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, cr%d", "mcrf", (rs >> 2), (ra >> 2));
|
ctx->instr_str = my_sprintf("%-7s cr%d, cr%d", "mcrf", (rs >> 2), (ra >> 2));
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
|
@ -967,7 +967,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 33:
|
case 33:
|
||||||
if (ctx->simplified && (ra == rb)) {
|
if (ctx->simplified && (ra == rb)) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "crnor", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "crnor", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
} else {
|
} else {
|
||||||
|
@ -975,7 +975,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 50:
|
case 50:
|
||||||
ctx->instr_str = my_sprintf("%-8s", "rfi");
|
ctx->instr_str = my_sprintf("%-7s ", "rfi");
|
||||||
add_reg_in(ctx, "msr");
|
add_reg_in(ctx, "msr");
|
||||||
add_reg_in(ctx, "srr0");
|
add_reg_in(ctx, "srr0");
|
||||||
add_reg_in(ctx, "srr1");
|
add_reg_in(ctx, "srr1");
|
||||||
|
@ -983,7 +983,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 129:
|
case 129:
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "crandc", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "crandc", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
} else {
|
} else {
|
||||||
|
@ -991,15 +991,15 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 150:
|
case 150:
|
||||||
ctx->instr_str = my_sprintf("%-8s", "isync");
|
ctx->instr_str = my_sprintf("%-7s ", "isync");
|
||||||
return;
|
return;
|
||||||
case 193:
|
case 193:
|
||||||
if (ctx->simplified && (rs == ra) && (rs == rb)) {
|
if (ctx->simplified && (rs == ra) && (rs == rb)) {
|
||||||
ctx->instr_str = my_sprintf("%-8scrb%d", "crclr", rs);
|
ctx->instr_str = my_sprintf("%-7s crb%d", "crclr", rs);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
} else if (ctx->simplified && ((rs != ra) || (rs != rb))) {
|
} else if (ctx->simplified && ((rs != ra) || (rs != rb))) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "crxor", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "crxor", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
|
@ -1008,7 +1008,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 225:
|
case 225:
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "crnand", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "crnand", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1017,7 +1017,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 257:
|
case 257:
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "crand", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "crand", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1026,11 +1026,11 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 289:
|
case 289:
|
||||||
if (ctx->simplified && (rs == ra) && (rs == rb)) {
|
if (ctx->simplified && (rs == ra) && (rs == rb)) {
|
||||||
ctx->instr_str = my_sprintf("%-8scrb%d", "crset", rs);
|
ctx->instr_str = my_sprintf("%-7s crb%d", "crset", rs);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
} else if (ctx->simplified && ((rs != ra) || (rs != rb))) {
|
} else if (ctx->simplified && ((rs != ra) || (rs != rb))) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "creqv", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "creqv", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
|
@ -1039,7 +1039,7 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 417:
|
case 417:
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "crorc", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "crorc", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1048,12 +1048,12 @@ void opc_group19(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
case 449:
|
case 449:
|
||||||
if (ctx->simplified && (ra == rb)) {
|
if (ctx->simplified && (ra == rb)) {
|
||||||
ctx->instr_str = my_sprintf("%-8scrb%d, crb%d", "crmove", rs, ra);
|
ctx->instr_str = my_sprintf("%-7s crb%d, crb%d", "crmove", rs, ra);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
} else if (ctx->simplified && (ra != rb)) {
|
} else if (ctx->simplified && (ra != rb)) {
|
||||||
ctx->instr_str = my_sprintf("%-8s%s, %s, %s", "cror", operand1, operand2, operand3);
|
ctx->instr_str = my_sprintf("%-7s %s, %s, %s", "cror", operand1, operand2, operand3);
|
||||||
add_reg_in(ctx, "cr");
|
add_reg_in(ctx, "cr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
|
@ -1148,7 +1148,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
if ((ra != 0) || (rb != 0) || rc_set)
|
if ((ra != 0) || (rb != 0) || rc_set)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", "mtmsr", rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", "mtmsr", rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "msr");
|
add_reg_out(ctx, "msr");
|
||||||
}
|
}
|
||||||
|
@ -1156,33 +1156,33 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
if (ra & 16)
|
if (ra & 16)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, r%d", "mtsr", ra, rs);
|
ctx->instr_str = my_sprintf("%-7s %d, r%d", "mtsr", ra, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "sr%d", ra);
|
add_reg_out(ctx, "sr%d", ra);
|
||||||
}
|
}
|
||||||
} else if (index == 7) { /* mtsrin */
|
} else if (index == 7) { /* mtsrin */
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", "mtsrin", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", "mtsrin", rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
std::string reg_name = add_reg_in(ctx, "r%d", rb);
|
std::string reg_name = add_reg_in(ctx, "r%d", rb);
|
||||||
uint64_t reg_val = get_reg(reg_name);
|
uint64_t reg_val = get_reg(reg_name);
|
||||||
add_reg_out(ctx, "sr%d", reg_val >> 28);
|
add_reg_out(ctx, "sr%d", reg_val >> 28);
|
||||||
} else if (index == 9) { /* tlbie */
|
} else if (index == 9) { /* tlbie */
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", "tlbie", rb);
|
ctx->instr_str = my_sprintf("%-7s r%d", "tlbie", rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
} else if (index == 11) { /* tlbia */
|
} else if (index == 11) { /* tlbia */
|
||||||
ctx->instr_str = my_sprintf("%-8s", "tlbia");
|
ctx->instr_str = my_sprintf("%-7s ", "tlbia");
|
||||||
} else if (index == 30) { /* tlbld - 603 only */
|
} else if (index == 30) { /* tlbld - 603 only */
|
||||||
if (!rs && !ra)
|
if (!rs && !ra)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%s", "tlbld", rb);
|
ctx->instr_str = my_sprintf("%-7s r%s", "tlbld", rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
}
|
}
|
||||||
} else if (index == 30) { /* tlbli - 603 only */
|
} else if (index == 30) { /* tlbli - 603 only */
|
||||||
if (!rs && !ra)
|
if (!rs && !ra)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%s", "tlbli", rb);
|
ctx->instr_str = my_sprintf("%-7s r%s", "tlbli", rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1321,7 +1321,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, r%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, r%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
}
|
}
|
||||||
|
@ -1338,7 +1338,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, r%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, r%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -1363,7 +1363,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if ((index == 18) || (index == 26)) { /* sync, eieio */
|
} else if ((index == 18) || (index == 26)) { /* sync, eieio */
|
||||||
ctx->instr_str = my_sprintf("%-8s", opcode);
|
ctx->instr_str = my_sprintf("%-7s ", opcode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* dcba, dcbf, dcbi, dcbst, dcbt, dcbz, icbi */
|
/* dcba, dcbf, dcbi, dcbst, dcbt, dcbz, icbi */
|
||||||
|
@ -1375,7 +1375,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8s0, r%d", opcode, rb);
|
ctx->instr_str = my_sprintf("%-7s 0, r%d", opcode, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1383,7 +1383,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (index == 17) { /* tlbsync */
|
} else if (index == 17) { /* tlbsync */
|
||||||
ctx->instr_str = my_sprintf("%-8s", opcode);
|
ctx->instr_str = my_sprintf("%-7s ", opcode);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
|
@ -1407,13 +1407,13 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
if (!(rs & 1)) {
|
if (!(rs & 1)) {
|
||||||
if ((rs >> 2) == 0) {
|
if ((rs >> 2) == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", "cmpw", ra, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", "cmpw", ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, r%d, r%d", "cmpw", (rs >> 2), ra, rb);
|
ctx->instr_str = my_sprintf("%-7s cr%d, r%d, r%d", "cmpw", (rs >> 2), ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
|
@ -1422,7 +1422,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, r%d, r%d", "cmp", (rs >> 2), ra, rb);
|
ctx->instr_str = my_sprintf("%-7s cr%d, r%d, r%d", "cmp", (rs >> 2), ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
|
@ -1435,14 +1435,14 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
strcpy(opcode, trap_cond[rs]);
|
strcpy(opcode, trap_cond[rs]);
|
||||||
|
|
||||||
if (strlen(opcode) != 0) {
|
if (strlen(opcode) != 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", opcode, ra, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", opcode, ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, r%d, r%d", "tw", rs, ra, rb);
|
ctx->instr_str = my_sprintf("%-7s %d, r%d, r%d", "tw", rs, ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
}
|
}
|
||||||
|
@ -1456,7 +1456,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
} else {
|
} else {
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, r%d", "lwarx", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, r%d", "lwarx", rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -1483,9 +1483,9 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
if (ctx->simplified) {
|
if (ctx->simplified) {
|
||||||
if (!(rs & 1)) {
|
if (!(rs & 1)) {
|
||||||
if ((rs >> 2) == 0)
|
if ((rs >> 2) == 0)
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", "cmplw", ra, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", "cmplw", ra, rb);
|
||||||
else
|
else
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, r%d, r%d", "cmplw", (rs >> 2), ra, rb);
|
ctx->instr_str = my_sprintf("%-7s cr%d, r%d, r%d", "cmplw", (rs >> 2), ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
|
@ -1496,14 +1496,14 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
|
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8scr%d, %d, r%d, r%d", "cmpl", (rs >> 2), (rs & 1), ra, rb);
|
"%-7s cr%d, %d, r%d, r%d", "cmpl", (rs >> 2), (rs & 1), ra, rb);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 83: /* mfmsr */
|
case 83: /* mfmsr */
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", "mfmsr", rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", "mfmsr", rs);
|
||||||
add_reg_in(ctx, "msr");
|
add_reg_in(ctx, "msr");
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
break;
|
break;
|
||||||
|
@ -1512,10 +1512,10 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
if (((ctx->instr_code >> 12) & 0xFF) == 0xFF)
|
if (((ctx->instr_code >> 12) & 0xFF) == 0xFF)
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", "mtcr", rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", "mtcr", rs);
|
||||||
else
|
else
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8s0x%02X, r%d", "mtcrf", (ctx->instr_code >> 12) & 0xFF, rs);
|
"%-7s 0x%02X, r%d", "mtcrf", (ctx->instr_code >> 12) & 0xFF, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
@ -1531,7 +1531,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "xer");
|
add_reg_out(ctx, "xer");
|
||||||
|
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, r%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, r%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
||||||
}
|
}
|
||||||
|
@ -1544,42 +1544,42 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
case 0:
|
case 0:
|
||||||
strcpy(opcode, "mf");
|
strcpy(opcode, "mf");
|
||||||
strcat(opcode, spr_index0[spr_low]);
|
strcat(opcode, spr_index0[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "%s", spr_index0[spr_low]);
|
add_reg_in(ctx, "%s", spr_index0[spr_low]);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
return;
|
return;
|
||||||
case 8:
|
case 8:
|
||||||
strcpy(opcode, "mf");
|
strcpy(opcode, "mf");
|
||||||
strcat(opcode, spr_index8[spr_low]);
|
strcat(opcode, spr_index8[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "%s", spr_index8[spr_low]);
|
add_reg_in(ctx, "%s", spr_index8[spr_low]);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
return;
|
return;
|
||||||
case 16:
|
case 16:
|
||||||
strcpy(opcode, "mf");
|
strcpy(opcode, "mf");
|
||||||
strcat(opcode, spr_index16[spr_low]);
|
strcat(opcode, spr_index16[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "%s", spr_index16[spr_low]);
|
add_reg_in(ctx, "%s", spr_index16[spr_low]);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
return;
|
return;
|
||||||
case 29:
|
case 29:
|
||||||
strcpy(opcode, "mf");
|
strcpy(opcode, "mf");
|
||||||
strcat(opcode, spr_index29[spr_low]);
|
strcat(opcode, spr_index29[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "%s", spr_index29[spr_low]);
|
add_reg_in(ctx, "%s", spr_index29[spr_low]);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
return;
|
return;
|
||||||
case 30:
|
case 30:
|
||||||
strcpy(opcode, "mf");
|
strcpy(opcode, "mf");
|
||||||
strcat(opcode, spr_index30[spr_low]);
|
strcat(opcode, spr_index30[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "%s", spr_index30[spr_low]);
|
add_reg_in(ctx, "%s", spr_index30[spr_low]);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
return;
|
return;
|
||||||
case 31:
|
case 31:
|
||||||
strcpy(opcode, "mf");
|
strcpy(opcode, "mf");
|
||||||
strcat(opcode, spr_index31[spr_low]);
|
strcat(opcode, spr_index31[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "%s", spr_index31[spr_low]);
|
add_reg_in(ctx, "%s", spr_index31[spr_low]);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
return;
|
return;
|
||||||
|
@ -1600,7 +1600,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, %d", "mftb", rs, ref_spr);
|
ctx->instr_str = my_sprintf("%-7s r%d, %d", "mftb", rs, ref_spr);
|
||||||
if (ref_spr == 268) {
|
if (ref_spr == 268) {
|
||||||
add_reg_in(ctx, "tbl");
|
add_reg_in(ctx, "tbl");
|
||||||
} else if (ref_spr == 269) {
|
} else if (ref_spr == 269) {
|
||||||
|
@ -1616,7 +1616,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
case 0:
|
case 0:
|
||||||
strcpy(opcode, "mt");
|
strcpy(opcode, "mt");
|
||||||
strcat(opcode, spr_index0[spr_low]);
|
strcat(opcode, spr_index0[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
if (spr_low == 0x16) { /* decrementer */
|
if (spr_low == 0x16) { /* decrementer */
|
||||||
add_reg_in(ctx, "msr");
|
add_reg_in(ctx, "msr");
|
||||||
|
@ -1626,35 +1626,35 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
case 8:
|
case 8:
|
||||||
strcpy(opcode, "mt");
|
strcpy(opcode, "mt");
|
||||||
strcat(opcode, spr_index8[spr_low]);
|
strcat(opcode, spr_index8[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "%s", spr_index8[spr_low]);
|
add_reg_out(ctx, "%s", spr_index8[spr_low]);
|
||||||
return;
|
return;
|
||||||
case 16:
|
case 16:
|
||||||
strcpy(opcode, "mt");
|
strcpy(opcode, "mt");
|
||||||
strcat(opcode, spr_index16[spr_low]);
|
strcat(opcode, spr_index16[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "%s", spr_index16[spr_low]);
|
add_reg_out(ctx, "%s", spr_index16[spr_low]);
|
||||||
return;
|
return;
|
||||||
case 29:
|
case 29:
|
||||||
strcpy(opcode, "mt");
|
strcpy(opcode, "mt");
|
||||||
strcat(opcode, spr_index29[spr_low]);
|
strcat(opcode, spr_index29[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "%s", spr_index29[spr_low]);
|
add_reg_out(ctx, "%s", spr_index29[spr_low]);
|
||||||
return;
|
return;
|
||||||
case 30:
|
case 30:
|
||||||
strcpy(opcode, "mt");
|
strcpy(opcode, "mt");
|
||||||
strcat(opcode, spr_index30[spr_low]);
|
strcat(opcode, spr_index30[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "%s", spr_index30[spr_low]);
|
add_reg_out(ctx, "%s", spr_index30[spr_low]);
|
||||||
return;
|
return;
|
||||||
case 31:
|
case 31:
|
||||||
strcpy(opcode, "mt");
|
strcpy(opcode, "mt");
|
||||||
strcat(opcode, spr_index31[spr_low]);
|
strcat(opcode, spr_index31[spr_low]);
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s r%d", opcode, rs);
|
||||||
add_reg_in(ctx, "r%d", rs);
|
add_reg_in(ctx, "r%d", rs);
|
||||||
add_reg_out(ctx, "%s", spr_index31[spr_low]);
|
add_reg_out(ctx, "%s", spr_index31[spr_low]);
|
||||||
return;
|
return;
|
||||||
|
@ -1663,7 +1663,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
fmt_twoop_tospr(ctx, "mtspr", ref_spr, rs);
|
fmt_twoop_tospr(ctx, "mtspr", ref_spr, rs);
|
||||||
break;
|
break;
|
||||||
case 512: /* mcrxr */
|
case 512: /* mcrxr */
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d", "mcrxr", (rs >> 2));
|
ctx->instr_str = my_sprintf("%-7s cr%d", "mcrxr", (rs >> 2));
|
||||||
add_reg_in(ctx, "xer");
|
add_reg_in(ctx, "xer");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
add_reg_out(ctx, "xer");
|
add_reg_out(ctx, "xer");
|
||||||
|
@ -1683,7 +1683,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
} else {
|
} else {
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, r%d", "lswx", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, r%d", "lswx", rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
||||||
}
|
}
|
||||||
|
@ -1705,7 +1705,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
if (ra & 16)
|
if (ra & 16)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, %d", "mfsr", rs, ra);
|
ctx->instr_str = my_sprintf("%-7s r%d, %d", "mfsr", rs, ra);
|
||||||
add_reg_in(ctx, "sr%d", ra);
|
add_reg_in(ctx, "sr%d", ra);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -1718,7 +1718,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
rb = 32;
|
rb = 32;
|
||||||
|
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, %x", "lswi", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, %x", "lswi", rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
||||||
}
|
}
|
||||||
|
@ -1728,7 +1728,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
break;
|
break;
|
||||||
case 659: /* mfsrin */
|
case 659: /* mfsrin */
|
||||||
{
|
{
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, r%d", "mfsrin", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, r%d", "mfsrin", rs, rb);
|
||||||
add_reg_out(ctx, "r%d", rs);
|
add_reg_out(ctx, "r%d", rs);
|
||||||
std::string reg_name = add_reg_in(ctx, "r%d", rb);
|
std::string reg_name = add_reg_in(ctx, "r%d", rb);
|
||||||
uint64_t reg_val = get_reg(reg_name);
|
uint64_t reg_val = get_reg(reg_name);
|
||||||
|
@ -1741,7 +1741,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, r%d", "stswx", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, r%d", "stswx", rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
||||||
}
|
}
|
||||||
|
@ -1759,7 +1759,7 @@ void opc_group31(PPCDisasmContext* ctx) {
|
||||||
rb = 32;
|
rb = 32;
|
||||||
|
|
||||||
if (ra == 0) {
|
if (ra == 0) {
|
||||||
ctx->instr_str = my_sprintf("%-8sr%d, 0, %d", "stswi", rs, rb);
|
ctx->instr_str = my_sprintf("%-7s r%d, 0, %d", "stswi", rs, rb);
|
||||||
add_reg_in(ctx, "r%d", rb);
|
add_reg_in(ctx, "r%d", rb);
|
||||||
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
add_reg_out(ctx, "r%d", rs); /* string operation: additional registers are affected */
|
||||||
}
|
}
|
||||||
|
@ -2071,7 +2071,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
if ((rc != 0) || (ra != 0))
|
if ((rc != 0) || (ra != 0))
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
|
@ -2138,7 +2138,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
if (rs & 3)
|
if (rs & 3)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, f%d, f%d", "fcmpu", (rs >> 2), ra, rb);
|
ctx->instr_str = my_sprintf("%-7s cr%d, f%d, f%d", "fcmpu", (rs >> 2), ra, rb);
|
||||||
add_reg_in(ctx, "f%d", ra);
|
add_reg_in(ctx, "f%d", ra);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
|
@ -2153,7 +2153,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
strcat(opcode, ".");
|
strcat(opcode, ".");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
|
@ -2168,7 +2168,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
strcat(opcode, ".");
|
strcat(opcode, ".");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
|
@ -2183,7 +2183,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
strcat(opcode, ".");
|
strcat(opcode, ".");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
|
@ -2193,7 +2193,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
if (rs & 3)
|
if (rs & 3)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, f%d, f%d", "fcmpo", (rs >> 2), ra, rb);
|
ctx->instr_str = my_sprintf("%-7s cr%d, f%d, f%d", "fcmpo", (rs >> 2), ra, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_in(ctx, "f%d", rs);
|
add_reg_in(ctx, "f%d", rs);
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
|
@ -2207,7 +2207,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s %d", opcode, rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
break;
|
break;
|
||||||
case 40: /* fneg */
|
case 40: /* fneg */
|
||||||
|
@ -2221,7 +2221,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
if (ra != 0)
|
if (ra != 0)
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -2229,7 +2229,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
case 64:
|
case 64:
|
||||||
strcpy(opcode, "mcrfs");
|
strcpy(opcode, "mcrfs");
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, cr%d", opcode, (rs >> 2), (ra >> 2));
|
ctx->instr_str = my_sprintf("%-7s cr%d, cr%d", opcode, (rs >> 2), (ra >> 2));
|
||||||
add_reg_in(ctx, "fpscr");
|
add_reg_in(ctx, "fpscr");
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
break;
|
break;
|
||||||
|
@ -2241,7 +2241,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s %d", opcode, rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
break;
|
break;
|
||||||
case 72: /* fmr */
|
case 72: /* fmr */
|
||||||
|
@ -2255,7 +2255,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -2270,7 +2270,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8scr%d, %d", opcode, (rs >> 2), (rb >> 1));
|
ctx->instr_str = my_sprintf("%-7s cr%d, %d", opcode, (rs >> 2), (rb >> 1));
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -2284,7 +2284,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -2299,7 +2299,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d, f%d", opcode, rs, rb);
|
ctx->instr_str = my_sprintf("%-7s f%d, f%d", opcode, rs, rb);
|
||||||
add_reg_in(ctx, "f%d", rb);
|
add_reg_in(ctx, "f%d", rb);
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -2315,7 +2315,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
if ((ra != 0) || (rb != 0))
|
if ((ra != 0) || (rb != 0))
|
||||||
opc_illegal(ctx);
|
opc_illegal(ctx);
|
||||||
else {
|
else {
|
||||||
ctx->instr_str = my_sprintf("%-8sf%d", opcode, rs);
|
ctx->instr_str = my_sprintf("%-7s f%d", opcode, rs);
|
||||||
add_reg_in(ctx, "fpscr");
|
add_reg_in(ctx, "fpscr");
|
||||||
add_reg_out(ctx, "f%d", rs);
|
add_reg_out(ctx, "f%d", rs);
|
||||||
}
|
}
|
||||||
|
@ -2328,7 +2328,7 @@ void opc_group63(PPCDisasmContext* ctx) {
|
||||||
add_reg_out(ctx, "cr");
|
add_reg_out(ctx, "cr");
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->instr_str = my_sprintf("%-8s%d, f%d", opcode, fm, rb);
|
ctx->instr_str = my_sprintf("%-7s %d, f%d", opcode, fm, rb);
|
||||||
add_reg_in(ctx, "f%d", rs);
|
add_reg_in(ctx, "f%d", rs);
|
||||||
add_reg_out(ctx, "fpscr");
|
add_reg_out(ctx, "fpscr");
|
||||||
break;
|
break;
|
||||||
|
@ -2357,11 +2357,11 @@ void opc_intldst(PPCDisasmContext* ctx) {
|
||||||
|
|
||||||
if (ra) {
|
if (ra) {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8sr%d, %s0x%X(r%d)", opc_int_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm), ra);
|
"%-7s r%d, %s0x%X(r%d)", opc_int_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm), ra);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
} else {
|
} else {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8sr%d, %s0x%X", opc_int_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm));
|
"%-7s r%d, %s0x%X", opc_int_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2385,11 +2385,11 @@ void opc_fltldst(PPCDisasmContext* ctx) {
|
||||||
|
|
||||||
if (ra) {
|
if (ra) {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8sf%d, %s0x%X(r%d)", opc_flt_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm), ra);
|
"%-7s f%d, %s0x%X(r%d)", opc_flt_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm), ra);
|
||||||
add_reg_in(ctx, "r%d", ra);
|
add_reg_in(ctx, "r%d", ra);
|
||||||
} else {
|
} else {
|
||||||
ctx->instr_str = my_sprintf(
|
ctx->instr_str = my_sprintf(
|
||||||
"%-8sf%d, %s0x%X", opc_flt_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm));
|
"%-7s f%d, %s0x%X", opc_flt_ldst[opcode], rd, ((imm < 0) ? "-" : ""), abs(imm));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ static vector<PPCDisasmContext> read_test_data() {
|
||||||
|
|
||||||
/* put instruction mnemonic padded with trailing spaces */
|
/* put instruction mnemonic padded with trailing spaces */
|
||||||
idisasm << tokens[2];
|
idisasm << tokens[2];
|
||||||
idisasm << setw(8 - tokens[2].length()) << "";
|
idisasm << setw(8 - tokens[2].length()) << " ";
|
||||||
|
|
||||||
/* now add comma-separated operands */
|
/* now add comma-separated operands */
|
||||||
for (i = 3; i < tokens.size(); i++) {
|
for (i = 3; i < tokens.size(); i++) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user