branch.isa (2686:f0d591379ac3) | branch.isa (2687:9721a59675b8) |
---|---|
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 | 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(ExecContext *xc) const; | 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 | 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(ExecContext *xc) const | 106 Jump::branchTarget(ThreadContext *tc) const |
107 { | 107 { |
108 Addr NPC = xc->readPC() + 4; 109 uint64_t Rb = xc->readIntReg(_srcRegIdx[0]); | 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 --- | 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 --- |