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

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

?? dyn_inst.cc

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? CC
字號:
/* * 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. */#include <string>#include "base/cprintf.hh"#include "base/trace.hh"#include "cpu/exetrace.hh"#include "encumbered/cpu/full/cpu.hh"#include "encumbered/cpu/full/dyn_inst.hh"#include "encumbered/cpu/full/fetch.hh"#include "encumbered/cpu/full/spec_state.hh"#include "mem/mem_req.hh"using namespace std;#define NOHASH#ifndef NOHASH#include "base/hashmap.hh"unsigned int MyHashFunc(const DynInst *addr){  unsigned a = (unsigned)addr;  unsigned hash = (((a >> 14) ^ ((a >> 2) & 0xffff))) & 0x7FFFFFFF;  return hash;}typedef m5::hash_map<const DynInst *, const DynInst *, MyHashFunc> my_hash_t;my_hash_t thishash;#endifint DynInst::instcount = 0;//int break_inst = -1;voidDynInst::squash(){    // already been squashed once... nothing to do    if (squashed)	return;    if (DTRACE(Pipeline)) {	string s;	dump(s);	DPRINTF(Pipeline, "Squash %s\n", s);    }    if (recover_inst) {	xc->spec_mode--;	recover_inst = false;    }    if (fault != No_Fault) {	assert(cpu->fetch_fault_count[thread_number] > 0);	cpu->fetch_fault_count[thread_number]--;    }    squashed = true;}voidDynInst::setCPSeq(InstSeqNum seq) {    correctPathSeq = seq;    if (trace_data) {	trace_data->setCPSeq(seq);    }}DynInst::DynInst(StaticInstPtr<TheISA> &_staticInst)    : staticInst(_staticInst), trace_data(NULL){    eff_addr = MemReq::inval_addr;    spec_mem_write = false;    recover_inst = false;    spec_mode = false;    btb_missed = false;    squashed = false;    serializing_inst = false;#ifndef NOHASH    thishash.insert(this, this);    if (++instcount > 2048) {	my_hash_t::iterator iter = thishash.begin();	my_hash_t::iterator end = thishash.end();	while (iter != end) {	    cprintf("hash_t, addr = %#x\n"		    "        valid = %#08x\n"		    "        spec_mode = %d\n",		    (void*)*iter, (*iter).second->valid,		    (*iter).second->spec_mode);	    ++iter;	}	//thishash.DumpData();	panic("Too many insts.\n\tcycle = %n\n\tdeletecount = %d\n"	      "\tinstcount = %d\n", curTick, deletecount, instcount);    }#endif}DynInst::~DynInst(){    if (spec_mem_write) {	// Remove effects of this instruction from speculative memory	xc->spec_mem->erase(eff_addr);    }#ifndef NOHASH    my_hash_t::iterator i = thishash.find(this);    thishash.Remove(i);    --instcount;#endif}FunctionalMemory *DynInst::getMemory(void){    return (spec_mode ? xc->spec_mem : xc->mem);}IntReg *DynInst::getIntegerRegs(void){    return (spec_mode ? xc->specIntRegFile : xc->regs.intRegFile);}voidDynInst::prefetch(Addr addr, unsigned flags){    // This is the "functional" implementation of prefetch.  Not much    // happens here since prefetches don't affect the architectural    // state.    // Generate a MemReq so we can translate the effective address.    MemReqPtr req = new MemReq(addr, xc, 1, flags);    req->asid = asid;    // Prefetches never cause faults.    fault = No_Fault;    // note this is a local, not DynInst::fault    Fault trans_fault = xc->translateDataReadReq(req);    if (trans_fault == No_Fault && !(req->flags & UNCACHEABLE)) {	// It's a valid address to cacheable space.  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;    } else {	// Bogus address (invalid or uncacheable space).  Mark it by	// setting the eff_addr to InvalidAddr.	eff_addr = phys_eff_addr = MemReq::inval_addr;    }    /**     * @todo     * Replace the disjoint functional memory with a unified one and remove     * this hack.     */#if !FULL_SYSTEM    req->paddr = req->vaddr;#endif}voidDynInst::writeHint(Addr addr, int size, unsigned flags){    // Need to create a MemReq here so we can do a translation.  This    // will casue a TLB miss trap if necessary... not sure whether    // that's the best thing to do or not.  We don't really need the    // MemReq otherwise, since wh64 has no functional effect.    MemReqPtr req = new MemReq(addr, xc, size, flags);    req->asid = asid;    fault = xc->translateDataWriteReq(req);    if (fault == No_Fault && !(req->flags & UNCACHEABLE)) {	// 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;    } else {	// ignore faults & accesses to uncacheable space... treat as no-op	eff_addr = phys_eff_addr = MemReq::inval_addr;    }    store_size = size;    store_data = 0;}/** * @todo Need to find a way to get the cache block size here. */FaultDynInst::copySrcTranslate(Addr src){    static bool no_warn = true;    int blk_size = 64;    int offset = src & (blk_size - 1);    // Make sure block doesn't span page    if (no_warn && (src & (~8191)) == ((src + blk_size) & (~8191))) {	warn("Copied block source spans pages.");	no_warn = false;    }    MemReqPtr req = new MemReq(src & ~(blk_size - 1), xc, blk_size);    req->asid = asid;    // translate to physical address    Fault fault = xc->translateDataReadReq(req);        assert(fault != Alignment_Fault);    if (fault == No_Fault) {	xc->copySrcAddr = src;	xc->copySrcPhysAddr = req->paddr + offset;    } else {	xc->copySrcAddr = 0;	xc->copySrcPhysAddr = 0;    }    return fault;}/** * @todo Need to find a way to get the cache block size here. */FaultDynInst::copy(Addr dest){    static bool no_warn = true;    int blk_size = 64;    uint8_t data[blk_size];    int offset = dest & (blk_size - 1);    // Make sure block doesn't span page    if (no_warn && (dest & (~8191)) == ((dest + blk_size) & (~8191))) {	no_warn = false;	warn("Copied block destination spans pages. ");    }    FunctionalMemory *mem = (xc->misspeculating()) ? xc->spec_mem : xc->mem;    MemReqPtr req = new MemReq(dest & ~(blk_size - 1), xc, blk_size);    req->asid = asid;    // translate to physical address    Fault fault = xc->translateDataWriteReq(req);        assert(fault != Alignment_Fault);    if (fault == No_Fault) {	Addr dest_addr = req->paddr + offset;	// Need to read straight from memory since we have more than 8 bytes.	req->paddr = xc->copySrcPhysAddr;	mem->read(req, data);	req->paddr = dest_addr;	mem->write(req, data);    }    return fault;}voidDynInst::dump(){    cprintf("#%d T%d S%d : %#08x %s\n",	    fetch_seq, thread_number, spec_mode,	    PC, staticInst->disassemble(PC));}void DynInst::dump(std::string &outstring){    outstring = csprintf("#%d T%d S%d : %#08x %s",			 fetch_seq, thread_number, spec_mode,			 PC, staticInst->disassemble(PC));}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区中文字幕| 久久久美女艺术照精彩视频福利播放| 在线观看av一区二区| 日韩欧美中文字幕一区| 中文字幕中文字幕在线一区 | 中文字幕成人在线观看| 亚洲国产精品久久久久秋霞影院| 韩国v欧美v亚洲v日本v| 欧美二区在线观看| 国产精品妹子av| 激情成人午夜视频| 欧美精品久久一区| 亚洲人成网站精品片在线观看| 在线国产亚洲欧美| 国产精品视频免费看| 久久99蜜桃精品| 欧美日韩一区二区三区在线| 亚洲图片你懂的| 成人黄色一级视频| 久久九九久久九九| 国产在线精品免费av| 欧美一区二区三区免费大片| 亚洲一区免费在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产嫩草影院久久久久| 国产老妇另类xxxxx| 日韩欧美中文字幕精品| 蜜桃一区二区三区在线| 7777精品伊人久久久大香线蕉的| 亚洲国产一区在线观看| 欧美曰成人黄网| 亚洲国产日韩a在线播放性色| 在线视频综合导航| 亚洲靠逼com| 在线观看中文字幕不卡| 亚洲国产裸拍裸体视频在线观看乱了| av在线免费不卡| 亚洲欧美乱综合| 91久久线看在观草草青青| 亚洲日本一区二区三区| 91黄色在线观看| 亚洲国产日韩精品| 欧美高清性hdvideosex| 99久久综合狠狠综合久久| 亚洲视频一区在线观看| 色香蕉成人二区免费| 一区二区三区在线视频免费观看 | 理论片日本一区| 欧美不卡一区二区三区四区| 国产综合色视频| 国产精品全国免费观看高清 | 欧美日韩精品三区| 日韩高清在线一区| 久久这里只有精品首页| 成人av免费网站| 亚洲精品亚洲人成人网在线播放| 欧美日韩一区二区三区免费看| 日本午夜精品视频在线观看 | 欧美一级理论性理论a| 激情亚洲综合在线| 亚洲欧洲色图综合| 欧美精品高清视频| 国产高清视频一区| 成人免费在线播放视频| 亚洲视频一二三| 欧美精品123区| 成人中文字幕在线| 亚洲一区在线观看视频| 欧美成人女星排名| 91农村精品一区二区在线| 奇米影视7777精品一区二区| 国产精品入口麻豆原神| 欧美美女直播网站| 国产99久久久国产精品潘金 | 男女男精品视频| 国产精品妹子av| 91精品国产美女浴室洗澡无遮挡| 国产精品中文欧美| 五月天丁香久久| 国产精品欧美一区二区三区| 欧美日韩一区二区在线观看视频| 国产成人精品亚洲日本在线桃色| 亚洲国产三级在线| 亚洲欧洲美洲综合色网| 欧美不卡一区二区| 欧美久久久久久久久久 | 免费成人性网站| 最新国产の精品合集bt伙计| 精品国产乱码久久久久久牛牛| 91女神在线视频| 成人小视频免费在线观看| 日韩精品免费视频人成| 亚洲男女毛片无遮挡| 久久久精品tv| 精品免费日韩av| 4438x亚洲最大成人网| 一本色道久久加勒比精品 | 午夜免费久久看| 亚洲视频中文字幕| 国产精品国产三级国产a| 精品国产一区二区在线观看| 制服丝袜日韩国产| 欧美视频一区在线观看| 色婷婷综合激情| 99re这里都是精品| 99这里只有精品| 丁香网亚洲国际| 国产91精品精华液一区二区三区| 捆绑变态av一区二区三区| 五月天激情小说综合| 亚洲午夜在线观看视频在线| 亚洲免费看黄网站| 国产精品大尺度| 成人欧美一区二区三区白人| 欧美激情中文不卡| 国产精品污网站| 国产精品短视频| 亚洲人一二三区| 国产不卡高清在线观看视频| 国产美女一区二区| 国产久卡久卡久卡久卡视频精品| 国产在线国偷精品产拍免费yy| 极品少妇xxxx精品少妇| 国产麻豆日韩欧美久久| 国产成人免费在线| 成人黄色小视频| 91污片在线观看| 欧美综合视频在线观看| 欧美四级电影在线观看| 欧美精品色综合| 欧美电影免费观看高清完整版在线 | 午夜欧美视频在线观看| 日韩国产一区二| 精品在线播放午夜| 国产高清在线观看免费不卡| 99免费精品在线观看| 日本道免费精品一区二区三区| 欧美日韩一区在线| 欧美va日韩va| 中文一区二区完整视频在线观看| 亚洲日本va午夜在线影院| 亚洲成人av一区| 激情小说欧美图片| av一区二区三区黑人| 欧美揉bbbbb揉bbbbb| 日韩午夜精品视频| 中文字幕在线一区| 丝袜诱惑制服诱惑色一区在线观看 | 一区二区三区欧美激情| 日韩精品91亚洲二区在线观看| 韩国av一区二区三区四区| 成人av资源网站| 欧美日韩国产综合久久| 精品久久久久久久久久久久包黑料| 国产亚洲短视频| 性做久久久久久| 成人亚洲一区二区一| 欧美精品久久一区二区三区| 中文字幕精品一区二区三区精品| 亚洲一区二区中文在线| 国产精品综合二区| 欧美日韩综合色| 国产精品女同互慰在线看| 一本大道久久a久久精二百| 9191精品国产综合久久久久久| 色噜噜狠狠一区二区三区果冻| 日韩三级在线观看| 亚洲视频在线一区| 国产麻豆91精品| 欧美日韩www| 亚洲欧美偷拍另类a∨色屁股| 麻豆精品一区二区av白丝在线| 91色视频在线| 久久蜜桃一区二区| 免费国产亚洲视频| 在线观看欧美精品| 亚洲同性gay激情无套| 国精产品一区一区三区mba视频| 欧美影视一区二区三区| 国产精品福利一区二区| 免费成人在线观看视频| 欧美日韩的一区二区| 伊人开心综合网| 91一区二区三区在线观看| 国产色91在线| 精品午夜久久福利影院| 日韩一级欧美一级| 亚洲a一区二区| 欧美写真视频网站| 亚洲乱码中文字幕综合| bt7086福利一区国产| 国产亚洲精品福利| 激情综合色综合久久| 日韩欧美电影一区| 蜜桃久久精品一区二区| 欧美剧情片在线观看| 午夜av电影一区| 欧美一区二区大片| 奇米影视在线99精品| 日韩欧美成人午夜|