micro.isa

来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· ISA 代码 · 共 106 行

ISA
106
字号
//This delcares the initiateAcc function in memory operationsdef template MacroInitiateAcc {{    Fault initiateAcc(%(CPU_exec_context)s *, Trace::InstRecord *) const    {        panic("Tried to execute a macroop directly!\n");        return NoFault;    }}};def template MacroCompleteAcc {{    Fault completeAcc(PacketPtr, %(CPU_exec_context)s *,            Trace::InstRecord *) const    {        panic("Tried to execute a macroop directly!\n");        return NoFault;    }}};//This template provides the execute functions for a storedef template MacroExecute {{    Fault execute(%(CPU_exec_context)s *, Trace::InstRecord *) const    {        panic("Tried to execute a macroop directly!\n");        return NoFault;    }}};output header {{        class SparcMacroInst : public SparcStaticInst        {          protected:            const uint32_t numMicroops;            //Constructor.            SparcMacroInst(const char *mnem, ExtMachInst _machInst,                    OpClass __opClass, uint32_t _numMicroops)                        : SparcStaticInst(mnem, _machInst, __opClass),                        numMicroops(_numMicroops)            {                assert(numMicroops);                microops = new StaticInstPtr[numMicroops];                flags[IsMacroop] = true;            }            ~SparcMacroInst()            {                delete [] microops;            }            std::string generateDisassembly(Addr pc,                const SymbolTable *symtab) const;            StaticInstPtr * microops;            StaticInstPtr fetchMicroop(MicroPC microPC)            {                assert(microPC < numMicroops);                return microops[microPC];            }            %(MacroExecute)s            %(MacroInitiateAcc)s            %(MacroCompleteAcc)s        };        class SparcMicroInst : public SparcStaticInst        {          protected:            //Constructor.            SparcMicroInst(const char *mnem,                    ExtMachInst _machInst, OpClass __opClass)                        : SparcStaticInst(mnem, _machInst, __opClass)            {                flags[IsMicroop] = true;            }        };        class SparcDelayedMicroInst : public SparcMicroInst        {          protected:            //Constructor.            SparcDelayedMicroInst(const char *mnem,                    ExtMachInst _machInst, OpClass __opClass)                        : SparcMicroInst(mnem, _machInst, __opClass)            {                flags[IsDelayedCommit] = true;            }        };}};output decoder {{        std::string SparcMacroInst::generateDisassembly(Addr pc,                const SymbolTable *symtab) const        {            std::stringstream response;            printMnemonic(response, mnemonic);            return response.str();        }}};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?