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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? isa_desc

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
??
?? 第 1 頁 / 共 5 頁
字號:
	  public:	    /// Constructor	    EAComp(MachInst machInst);            %(BasicExecDeclare)s	};	/**	 * "Fake" memory access instruction class for "%(mnemonic)s".	 */	class MemAcc : public %(base_class)s	{	  public:	    /// Constructor	    MemAcc(MachInst machInst);            %(BasicExecDeclare)s	};      public:	/// Constructor.	%(class_name)s(MachInst machInst);	%(BasicExecDeclare)s    };}};def template LoadStoreConstructor {{    /** TODO: change op_class to AddrGenOp or something (requires     * creating new member of OpClass enum in op_class.hh, updating     * config files, etc.). */    inline %(class_name)s::EAComp::EAComp(MachInst machInst)	: %(base_class)s("%(mnemonic)s (EAComp)", machInst, IntAluOp)    {	%(ea_constructor)s;    }    inline %(class_name)s::MemAcc::MemAcc(MachInst machInst)	: %(base_class)s("%(mnemonic)s (MemAcc)", machInst, %(op_class)s)    {	%(memacc_constructor)s;    }    inline %(class_name)s::%(class_name)s(MachInst machInst)	 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,			  new EAComp(machInst), new MemAcc(machInst))    {	%(constructor)s;    }}};def template EACompExecute {{    Fault    %(class_name)s::EAComp::execute(%(CPU_exec_context)s *xc,				   Trace::InstRecord *traceData) const    {	Addr EA;	Fault fault = No_Fault;	%(fp_enable_check)s;	%(op_decl)s;	%(op_rd)s;	%(code)s;	if (fault == No_Fault) {	    %(op_wb)s;	    xc->setEA(EA);	}	return fault;    }}};def template MemAccExecute {{    Fault    %(class_name)s::MemAcc::execute(%(CPU_exec_context)s *xc,				   Trace::InstRecord *traceData) const    {	Addr EA;	Fault fault = No_Fault;	%(fp_enable_check)s;	%(op_decl)s;	%(op_nonmem_rd)s;	EA = xc->getEA();		if (fault == No_Fault) {	    %(op_mem_rd)s;	    %(code)s;	}	if (fault == No_Fault) {	    %(op_mem_wb)s;	}	if (fault == No_Fault) {	    %(postacc_code)s;	}	if (fault == No_Fault) {	    %(op_nonmem_wb)s;	}	return fault;    }}};def template LoadStoreExecute {{    Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,				  Trace::InstRecord *traceData) const    {	Addr EA;	Fault fault = No_Fault;	%(fp_enable_check)s;	%(op_decl)s;	%(op_nonmem_rd)s;	%(ea_code)s;	if (fault == No_Fault) {	    %(op_mem_rd)s;	    %(memacc_code)s;	}	if (fault == No_Fault) {	    %(op_mem_wb)s;	}	if (fault == No_Fault) {	    %(postacc_code)s;	}	if (fault == No_Fault) {	    %(op_nonmem_wb)s;	}	return fault;    }}};def template PrefetchExecute {{    Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,				  Trace::InstRecord *traceData) const    {	Addr EA;	Fault fault = No_Fault;	%(fp_enable_check)s;	%(op_decl)s;	%(op_nonmem_rd)s;	%(ea_code)s;	if (fault == No_Fault) {	    xc->prefetch(EA, memAccessFlags);	}	return No_Fault;    }}};// load instructions use Ra as dest, so check for// Ra == 31 to detect nopsdef template LoadNopCheckDecode {{ {     AlphaStaticInst *i = new %(class_name)s(machInst);     if (RA == 31) {	 i = makeNop(i);     }     return i; }}};// for some load instructions, Ra == 31 indicates a prefetch (not a nop)def template LoadPrefetchCheckDecode {{ {     if (RA != 31) {	 return new %(class_name)s(machInst);     }     else {	 return new %(class_name)sPrefetch(machInst);     } }}};let {{def LoadStoreBase(name, Name, ea_code, memacc_code, postacc_code = '',		  base_class = 'MemoryDisp32', flags = [],		  decode_template = BasicDecode,		  exec_template = LoadStoreExecute):    # Segregate flags into instruction flags (handled by InstObjParams)    # and memory access flags (handled here).    # Would be nice to autogenerate this list, but oh well.    valid_mem_flags = ['LOCKED', 'NO_FAULT', 'EVICT_NEXT', 'PF_EXCLUSIVE']    mem_flags =  [f for f in flags if f in valid_mem_flags]    inst_flags = [f for f in flags if f not in valid_mem_flags]    # add hook to get effective addresses into execution trace output.    ea_code += '\nif (traceData) { traceData->setAddr(EA); }\n'    # generate code block objects    ea_cblk = CodeBlock(ea_code)    memacc_cblk = CodeBlock(memacc_code)    postacc_cblk = CodeBlock(postacc_code)    # Some CPU models execute the memory operation as an atomic unit,    # while others want to separate them into an effective address    # computation and a memory access operation.  As a result, we need    # to generate three StaticInst objects.  Note that the latter two    # are nested inside the larger "atomic" one.    # generate InstObjParams for EAComp object    ea_iop = InstObjParams(name, Name, base_class, ea_cblk, inst_flags)        # generate InstObjParams for MemAcc object    memacc_iop = InstObjParams(name, Name, base_class, memacc_cblk, inst_flags)    # in the split execution model, the MemAcc portion is responsible    # for the post-access code.    memacc_iop.postacc_code = postacc_cblk.code    # generate InstObjParams for unified execution    cblk = CodeBlock(ea_code + memacc_code + postacc_code)    iop = InstObjParams(name, Name, base_class, cblk, inst_flags)    iop.ea_constructor = ea_cblk.constructor    iop.ea_code = ea_cblk.code    iop.memacc_constructor = memacc_cblk.constructor    iop.memacc_code = memacc_cblk.code    iop.postacc_code = postacc_cblk.code    if mem_flags:        s = '\n\tmemAccessFlags = ' + string.join(mem_flags, '|') + ';'        iop.constructor += s        memacc_iop.constructor += s    # (header_output, decoder_output, decode_block, exec_output)    return (LoadStoreDeclare.subst(iop), LoadStoreConstructor.subst(iop),	    decode_template.subst(iop),            EACompExecute.subst(ea_iop)            + MemAccExecute.subst(memacc_iop)            + exec_template.subst(iop))}};def format LoadOrNop(ea_code, memacc_code, *flags) {{    (header_output, decoder_output, decode_block, exec_output) = \        LoadStoreBase(name, Name, ea_code, memacc_code, flags = flags,                      decode_template = LoadNopCheckDecode)}};// Note that the flags passed in apply only to the prefetch versiondef format LoadOrPrefetch(ea_code, memacc_code, *pf_flags) {{    # declare the load instruction object and generate the decode block    (header_output, decoder_output, decode_block, exec_output) = \	LoadStoreBase(name, Name, ea_code, memacc_code,		      decode_template = LoadPrefetchCheckDecode)    # Declare the prefetch instruction object.    # convert flags from tuple to list to make them mutable    pf_flags = list(pf_flags) + ['IsMemRef', 'IsLoad', 'IsDataPrefetch', 'MemReadOp', 'NO_FAULT']    (pf_header_output, pf_decoder_output, _, pf_exec_output) = \	LoadStoreBase(name, Name + 'Prefetch', ea_code, '',		      flags = pf_flags, exec_template = PrefetchExecute)    header_output += pf_header_output    decoder_output += pf_decoder_output    exec_output += pf_exec_output}};def format Store(ea_code, memacc_code, *flags) {{    (header_output, decoder_output, decode_block, exec_output) = \        LoadStoreBase(name, Name, ea_code, memacc_code, flags = flags)}};def format StoreCond(ea_code, memacc_code, postacc_code, *flags) {{    (header_output, decoder_output, decode_block, exec_output) = \        LoadStoreBase(name, Name, ea_code, memacc_code, postacc_code,                      flags = flags)}};// Use 'MemoryNoDisp' as base: for wh64, fetch, ecbdef format MiscPrefetch(ea_code, memacc_code, *flags) {{    (header_output, decoder_output, decode_block, exec_output) = \        LoadStoreBase(name, Name, ea_code, memacc_code, flags = flags,                      base_class = 'MemoryNoDisp')}};//////////////////////////////////////////////////////////////////////// Control transfer instructions//output header {{    /**     * Base class for instructions whose disassembly is not purely a     * function of the machine instruction (i.e., it depends on the     * PC).  This class overrides the disassemble() method to check     * the PC and symbol table values before re-using a cached     * disassembly string.  This is necessary for branches and jumps,     * where the disassembly string includes the target address (which     * may depend on the PC and/or symbol table).     */    class PCDependentDisassembly : public AlphaStaticInst    {      protected:	/// Cached program counter from last disassembly	mutable Addr cachedPC;	/// Cached symbol table pointer from last disassembly	mutable const SymbolTable *cachedSymtab;	/// Constructor	PCDependentDisassembly(const char *mnem, MachInst _machInst,			       OpClass __opClass)	    : AlphaStaticInst(mnem, _machInst, __opClass),	      cachedPC(0), cachedSymtab(0)	{	}	const std::string &	disassemble(Addr pc, const SymbolTable *symtab) const;    };    /**     * Base class for branches (PC-relative control transfers),     * conditional or unconditional.     */    class Branch : public PCDependentDisassembly    {      protected:	/// Displacement to target address (signed).	int32_t disp;	/// Constructor.	Branch(const char *mnem, MachInst _machInst, OpClass __opClass)	    : PCDependentDisassembly(mnem, _machInst, __opClass),	      disp(BRDISP << 2)	{	}	Addr branchTarget(Addr branchPC) const;	std::string	generateDisassembly(Addr pc, const SymbolTable *symtab) const;    };    /**     * Base class for jumps (register-indirect control transfers).  In     * the Alpha ISA, these are always unconditional.     */    class Jump : public PCDependentDisassembly    {      protected:	/// Displacement to target address (signed).	int32_t disp;      public:	/// Constructor	Jump(const char *mnem, MachInst _machInst, OpClass __opClass)	    : PCDependentDisassembly(mnem, _machInst, __opClass),	      disp(BRDISP)	{	}	Addr branchTarget(ExecContext *xc) const;	std::string	generateDisassembly(Addr pc, const SymbolTable *symtab) const;    };}};output decoder {{    Addr    Branch::branchTarget(Addr branchPC) const    {	return branchPC + 4 + disp;    }    Addr    Jump::branchTarget(ExecContext *xc) const    {	Addr NPC = xc->readPC() + 4;	uint64_t Rb = xc->readIntReg(_srcRegIdx[0]);	return (Rb & ~3) | (NPC & 1);    }    const std::string &    PCDependentDisassembly::disassemble(Addr pc,					const SymbolTable *symtab) const    {	if (!cachedDisassembly ||	    pc != cachedPC || symtab != cachedSymtab)	{	    if (cachedDisassembly)		delete cachedDisassembly;	    cachedDisassembly =		new std::string(generateDisassembly(pc, symtab));	    cachedPC = pc;	    cachedSymtab = symtab;	}	return *cachedDisassembly;    }    std::string    Branch::generateDisassembly(Addr pc, const SymbolTable *symtab) const    {	std::stringstream ss;	ccprintf(ss, "%-10s ", mnemonic);	// There's only one register arg (RA), but it could be	// either a source (the condition for conditional	// branches) or a destination (the link reg for	// unconditional branches)	if (_numSrcRegs > 0) {	    printReg(ss, _srcRegIdx[0]);	    ss << ",";	}	else if (_numDestRegs > 0) {	    printReg(ss, _destRegIdx[0]);	    ss << ",";	}#ifdef SS_COMPATIBLE_DISASSEMBLY	if (_numSrcRegs == 0 && _numDestRegs == 0) {	    printReg(ss, 31);	    ss << ",";	}#endif	Addr target = pc + 4 + disp;	std::string str;	if (symtab && symtab->findSymbol(target, str))	    ss << str;	else 	    ccprintf(ss, "0x%x", target);	return ss.str();    }    std::string    Jump::generateDisassembly(Addr pc, const SymbolTable *symtab) const    {	std::stringstream ss;	ccprintf(ss, "%-10s ", mnemonic);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区av电影| 欧美午夜精品久久久| 色综合天天性综合| 在线电影院国产精品| 国产精品日日摸夜夜摸av| 婷婷综合五月天| 不卡免费追剧大全电视剧网站| 欧美丰满一区二区免费视频| 最新不卡av在线| 国产不卡高清在线观看视频| 欧美一区二区三区免费视频| 亚洲精品久久嫩草网站秘色| 国产一区二区三区四| 欧美一区二区观看视频| 亚洲黄色小说网站| 99久久精品免费看国产免费软件| 欧美videofree性高清杂交| 亚洲无人区一区| 97se亚洲国产综合在线| 亚洲国产精品t66y| 国产一区二区影院| 日韩免费一区二区三区在线播放| 亚洲丶国产丶欧美一区二区三区| www.欧美精品一二区| 国产色婷婷亚洲99精品小说| 国内精品国产成人国产三级粉色| 日韩欧美在线影院| 日韩av午夜在线观看| 欧美高清www午色夜在线视频| 亚洲中国最大av网站| 91成人免费在线视频| 亚洲日本va在线观看| 91天堂素人约啪| 中文字幕一区二区在线观看| 成人h精品动漫一区二区三区| 欧美国产精品专区| 成人白浆超碰人人人人| 一区二区中文视频| 色国产综合视频| 一区二区三区蜜桃网| 欧美三级在线看| 午夜视频一区在线观看| 91精品国产91热久久久做人人 | 成人开心网精品视频| 久久蜜桃香蕉精品一区二区三区| 精品一区二区三区免费| 国产视频一区二区三区在线观看| 国产91精品入口| 日韩一区在线播放| 色婷婷综合激情| 亚洲国产乱码最新视频 | 4438x成人网最大色成网站| 午夜日韩在线观看| 欧美第一区第二区| 国产91在线看| 亚洲综合色在线| 欧美一级二级在线观看| 高清视频一区二区| 亚洲第一成年网| 2023国产精品自拍| 一本到不卡精品视频在线观看 | 色综合咪咪久久| 午夜成人在线视频| 久久亚洲精品国产精品紫薇| 99久久99久久综合| 日韩激情一二三区| 国产精品网站一区| 欧美日韩高清一区二区三区| 韩国v欧美v亚洲v日本v| 亚洲色图丝袜美腿| 日韩美女视频在线| 色综合久久88色综合天天| 美女看a上一区| 国产精品久久久久久久久免费樱桃 | 日韩一区二区在线看片| 成人激情视频网站| 青青草原综合久久大伊人精品| 国产日韩欧美电影| 这里只有精品视频在线观看| 成人高清伦理免费影院在线观看| 同产精品九九九| 亚洲精品中文在线| 欧美mv日韩mv| 欧美视频一区二区在线观看| 国产成人aaaa| 久久国内精品自在自线400部| 中文字幕一区av| 精品伦理精品一区| 欧美日韩激情一区二区三区| 成年人午夜久久久| 国产一区二区在线观看视频| 婷婷综合五月天| 一区二区在线观看免费| 国产精品无人区| 久久综合久久99| 日韩视频一区二区三区在线播放| 一本大道久久a久久精二百| 成人妖精视频yjsp地址| 韩日av一区二区| 日韩高清国产一区在线| 亚洲第一电影网| 一区二区三区在线免费观看| 国产精品久久三| 国产日韩欧美电影| 久久综合色天天久久综合图片| 91精品国产综合久久福利软件| 欧美亚男人的天堂| 91麻豆国产在线观看| av电影在线观看一区| 成人午夜精品在线| 国产sm精品调教视频网站| 国产在线视频精品一区| 老司机午夜精品| 国产揄拍国内精品对白| 国产在线精品国自产拍免费| 国产一区二区视频在线| 国产精品一区二区视频| 国产风韵犹存在线视精品| 国产精品一区二区在线看| 国产精品小仙女| 国产精品一区二区x88av| 成人永久免费视频| av影院午夜一区| 91官网在线免费观看| 欧美日韩一区 二区 三区 久久精品 | 蜜臀av一区二区在线免费观看| 丝袜诱惑亚洲看片| 日日嗨av一区二区三区四区| 日韩精品一区第一页| 久久精品国产色蜜蜜麻豆| 韩国成人福利片在线播放| 风间由美中文字幕在线看视频国产欧美 | 亚洲欧洲精品天堂一级| 亚洲日韩欧美一区二区在线| 亚洲国产中文字幕在线视频综合| 天天色天天爱天天射综合| 激情亚洲综合在线| 不卡的电视剧免费网站有什么| 欧美亚洲国产bt| 日韩免费一区二区| 国产精品视频在线看| 亚洲综合视频在线| 精品在线视频一区| a亚洲天堂av| 91麻豆精品国产91久久久久| 2023国产精品| 夜夜嗨av一区二区三区中文字幕| 日韩av电影一区| 国产99久久久国产精品免费看| 色激情天天射综合网| 欧美大黄免费观看| 亚洲靠逼com| 国产一区二区三区av电影| 色综合久久中文综合久久牛| 欧美一区二区三区在线| 亚洲国产电影在线观看| 亚洲成人免费av| 国产成人精品aa毛片| 欧美日韩成人综合在线一区二区| 久久一留热品黄| 亚洲第一福利视频在线| 成人精品亚洲人成在线| 欧美日韩精品一区二区| 中文字幕av一区 二区| 日韩av网站免费在线| 91香蕉视频污在线| 久久女同性恋中文字幕| 午夜欧美大尺度福利影院在线看| 成人中文字幕在线| 国产精品久久久久久亚洲毛片 | 国产欧美一区二区精品秋霞影院 | 欧美国产成人精品| 蜜臀va亚洲va欧美va天堂| 91官网在线免费观看| 国产天堂亚洲国产碰碰| 日本三级韩国三级欧美三级| 日本福利一区二区| 国产精品久久久久天堂| 国产一区二区三区四区五区入口| 777亚洲妇女| 亚洲一区二区高清| 色综合久久久久久久久| 国产精品丝袜黑色高跟| 国内精品国产成人国产三级粉色| 欧美美女激情18p| 一卡二卡三卡日韩欧美| av亚洲精华国产精华| 国产日韩欧美高清在线| 国产一区二区三区美女| 日韩你懂的在线播放| 日本va欧美va精品| 91精品国产综合久久香蕉的特点| 一区二区久久久久| 91麻豆文化传媒在线观看| 中文字幕在线观看一区| heyzo一本久久综合| 国产精品久久久久桃色tv| 成人激情免费电影网址| 国产精品丝袜一区| 成人av在线播放网站|