diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2009-06-27 00:29:12 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2009-06-27 00:29:12 -0700 |
commit | a4ac3fad7a9a6c48fdde3d42e35b113bbd03eacf (patch) | |
tree | 283ed5b25e52462c1d0988cba6b26020c2107e40 /src/arch/arm/insts/static_inst.cc | |
parent | 38d8bc64baab5ef17958d84e9d5fe6d62c31fca3 (diff) | |
download | gem5-a4ac3fad7a9a6c48fdde3d42e35b113bbd03eacf.tar.xz |
ARM: Write a function for printing mnemonics and predicates.
Diffstat (limited to 'src/arch/arm/insts/static_inst.cc')
-rw-r--r-- | src/arch/arm/insts/static_inst.cc | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/src/arch/arm/insts/static_inst.cc b/src/arch/arm/insts/static_inst.cc index 1a7853f2c..6b641d8bb 100644 --- a/src/arch/arm/insts/static_inst.cc +++ b/src/arch/arm/insts/static_inst.cc @@ -245,14 +245,76 @@ ArmStaticInst::printReg(std::ostream &os, int reg) const } } +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(); } } |