trap.isa
来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· ISA 代码 · 共 106 行
ISA
106 行
//////////////////////////////////////////////////////////////////////// Trap instructions//output header {{ /** * Base class for trap instructions, * or instructions that always fault. */ class Trap : public SparcStaticInst { protected: // Constructor Trap(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : SparcStaticInst(mnem, _machInst, __opClass), trapNum(SW_TRAP) { } std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; int trapNum; };}};output decoder {{ std::string Trap::generateDisassembly(Addr pc, const SymbolTable *symtab) const { std::stringstream response; printMnemonic(response, mnemonic); ccprintf(response, " "); printReg(response, _srcRegIdx[0]); ccprintf(response, ", 0x%x", trapNum); ccprintf(response, ", or "); printReg(response, _srcRegIdx[1]); return response.str(); }}};def template TrapExecute {{ Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const { Fault fault = NoFault; %(op_decl)s; %(op_rd)s; %(code)s return fault; }}};def template FpUnimplExecute {{ Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const { Fault fault = NoFault; %(op_decl)s; %(op_rd)s; %(code)s %(op_wb)s; return fault; }}};def format Trap(code, *opt_flags) {{ iop = InstObjParams(name, Name, 'Trap', code, opt_flags) header_output = BasicDeclare.subst(iop) decoder_output = BasicConstructor.subst(iop) decode_block = BasicDecode.subst(iop) exec_output = TrapExecute.subst(iop)}};output header {{ class FpUnimpl : public SparcStaticInst { protected: FpUnimpl(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : SparcStaticInst(mnem, _machInst, __opClass) { } std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const { return mnemonic; } };}};def format FpUnimpl(*flags) {{ fpunimpl_code = ''' Fsr = insertBits(Fsr, 16, 14, 3); fault = new FpExceptionOther; ''' iop = InstObjParams(name, Name, 'FpUnimpl', fpunimpl_code, flags) header_output = BasicDeclare.subst(iop) decoder_output = BasicConstructor.subst(iop) decode_block = BasicDecode.subst(iop) exec_output = FpUnimplExecute.subst(iop)}};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?