亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dyn_inst.hh

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? HH
字號:
/* * Copyright (c) 2001, 2002, 2003, 2004, 2005 * The Regents of The University of Michigan * All Rights Reserved * * This code is part of the M5 simulator, developed by Nathan Binkert, * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions * from Ron Dreslinski, Dave Greene, Lisa Hsu, Kevin Lim, Ali Saidi, * and Andrew Schultz. * * Permission is granted to use, copy, create derivative works and * redistribute this software and such derivative works for any * purpose, so long as the copyright notice above, this grant of * permission, and the disclaimer below appear in all copies made; and * so long as the name of The University of Michigan is not used in * any advertising or publicity pertaining to the use or distribution * of this software without specific, written prior authorization. * * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT, * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH * DAMAGES. */#ifndef __ENCUMBERED_CPU_FULL_DYN_INST_HH__#define __ENCUMBERED_CPU_FULL_DYN_INST_HH__#include <string>#include <vector>#include "base/fast_alloc.hh"#include "config/full_system.hh"#include "cpu/exetrace.hh"#include "cpu/inst_seq.hh"#include "cpu/static_inst.hh"#include "encumbered/cpu/full/bpred_update.hh"#include "encumbered/cpu/full/op_class.hh"#include "encumbered/cpu/full/spec_memory.hh"#include "encumbered/cpu/full/spec_state.hh"#include "encumbered/mem/functional/main.hh"/** * @file * Defines a dynamic instruction context. */class FullCPU;class DynInst : public FastAlloc{  public:    StaticInstPtr<TheISA> staticInst;    ////////////////////////////////////////////    //    // INSTRUCTION EXECUTION    //    ////////////////////////////////////////////    Trace::InstRecord *trace_data;    void setCPSeq(InstSeqNum seq);    template <class T>    Fault read(Addr addr, T &data, unsigned flags);    template <class T>    Fault write(T data, Addr addr, unsigned flags,			uint64_t *res);    // These functions are only used in CPU models that split    // effective address computation from the actual memory access.    void setEA(Addr EA) { panic("FullCPU::setEA() not implemented\n"); }    Addr getEA() 	{ panic("FullCPU::getEA() not implemented\n"); }    IntReg *getIntegerRegs(void);    FunctionalMemory *getMemory(void);    void prefetch(Addr addr, unsigned flags);    void writeHint(Addr addr, int size, unsigned flags);    Fault copySrcTranslate(Addr src);    Fault copy(Addr dest);  public:    bool recover_inst;    bool btb_missed;    bool squashed;    bool serializing_inst;	// flush ROB before dispatching    short thread_number;    short spec_mode;    short asid;		// *data* address space ID, for loads & stores    FullCPU *cpu;    SpecExecContext *xc;    Fault fault;    Addr eff_addr;	     //!< effective virtual address (lds & stores only)    Addr phys_eff_addr; //!< effective physical address    /** Effective virtual address for a copy source. */    Addr copySrcEffAddr;     /** Effective physical address for a copy source. */    Addr copySrcPhysEffAddr;    unsigned mem_req_flags;  //!< memory request flags (from translation)    AnyReg out_oldval1;    AnyReg out_oldval2;    AnyReg out_val1;    AnyReg out_val2;    int store_size;    IntReg store_data;    InstSeqNum fetch_seq;    InstSeqNum correctPathSeq;    Addr PC;			/*  PC of this instruction   */    Addr Next_PC;			/*  Next non-speculative PC  */    Addr Pred_PC;			/*  Predicted next PC        */    BPredUpdateRec dir_update;	/* bpred direction update info */    static int instcount;    DynInst(StaticInstPtr<TheISA> &_staticInst);    ~DynInst();    bool spec_mem_write;	// Did this instruction do a spec write?    void squash();    void    trace_mem(Fault fault,  // last fault	      MemCmd cmd,          // last command	      Addr addr,       // virtual address of access	      void *p,              // memory accessed	      int nbytes);          // access size    void dump();    void dump(std::string &outstring);    bool pred_taken() {	return( Pred_PC != (PC + sizeof(MachInst) ) );    }    bool mis_predicted() {	return (Pred_PC != Next_PC);    }    //    //  Instruction types.  Forward checks to StaticInst object.    //    bool isNop()	  const { return staticInst->isNop(); }    bool isMemRef()    	  const { return staticInst->isMemRef(); }    bool isLoad()	  const { return staticInst->isLoad(); }    bool isStore()	  const { return staticInst->isStore(); }    bool isInstPrefetch() const { return staticInst->isInstPrefetch(); }    bool isDataPrefetch() const { return staticInst->isDataPrefetch(); }    bool isCopy()         const { return staticInst->isCopy(); }    bool isInteger()	  const { return staticInst->isInteger(); }    bool isFloating()	  const { return staticInst->isFloating(); }    bool isControl()	  const { return staticInst->isControl(); }    bool isCall()	  const { return staticInst->isCall(); }    bool isReturn()	  const { return staticInst->isReturn(); }    bool isDirectCtrl()	  const { return staticInst->isDirectCtrl(); }    bool isIndirectCtrl() const { return staticInst->isIndirectCtrl(); }    bool isCondCtrl()	  const { return staticInst->isCondCtrl(); }    bool isUncondCtrl()	  const { return staticInst->isUncondCtrl(); }    bool isThreadSync()   const { return staticInst->isThreadSync(); }    bool isSerializing()  const	{ return serializing_inst || staticInst->isSerializing(); }    bool isMemBarrier()   const { return staticInst->isMemBarrier(); }    bool isWriteBarrier() const { return staticInst->isWriteBarrier(); }    bool isNonSpeculative() const { return staticInst->isNonSpeculative(); }    int8_t numSrcRegs()	 const { return staticInst->numSrcRegs(); }    int8_t numDestRegs() const { return staticInst->numDestRegs(); }    // the following are used to track physical register usage    // for machines with separate int & FP reg files    int8_t numFPDestRegs()  const { return staticInst->numFPDestRegs(); }    int8_t numIntDestRegs() const { return staticInst->numIntDestRegs(); }    TheISA::RegIndex destRegIdx(int i) const    {	return staticInst->destRegIdx(i);    }    TheISA::RegIndex srcRegIdx(int i) const    {	return staticInst->srcRegIdx(i);    }    OpClass opClass() const { return staticInst->opClass(); }    bool btb_miss() const { return btb_missed; }    Addr branchTarget() const { return staticInst->branchTarget(PC); }    Fault execute()    {	return staticInst->execute(this, trace_data);    }    // The register accessor methods provide the index of the    // instruction's operand (e.g., 0 or 1), not the architectural    // register index, to simplify the implementation of register    // renaming.  We find the architectural register index by indexing    // into the instruction's own operand index table.  Note that a    // raw pointer to the StaticInst is provided instead of a    // ref-counted StaticInstPtr to redice overhead.  This is fine as    // long as these methods don't copy the pointer into any long-term    // storage (which is pretty hard to imagine they would have reason    // to do).    uint64_t readIntReg(const StaticInst<TheISA> *si, int idx)    {	return xc->readIntReg(si->srcRegIdx(idx));    }    float readFloatRegSingle(const StaticInst<TheISA> *si, int idx)    {	int reg_idx = si->srcRegIdx(idx) - TheISA::FP_Base_DepTag;	return xc->readFloatRegSingle(reg_idx);    }    double readFloatRegDouble(const StaticInst<TheISA> *si, int idx)    {	int reg_idx = si->srcRegIdx(idx) - TheISA::FP_Base_DepTag;	return xc->readFloatRegDouble(reg_idx);    }    uint64_t readFloatRegInt(const StaticInst<TheISA> *si, int idx)    {	int reg_idx = si->srcRegIdx(idx) - TheISA::FP_Base_DepTag;	return xc->readFloatRegInt(reg_idx);    }    void setIntReg(const StaticInst<TheISA> *si, int idx, uint64_t val)    {	xc->setIntReg(si->destRegIdx(idx), val);    }    void setFloatRegSingle(const StaticInst<TheISA> *si, int idx, float val)    {	int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag;	xc->setFloatRegSingle(reg_idx, val);    }    void setFloatRegDouble(const StaticInst<TheISA> *si, int idx, double val)    {	int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag;	xc->setFloatRegDouble(reg_idx, val);    }    void setFloatRegInt(const StaticInst<TheISA> *si, int idx, uint64_t val)    {	int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag;	xc->setFloatRegInt(reg_idx, val);    }    uint64_t readPC() { return xc->readPC(); }    void setNextPC(uint64_t val) { xc->setNextPC(val); }    uint64_t readUniq() { return xc->readUniq(); }    void setUniq(uint64_t val) { xc->setUniq(val); }    uint64_t readFpcr() { return xc->readFpcr(); }    void setFpcr(uint64_t val) { xc->setFpcr(val); }#if FULL_SYSTEM    uint64_t readIpr(int idx, Fault &fault) { return xc->readIpr(idx, fault); }    Fault setIpr(int idx, uint64_t val) { return xc->setIpr(idx, val); }    Fault hwrei() { return xc->hwrei(); }    int readIntrFlag() { return xc->readIntrFlag(); }    void setIntrFlag(int val) { xc->setIntrFlag(val); }    bool inPalMode() { return xc->inPalMode(); }    void ev5_trap(Fault fault) { xc->ev5_trap(fault); }    bool simPalCheck(int palFunc) { return xc->simPalCheck(palFunc); }#else    void syscall() { xc->syscall(); }#endif    bool misspeculating() { return xc->misspeculating(); }    ExecContext *xcBase() { return xc; }};template <class T>inline FaultDynInst::read(Addr addr, T &data, unsigned flags){    MemReqPtr req = new MemReq(addr, xc, sizeof(T), flags);    req->asid = asid;    fault = xc->translateDataReadReq(req);    // Record key MemReq parameters so we can generate another one    // just like it for the timing access without calling translate()    // again (which might mess up the TLB).    eff_addr = req->vaddr;    phys_eff_addr = req->paddr;    mem_req_flags = req->flags;    /**     * @todo     * Replace the disjoint functional memory with a unified one and remove     * this hack.     */#if !FULL_SYSTEM    req->paddr = req->vaddr;#endif    if (fault == No_Fault) {	fault = xc->read(req, data);    }    else {	// Return a fixed value to keep simulation deterministic even	// along misspeculated paths.	data = (T)-1;    }    return fault;}template <class T>inline FaultDynInst::write(T data, Addr addr, unsigned flags, uint64_t *res){    store_size = sizeof(T);    store_data = data;    if (spec_mode)	spec_mem_write = true;    MemReqPtr req = new MemReq(addr, xc, sizeof(T), flags);    req->asid = asid;    fault = xc->translateDataWriteReq(req);    // Record key MemReq parameters so we can generate another one    // just like it for the timing access without calling translate()    // again (which might mess up the TLB).    eff_addr = req->vaddr;    phys_eff_addr = req->paddr;    mem_req_flags = req->flags;    /**     * @todo     * Replace the disjoint functional memory with a unified one and remove     * this hack.     */#if !FULL_SYSTEM    req->paddr = req->vaddr;#endif    if (fault == No_Fault) {	fault = xc->write(req, data);    }    if (res) {	// always return some result to keep misspeculated paths	// (which will ignore faults) deterministic	*res = (fault == No_Fault) ? req->result : 0;    }    return fault;}#endif // __ENCUMBERED_CPU_FULL_DYN_INST_HH__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99这里都是精品| 国产一区二区三区高清播放| 麻豆91在线播放| 不卡av在线网| 日韩精品中午字幕| 亚洲国产中文字幕| www.亚洲激情.com| 精品88久久久久88久久久| 亚洲欧美二区三区| 国产69精品久久久久777| 51久久夜色精品国产麻豆| 亚洲天堂2014| 国产suv精品一区二区三区| 欧美日韩一区二区三区高清| 专区另类欧美日韩| 成人在线视频一区二区| 精品国产91九色蝌蚪| 亚洲v日本v欧美v久久精品| 91无套直看片红桃| 国产午夜精品美女毛片视频| 麻豆精品久久精品色综合| 欧美三级三级三级爽爽爽| 亚洲免费高清视频在线| 99久久99久久免费精品蜜臀| 国产欧美日韩视频在线观看| 国产真实乱对白精彩久久| 日韩亚洲欧美中文三级| 青青草伊人久久| 在线不卡欧美精品一区二区三区| 亚洲小说欧美激情另类| 日韩一区二区三区在线| 激情av综合网| 亚洲综合一区在线| 五月激情六月综合| 日本vs亚洲vs韩国一区三区 | 久久久久久麻豆| 欧美a级理论片| 日韩一区二区精品| 麻豆91在线播放| 日韩欧美一区在线| 精品在线播放午夜| 久久网站热最新地址| 国产激情视频一区二区三区欧美 | 99久久国产免费看| 亚洲欧洲日韩综合一区二区| 9i看片成人免费高清| 亚洲欧美偷拍三级| 亚洲男女毛片无遮挡| 国产人成一区二区三区影院| 国产午夜精品久久久久久久 | 欧美日本免费一区二区三区| 亚洲第四色夜色| 欧美一二三区在线观看| 国产精品一区二区久久精品爱涩| 国产亚洲综合色| 91网站黄www| 亚洲成人精品在线观看| 欧美tk丨vk视频| 国产成人精品免费视频网站| 亚洲三级在线播放| 欧美日韩亚洲高清一区二区| 精品一区二区三区免费播放| 久久精品人人做人人综合 | 亚洲成人久久影院| 精品国产乱码久久久久久久久| 国产福利视频一区二区三区| 国产精品美女一区二区| bt7086福利一区国产| 国产欧美精品国产国产专区| 久久成人久久鬼色| 色哟哟在线观看一区二区三区| 亚洲午夜久久久久久久久久久 | 国产乱码精品一区二区三区忘忧草 | 久久er99精品| 中文字幕亚洲一区二区av在线| 777午夜精品免费视频| 国产麻豆91精品| 亚洲午夜电影在线| 亚洲国产va精品久久久不卡综合| 懂色av一区二区三区蜜臀 | www.日韩大片| 天堂久久久久va久久久久| 国产欧美日韩亚州综合| 91精品国产综合久久久久久| 成人app在线观看| 日本网站在线观看一区二区三区| 日韩一区在线免费观看| 久久色视频免费观看| 欧美男男青年gay1069videost| 成人av资源下载| 激情五月播播久久久精品| 一区二区三区在线免费视频 | 国产精品久久午夜| 欧美不卡123| 69精品人人人人| 91老师国产黑色丝袜在线| 国产美女精品人人做人人爽 | 91 com成人网| 欧美午夜精品久久久久久孕妇| 91成人免费在线| 中文字幕一区二区三区不卡| 精品成人在线观看| 在线观看区一区二| av电影天堂一区二区在线| 国产毛片精品一区| 蜜桃av一区二区| 蜜桃视频一区二区三区在线观看| 亚洲国产精品久久久久秋霞影院| 亚洲丝袜制服诱惑| 国产精品家庭影院| 中文字幕制服丝袜成人av| 国产欧美日韩久久| 国产日韩欧美一区二区三区综合| 日韩欧美卡一卡二| 精品久久一区二区三区| 精品美女一区二区三区| 精品三级在线看| 26uuu精品一区二区| 欧美大片免费久久精品三p| 91精品国产欧美一区二区成人| 欧美精品国产精品| 欧美一级欧美三级在线观看| 日韩手机在线导航| 欧美精品一区二区三区四区| 久久九九99视频| 国产三级一区二区| 中文字幕在线不卡一区| 自拍偷自拍亚洲精品播放| 一区二区三区四区不卡在线 | 国产高清久久久久| 成人午夜激情影院| 97se亚洲国产综合自在线不卡 | 欧美日韩一区二区在线观看 | 99久久综合精品| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美日韩国产天堂| 日韩一级二级三级精品视频| 久久夜色精品一区| 国产精品女主播av| 国产美女精品在线| jizzjizzjizz欧美| 欧美色窝79yyyycom| 日韩一区二区三区精品视频| 久久久久国产免费免费 | 婷婷中文字幕综合| 另类专区欧美蜜桃臀第一页| 国产91精品一区二区麻豆亚洲| 91网页版在线| 欧美一区二区精美| 中文字幕在线不卡国产视频| 亚洲成人福利片| 国产盗摄一区二区三区| 在线观看亚洲专区| 久久网站热最新地址| 亚洲综合在线第一页| 激情成人午夜视频| 欧美日韩视频在线一区二区| 精品国产一区二区精华| 亚洲精选视频在线| 国产酒店精品激情| 欧美日韩高清一区二区三区| 国产日韩精品一区| 天天综合天天综合色| 高清国产午夜精品久久久久久| 欧美日韩色一区| 中文字幕一区二区三区四区不卡| 日韩1区2区3区| 99精品视频一区二区三区| 日韩美女一区二区三区四区| 一区二区三区在线视频播放| 国产精品亚洲一区二区三区妖精 | 不卡视频一二三四| 免费国产亚洲视频| 国产精品网站在线观看| 精品国产电影一区二区| 亚洲色图20p| 国产**成人网毛片九色| 91精品久久久久久久91蜜桃 | 亚洲天天做日日做天天谢日日欢| 毛片av一区二区| 91福利社在线观看| 国产精品福利一区二区三区| 激情综合色播激情啊| 欧美一区二区三区在| 亚洲自拍偷拍欧美| 一本色道久久综合亚洲91| 中文字幕第一区二区| 国产精品一区二区久激情瑜伽| 欧美一区欧美二区| 天天色 色综合| 欧美日韩国产bt| 亚洲国产日日夜夜| 色婷婷亚洲婷婷| 中文字幕在线视频一区| 成人高清视频在线| 亚洲国产成人午夜在线一区| 国产福利91精品| 日本一区二区三区国色天香 | 欧美一区二区三区小说| 91九色最新地址|