changeset 43950710afdc in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=43950710afdc
description:
ARM: Write a function for printing mnemonics and predicates.
diffstat:
5 files changed, 78 insertions(+), 16 deletions(-)
src/arch/arm/insts/branch.cc | 11 +----
src/arch/arm/insts/mem.cc | 8 +++-
src/arch/arm/insts/pred_inst.cc | 4 --
src/arch/arm/insts/static_inst.cc | 68 +++++++++++++++++++++++++++++++++++--
src/arch/arm/insts/static_inst.hh | 3 +
diffs (170 lines):
diff -r 5fdf0fc147bd -r 43950710afdc src/arch/arm/insts/branch.cc
--- a/src/arch/arm/insts/branch.cc Fri Jun 26 22:01:34 2009 -0700
+++ b/src/arch/arm/insts/branch.cc Sat Jun 27 00:29:12 2009 -0700
@@ -70,7 +70,7 @@
{
std::stringstream ss;
- ccprintf(ss, "%-10s ", mnemonic);
+ printMnemonic(ss);
Addr target = pc + 8 + disp;
@@ -87,13 +87,10 @@
BranchExchange::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
std::stringstream ss;
-
- ccprintf(ss, "%-10s ", mnemonic);
-
+ printMnemonic(ss);
if (_numSrcRegs > 0) {
printReg(ss, _srcRegIdx[0]);
}
-
return ss.str();
}
@@ -101,9 +98,7 @@
Jump::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
std::stringstream ss;
-
- ccprintf(ss, "%-10s ", mnemonic);
-
+ printMnemonic(ss);
return ss.str();
}
}
diff -r 5fdf0fc147bd -r 43950710afdc src/arch/arm/insts/mem.cc
--- a/src/arch/arm/insts/mem.cc Fri Jun 26 22:01:34 2009 -0700
+++ b/src/arch/arm/insts/mem.cc Sat Jun 27 00:29:12 2009 -0700
@@ -35,12 +35,16 @@
std::string
Memory::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
- return csprintf("%-10s", mnemonic);
+ std::stringstream ss;
+ printMnemonic(ss);
+ return ss.str();
}
std::string
MemoryNoDisp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
- return csprintf("%-10s", mnemonic);
+ std::stringstream ss;
+ printMnemonic(ss);
+ return ss.str();
}
}
diff -r 5fdf0fc147bd -r 43950710afdc src/arch/arm/insts/pred_inst.cc
--- a/src/arch/arm/insts/pred_inst.cc Fri Jun 26 22:01:34 2009 -0700
+++ b/src/arch/arm/insts/pred_inst.cc Sat Jun 27 00:29:12 2009 -0700
@@ -35,9 +35,7 @@
PredOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
std::stringstream ss;
-
- ccprintf(ss, "%-10s ", mnemonic);
-
+ printMnemonic(ss);
if (_numDestRegs > 0) {
printReg(ss, _destRegIdx[0]);
}
diff -r 5fdf0fc147bd -r 43950710afdc src/arch/arm/insts/static_inst.cc
--- a/src/arch/arm/insts/static_inst.cc Fri Jun 26 22:01:34 2009 -0700
+++ b/src/arch/arm/insts/static_inst.cc Sat Jun 27 00:29:12 2009 -0700
@@ -245,14 +245,76 @@
}
}
+void
+ArmStaticInst::printMnemonic(std::ostream &os,
+ const std::string &suffix,
+ bool withPred) const
+{
+ os << " " << mnemonic;
+ if (withPred) {
+ unsigned condCode = machInst.condCode;
+ switch (condCode) {
+ case COND_EQ:
+ os << "eq";
+ break;
+ case COND_NE:
+ os << "ne";
+ break;
+ case COND_CS:
+ os << "cs";
+ break;
+ case COND_CC:
+ os << "cc";
+ break;
+ case COND_MI:
+ os << "mi";
+ break;
+ case COND_PL:
+ os << "pl";
+ break;
+ case COND_VS:
+ os << "vs";
+ break;
+ case COND_VC:
+ os << "vc";
+ break;
+ case COND_HI:
+ os << "hi";
+ break;
+ case COND_LS:
+ os << "ls";
+ break;
+ case COND_GE:
+ os << "ge";
+ break;
+ case COND_LT:
+ os << "lt";
+ break;
+ case COND_GT:
+ os << "gt";
+ break;
+ case COND_LE:
+ os << "le";
+ break;
+ case COND_AL:
+ // This one is implicit.
+ break;
+ case COND_NV:
+ os << "nv";
+ break;
+ default:
+ panic("Unrecognized condition code %d.\n", condCode);
+ }
+ os << suffix << " ";
+ }
+}
+
std::string
ArmStaticInst::generateDisassembly(Addr pc,
const SymbolTable *symtab) const
{
std::stringstream ss;
-
- ccprintf(ss, "%-10s ", mnemonic);
-
+ printMnemonic(ss);
return ss.str();
}
}
diff -r 5fdf0fc147bd -r 43950710afdc src/arch/arm/insts/static_inst.hh
--- a/src/arch/arm/insts/static_inst.hh Fri Jun 26 22:01:34 2009 -0700
+++ b/src/arch/arm/insts/static_inst.hh Sat Jun 27 00:29:12 2009 -0700
@@ -62,6 +62,9 @@
/// Print a register name for disassembly given the unique
/// dependence tag number (FP or int).
void printReg(std::ostream &os, int reg) const;
+ void printMnemonic(std::ostream &os,
+ const std::string &suffix = "",
+ bool withPred = true) const;
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
};
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev