1// -*- mode:c++ -*- 2 3//////////////////////////////////////////////////////////////////// 4// 5// Control transfer instructions 6// 7 8output header {{ --- 74 unchanged lines hidden (view full) --- 83 public: 84 /// Constructor 85 Jump(const char *mnem, MachInst _machInst, OpClass __opClass) 86 : PCDependentDisassembly(mnem, _machInst, __opClass), 87 disp(JMPTARG << 2) 88 { 89 } 90 |
91 Addr branchTarget(ThreadContext *tc) const; |
92 93 std::string 94 generateDisassembly(Addr pc, const SymbolTable *symtab) const; 95 }; 96}}; 97 98output decoder {{ 99 Addr 100 Branch::branchTarget(Addr branchPC) const 101 { 102 return branchPC + 4 + disp; 103 } 104 105 Addr |
106 Jump::branchTarget(ThreadContext *tc) const |
107 { |
108 Addr NPC = tc->readPC() + 4; 109 uint64_t Rb = tc->readIntReg(_srcRegIdx[0]); |
110 return (Rb & ~3) | (NPC & 1); 111 } 112 113 const std::string & 114 PCDependentDisassembly::disassemble(Addr pc, 115 const SymbolTable *symtab) const 116 { 117 if (!cachedDisassembly || --- 133 unchanged lines hidden --- |