systemz: use SStream_concat0() instead of SStream_concat() for simple string processing whenever possible

This commit is contained in:
Nguyen Anh Quynh 2014-06-16 13:02:41 +08:00
parent 3d3b6cec01
commit bddd215099
2 changed files with 29 additions and 29 deletions

View File

@ -1542,7 +1542,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
uint32_t Bits = OpInfo[MCInst_getOpcode(MI)];
// assert(Bits != 0 && "Cannot print this instruction.");
#ifndef CAPSTONE_DIET
SStream_concat(O, "%s", AsmStrs+(Bits & 4095)-1);
SStream_concat0(O, AsmStrs+(Bits & 4095)-1);
#endif
@ -1561,12 +1561,12 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 2:
// AGSI, ASI, CGHSI, CHHSI, CHSI, CLFHSI, CLGHSI, CLHHSI, CLI, CLIY, MVGH...
printBDAddrOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 3:
// AsmBCR, AsmBRC, AsmBRCL, PFD, PFDRL
printU4ImmOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 4:
// AsmEJ, AsmEJG, AsmHEJ, AsmHEJG, AsmHJ, AsmHJG, AsmLEJ, AsmLEJG, AsmLHJ...
@ -1576,48 +1576,48 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 5:
// BRC, BRCL
printCond4Operand(MI, 1, O);
SStream_concat(O, "%s", "\t");
SStream_concat0(O, "\t");
printPCRelOperand(MI, 2, O);
return;
break;
case 6:
// CGIJ, CGRJ, CIJ, CLGIJ, CLGRJ, CLIJ, CLRJ, CRJ
printCond4Operand(MI, 2, O);
SStream_concat(O, "%s", "\t");
SStream_concat0(O, "\t");
printOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 7:
// CLC, MVC, NC, OC, XC
printBDLAddrOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printBDAddrOperand(MI, 3, O);
return;
break;
case 8:
// LOC, LOCG
printCond4Operand(MI, 5, O);
SStream_concat(O, "%s", "\t");
SStream_concat0(O, "\t");
printOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printBDAddrOperand(MI, 2, O);
return;
break;
case 9:
// LOCGR, LOCR
printCond4Operand(MI, 3, O);
SStream_concat(O, "%s", "\t");
SStream_concat0(O, "\t");
printOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printOperand(MI, 1, O);
return;
break;
case 10:
// STOC, STOCG
printCond4Operand(MI, 4, O);
SStream_concat(O, "%s", "\t");
SStream_concat0(O, "\t");
printOperand(MI, 0, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printBDAddrOperand(MI, 1, O);
return;
break;
@ -1630,7 +1630,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
default: // unreachable.
case 0:
// A, ADB, ADBR, AEB, AEBR, AFI, AG, AGF, AGFI, AGFR, AGHI, AGHIK, AGR, A...
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 1:
// AGSI, ASI
@ -1658,7 +1658,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 6:
// CGIJ, CIJ
printS8ImmOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printPCRelOperand(MI, 3, O);
return;
break;
@ -1670,7 +1670,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 8:
// CLGIJ, CLIJ
printU8ImmOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printPCRelOperand(MI, 3, O);
return;
break;
@ -1726,12 +1726,12 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 7:
// AsmCGIJ, AsmCIJ, AsmJEAltCGI, AsmJEAltCI, AsmJECGI, AsmJECI, AsmJHAltC...
printS8ImmOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 8:
// AsmCLGIJ, AsmCLIJ, AsmJEAltCLGI, AsmJEAltCLI, AsmJECLGI, AsmJECLI, Asm...
printU8ImmOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 9:
// AsmELOC, AsmELOCG, AsmHELOC, AsmHELOCG, AsmHLOC, AsmHLOCG, AsmLELOC, A...
@ -1759,7 +1759,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 14:
// CDLFBR, CDLGBR, CELFBR, CELGBR, CFDBR, CFEBR, CFXBR, CGDBR, CGEBR, CGX...
printU4ImmOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printOperand(MI, 2, O);
break;
case 15:
@ -1774,7 +1774,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
break;
case 17:
// CGRJ, CLGRJ, CLRJ, CRJ
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printPCRelOperand(MI, 3, O);
return;
break;
@ -1811,12 +1811,12 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
break;
case 1:
// AGHIK, AGRK, AHIK, ALGHSIK, ALGRK, ALHSIK, ALRK, ARK, AsmCGRJ, AsmCLGR...
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
break;
case 2:
// AsmCGIJ, AsmCIJ, AsmCLGIJ, AsmCLIJ
printU4ImmOperand(MI, 2, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printPCRelOperand(MI, 3, O);
return;
break;
@ -1845,7 +1845,7 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 2:
// AsmCGRJ, AsmCLGRJ, AsmCLRJ, AsmCRJ
printU4ImmOperand(MI, 2, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printPCRelOperand(MI, 3, O);
return;
break;
@ -1887,9 +1887,9 @@ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
case 10:
// RISBG, RISBG32, RISBHG, RISBLG, RNSBG, ROSBG, RXSBG
printU8ImmOperand(MI, 3, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printU8ImmOperand(MI, 4, O);
SStream_concat(O, "%s", ", ");
SStream_concat0(O, ", ");
printU6ImmOperand(MI, 5, O);
return;
break;

View File

@ -54,7 +54,7 @@ static void printAddress(MCInst *MI, unsigned Base, int64_t Disp, unsigned Index
}
if (Base) {
SStream_concat(O, "(");
SStream_concat0(O, "(");
if (Index)
SStream_concat(O, "%%%s, ", getRegisterName(Index));
SStream_concat(O, "%%%s)", getRegisterName(Base));
@ -351,7 +351,7 @@ static void printBDLAddrOperand(MCInst *MI, int OpNum, SStream *O)
if (Base)
SStream_concat(O, ", %%%s", getRegisterName(Base));
SStream_concat(O, ")");
SStream_concat0(O, ")");
if (MI->csh->detail) {
MI->flat_insn->detail->sysz.operands[MI->flat_insn->detail->sysz.op_count].type = SYSZ_OP_MEM;
@ -364,14 +364,14 @@ static void printBDLAddrOperand(MCInst *MI, int OpNum, SStream *O)
static void printCond4Operand(MCInst *MI, int OpNum, SStream *O)
{
static const char *const CondNames[] = {
static char *const CondNames[] = {
"o", "h", "nle", "l", "nhe", "lh", "ne",
"e", "nlh", "he", "nl", "le", "nh", "no"
};
uint64_t Imm = MCOperand_getImm(MCInst_getOperand(MI, OpNum));
// assert(Imm > 0 && Imm < 15 && "Invalid condition");
SStream_concat(O, CondNames[Imm - 1]);
SStream_concat0(O, CondNames[Imm - 1]);
if (MI->csh->detail)
MI->flat_insn->detail->sysz.cc = (sysz_cc)Imm;