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

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

?? isa_desc

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
??
?? 第 1 頁 / 共 5 頁
字號:
	ss << (int)imm; 	if (_numDestRegs > 0) {	    ss << ",";	    printReg(ss, _destRegIdx[0]);	}	return ss.str();    }}};def template RegOrImmDecode {{ {     AlphaStaticInst *i =         (IMM) ? (AlphaStaticInst *)new %(class_name)sImm(machInst)               : (AlphaStaticInst *)new %(class_name)s(machInst);     if (RC == 31) {         i = makeNop(i);     }     return i; }}};// Primary format for integer operate instructions:// - Generates both reg-reg and reg-imm versions if Rb_or_imm is used.// - Generates NOP if RC == 31.def format IntegerOperate(code, *opt_flags) {{    # If the code block contains 'Rb_or_imm', we define two instructions,    # one using 'Rb' and one using 'imm', and have the decoder select    # the right one.    uses_imm = (code.find('Rb_or_imm') != -1)    if uses_imm:	orig_code = code        # base code is reg version:        # rewrite by substituting 'Rb' for 'Rb_or_imm'	code = re.sub(r'Rb_or_imm', 'Rb', orig_code)        # generate immediate version by substituting 'imm'        # note that imm takes no extenstion, so we extend        # the regexp to replace any extension as well        imm_code = re.sub(r'Rb_or_imm(\.\w+)?', 'imm', orig_code)    # generate declaration for register version    cblk = CodeBlock(code)    iop = InstObjParams(name, Name, 'AlphaStaticInst', cblk, opt_flags)    header_output = BasicDeclare.subst(iop)    decoder_output = BasicConstructor.subst(iop)    exec_output = BasicExecute.subst(iop)    if uses_imm:        # append declaration for imm version        imm_cblk = CodeBlock(imm_code)        imm_iop = InstObjParams(name, Name + 'Imm', 'IntegerImm', imm_cblk,				opt_flags)	header_output += BasicDeclare.subst(imm_iop)        decoder_output += BasicConstructor.subst(imm_iop)        exec_output += BasicExecute.subst(imm_iop)        # decode checks IMM bit to pick correct version	decode_block = RegOrImmDecode.subst(iop)    else:        # no imm version: just check for nop        decode_block = OperateNopCheckDecode.subst(iop)}};//////////////////////////////////////////////////////////////////////// Floating-point instructions////	Note that many FP-type instructions which do not support all the//	various rounding & trapping modes use the simpler format//	BasicOperateWithNopCheck.//output exec {{    /// Check "FP enabled" machine status bit.  Called when executing any FP    /// instruction in full-system mode.    /// @retval Full-system mode: No_Fault if FP is enabled, Fen_Fault    /// if not.  Non-full-system mode: always returns No_Fault.#if FULL_SYSTEM    inline Fault checkFpEnableFault(%(CPU_exec_context)s *xc)    {	Fault fault = No_Fault;	// dummy... this ipr access should not fault	if (!EV5::ICSR_FPE(xc->readIpr(AlphaISA::IPR_ICSR, fault))) {	    fault = Fen_Fault;	}	return fault;    }#else    inline Fault checkFpEnableFault(%(CPU_exec_context)s *xc)    {	return No_Fault;    }#endif}};output header {{    /**     * Base class for general floating-point instructions.  Includes     * support for various Alpha rounding and trapping modes.  Only FP     * instructions that require this support are derived from this     * class; the rest derive directly from AlphaStaticInst.     */    class AlphaFP : public AlphaStaticInst    {      public:	/// Alpha FP rounding modes.	enum RoundingMode {	    Chopped = 0,	///< round toward zero	    Minus_Infinity = 1, ///< round toward minus infinity	    Normal = 2,		///< round to nearest (default)	    Dynamic = 3,	///< use FPCR setting (in instruction)	    Plus_Infinity = 3	///< round to plus inifinity (in FPCR)	};	/// Alpha FP trapping modes.	/// For instructions that produce integer results, the	/// "Underflow Enable" modes really mean "Overflow Enable", and	/// the assembly modifier is V rather than U.	enum TrappingMode {	    /// default: nothing enabled	    Imprecise = 0,		   ///< no modifier	    /// underflow/overflow traps enabled, inexact disabled	    Underflow_Imprecise = 1,	   ///< /U or /V	    Underflow_Precise = 5,	   ///< /SU or /SV	    /// underflow/overflow and inexact traps enabled	    Underflow_Inexact_Precise = 7  ///< /SUI or /SVI	};      protected:	/// Map Alpha rounding mode to C99 constants from <fenv.h>.	static const int alphaToC99RoundingMode[];	/// Map enum RoundingMode values to disassembly suffixes.	static const char *roundingModeSuffix[];	/// Map enum TrappingMode values to FP disassembly suffixes.	static const char *fpTrappingModeSuffix[];	/// Map enum TrappingMode values to integer disassembly suffixes.	static const char *intTrappingModeSuffix[];	/// This instruction's rounding mode.	RoundingMode roundingMode;	/// This instruction's trapping mode.	TrappingMode trappingMode;	/// Have we warned about this instruction's unsupported	/// rounding mode (if applicable)?	mutable bool warnedOnRounding;	/// Have we warned about this instruction's unsupported	/// trapping mode (if applicable)?	mutable bool warnedOnTrapping;	/// Constructor	AlphaFP(const char *mnem, MachInst _machInst, OpClass __opClass)	    : AlphaStaticInst(mnem, _machInst, __opClass),	      roundingMode((enum RoundingMode)FP_ROUNDMODE),	      trappingMode((enum TrappingMode)FP_TRAPMODE),	      warnedOnRounding(false),	      warnedOnTrapping(false)	{	}	int getC99RoundingMode(uint64_t fpcr_val) const;	// This differs from the AlphaStaticInst version only in	// printing suffixes for non-default rounding & trapping modes.	std::string	generateDisassembly(Addr pc, const SymbolTable *symtab) const;    };}};output decoder {{    int    AlphaFP::getC99RoundingMode(uint64_t fpcr_val) const    {	if (roundingMode == Dynamic) {	    return alphaToC99RoundingMode[bits(fpcr_val, 59, 58)];	}	else {	    return alphaToC99RoundingMode[roundingMode];	}    }    std::string    AlphaFP::generateDisassembly(Addr pc, const SymbolTable *symtab) const    {	std::string mnem_str(mnemonic);#ifndef SS_COMPATIBLE_DISASSEMBLY	std::string suffix("");	suffix += ((_destRegIdx[0] >= FP_Base_DepTag)		   ? fpTrappingModeSuffix[trappingMode]		   : intTrappingModeSuffix[trappingMode]);	suffix += roundingModeSuffix[roundingMode];	if (suffix != "") {	    mnem_str = csprintf("%s/%s", mnemonic, suffix);	}#endif	std::stringstream ss;	ccprintf(ss, "%-10s ", mnem_str.c_str());	// just print the first two source regs... if there's	// a third one, it's a read-modify-write dest (Rc),	// e.g. for CMOVxx	if (_numSrcRegs > 0) {	    printReg(ss, _srcRegIdx[0]);	}	if (_numSrcRegs > 1) {	    ss << ",";	    printReg(ss, _srcRegIdx[1]);	}	// just print the first dest... if there's a second one,	// it's generally implicit	if (_numDestRegs > 0) {	    if (_numSrcRegs > 0)		ss << ",";	    printReg(ss, _destRegIdx[0]);	}	return ss.str();    }    const int AlphaFP::alphaToC99RoundingMode[] = {	FE_TOWARDZERO,	// Chopped	FE_DOWNWARD,	// Minus_Infinity	FE_TONEAREST,	// Normal	FE_UPWARD	// Dynamic in inst, Plus_Infinity in FPCR    };    const char *AlphaFP::roundingModeSuffix[] = { "c", "m", "", "d" };    // mark invalid trapping modes, but don't fail on them, because    // you could decode anything on a misspeculated path    const char *AlphaFP::fpTrappingModeSuffix[] =	{ "", "u", "INVTM2", "INVTM3", "INVTM4", "su", "INVTM6", "sui" };    const char *AlphaFP::intTrappingModeSuffix[] =	{ "", "v", "INVTM2", "INVTM3", "INVTM4", "sv", "INVTM6", "svi" };}};// FP instruction class execute method template.  Handles non-standard// rounding modes.def template FloatingPointExecute {{    Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,				  Trace::InstRecord *traceData) const    {	if (trappingMode != Imprecise) {	    warn("%s: non-standard trapping mode not supported",		 generateDisassembly(0, NULL));	    warnedOnTrapping = true;	}	Fault fault = No_Fault;	%(fp_enable_check)s;	%(op_decl)s;	%(op_rd)s;#if USE_FENV	if (roundingMode == Normal) {	    %(code)s;	} else {	    fesetround(getC99RoundingMode(xc->readFpcr()));	    %(code)s;	    fesetround(FE_TONEAREST);	}#else	if (roundingMode != Normal && !warnedOnRounding) {	    warn("%s: non-standard rounding mode not supported",		 generateDisassembly(0, NULL));	    warnedOnRounding = true;	}	%(code)s;#endif	if (fault == No_Fault) {	    %(op_wb)s;	}	return fault;    }}};// FP instruction class execute method template where no dynamic// rounding mode control is needed.  Like BasicExecute, but includes// check & warning for non-standard trapping mode.def template FPFixedRoundingExecute {{    Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,				  Trace::InstRecord *traceData) const    {	if (trappingMode != Imprecise) {	    warn("%s: non-standard trapping mode not supported",		 generateDisassembly(0, NULL));	    warnedOnTrapping = true;	}	Fault fault = No_Fault;	%(fp_enable_check)s;	%(op_decl)s;	%(op_rd)s;	%(code)s;	if (fault == No_Fault) {	    %(op_wb)s;	}	return fault;    }}};def template FloatingPointDecode {{ {     AlphaStaticInst *i = new %(class_name)s(machInst);     if (FC == 31) {	 i = makeNop(i);     }     return i; }}};// General format for floating-point operate instructions:// - Checks trapping and rounding mode flags.  Trapping modes//   currently unimplemented (will fail).// - Generates NOP if FC == 31.def format FloatingPointOperate(code, *opt_args) {{    iop = InstObjParams(name, Name, 'AlphaFP', CodeBlock(code), opt_args)    decode_block = FloatingPointDecode.subst(iop)    header_output = BasicDeclare.subst(iop)    decoder_output = BasicConstructor.subst(iop)    exec_output = FloatingPointExecute.subst(iop)}};// Special format for cvttq where rounding mode is pre-decodeddef format FPFixedRounding(code, class_suffix, *opt_args) {{    Name += class_suffix    iop = InstObjParams(name, Name, 'AlphaFP', CodeBlock(code), opt_args)    decode_block = FloatingPointDecode.subst(iop)    header_output = BasicDeclare.subst(iop)    decoder_output = BasicConstructor.subst(iop)    exec_output = FPFixedRoundingExecute.subst(iop)}};//////////////////////////////////////////////////////////////////////// Memory-format instructions: LoadAddress, Load, Store//output header {{    /**     * Base class for general Alpha memory-format instructions.     */    class Memory : public AlphaStaticInst    {      protected:	/// Memory request flags.  See mem_req_base.hh.        unsigned memAccessFlags;	/// Pointer to EAComp object.	const StaticInstPtr<AlphaISA> eaCompPtr;	/// Pointer to MemAcc object.	const StaticInstPtr<AlphaISA> memAccPtr;	/// Constructor	Memory(const char *mnem, MachInst _machInst, OpClass __opClass,	       StaticInstPtr<AlphaISA> _eaCompPtr = nullStaticInstPtr,	       StaticInstPtr<AlphaISA> _memAccPtr = nullStaticInstPtr)	    : AlphaStaticInst(mnem, _machInst, __opClass),	      memAccessFlags(0), eaCompPtr(_eaCompPtr), memAccPtr(_memAccPtr)	{	}	std::string	generateDisassembly(Addr pc, const SymbolTable *symtab) const;      public:	const StaticInstPtr<AlphaISA> &eaCompInst() const { return eaCompPtr; }	const StaticInstPtr<AlphaISA> &memAccInst() const { return memAccPtr; }    };    /**     * Base class for memory-format instructions using a 32-bit     * displacement (i.e. most of them).     */    class MemoryDisp32 : public Memory    {      protected:	/// Displacement for EA calculation (signed).	int32_t disp;	/// Constructor.	MemoryDisp32(const char *mnem, MachInst _machInst, OpClass __opClass,		     StaticInstPtr<AlphaISA> _eaCompPtr = nullStaticInstPtr,		     StaticInstPtr<AlphaISA> _memAccPtr = nullStaticInstPtr)	    : Memory(mnem, _machInst, __opClass, _eaCompPtr, _memAccPtr),	      disp(MEMDISP)	{	}    };    /**     * Base class for a few miscellaneous memory-format insts     * that don't interpret the disp field: wh64, fetch, fetch_m, ecb.     * None of these instructions has a destination register either.     */    class MemoryNoDisp : public Memory    {      protected:	/// Constructor	MemoryNoDisp(const char *mnem, MachInst _machInst, OpClass __opClass,		     StaticInstPtr<AlphaISA> _eaCompPtr = nullStaticInstPtr,		     StaticInstPtr<AlphaISA> _memAccPtr = nullStaticInstPtr)	    : Memory(mnem, _machInst, __opClass, _eaCompPtr, _memAccPtr)	{	}	std::string	generateDisassembly(Addr pc, const SymbolTable *symtab) const;    };}};output decoder {{    std::string    Memory::generateDisassembly(Addr pc, const SymbolTable *symtab) const    {	return csprintf("%-10s %c%d,%d(r%d)", mnemonic,			flags[IsFloating] ? 'f' : 'r', RA, MEMDISP, RB);    }    std::string    MemoryNoDisp::generateDisassembly(Addr pc, const SymbolTable *symtab) const    {	return csprintf("%-10s (r%d)", mnemonic, RB);    }}};def format LoadAddress(code) {{    iop = InstObjParams(name, Name, 'MemoryDisp32', CodeBlock(code))    header_output = BasicDeclare.subst(iop)    decoder_output = BasicConstructor.subst(iop)    decode_block = BasicDecode.subst(iop)    exec_output = BasicExecute.subst(iop)}};def template LoadStoreDeclare {{    /**     * Static instruction class for "%(mnemonic)s".     */    class %(class_name)s : public %(base_class)s    {      protected:	/**	 * "Fake" effective address computation class for "%(mnemonic)s".	 */	class EAComp : public %(base_class)s	{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱码精品1区2区3区| 夫妻av一区二区| 国产女人18毛片水真多成人如厕| 成人一区二区三区视频在线观看| 午夜伊人狠狠久久| 中文字幕一区二区三区不卡| 7799精品视频| 日本韩国精品一区二区在线观看| 国产一区二区三区最好精华液| 亚洲综合久久久久| 国产精品国产三级国产aⅴ入口| 欧美疯狂性受xxxxx喷水图片| 成人的网站免费观看| 久久精品国产亚洲高清剧情介绍| 一区二区三区欧美激情| 中文字幕+乱码+中文字幕一区| 中文字幕在线免费不卡| 欧美一区二区播放| 91电影在线观看| 成人综合日日夜夜| 韩国欧美国产1区| 热久久免费视频| 亚洲成人免费电影| 亚洲精品成a人| ...中文天堂在线一区| 国产日韩欧美综合一区| 日韩免费一区二区三区在线播放| 欧美私人免费视频| 91视视频在线观看入口直接观看www| 黑人巨大精品欧美一区| 久久精品噜噜噜成人88aⅴ| 亚洲.国产.中文慕字在线| 亚洲免费观看高清完整版在线| 欧美激情中文不卡| 久久久久国产精品人| 精品sm捆绑视频| 精品国产一二三区| 精品国产sm最大网站免费看| 欧美成人女星排行榜| 日韩欧美国产wwwww| 精品理论电影在线观看| 精品嫩草影院久久| 精品免费99久久| 精品国产制服丝袜高跟| 亚洲精品在线三区| 久久亚洲一级片| 欧美激情一区二区三区在线| 国产日韩影视精品| 国产精品欧美久久久久无广告| 国产女人18水真多18精品一级做| 国产日本亚洲高清| 国产精品久久久久一区二区三区| 亚洲国产成人私人影院tom| 国产精品理论片| 亚洲免费三区一区二区| 亚洲人妖av一区二区| 亚洲私人黄色宅男| 夜夜精品视频一区二区 | 欧美日韩国产一区| 欧美精品日韩精品| 精品日韩一区二区三区| 国产嫩草影院久久久久| 国产精品黄色在线观看| 亚洲欧美日韩精品久久久久| 亚洲大尺度视频在线观看| 热久久久久久久| 国产成人aaa| 色天使久久综合网天天| 欧美剧在线免费观看网站| 欧美tk—视频vk| 国产精品久久久久久久久果冻传媒 | 日精品一区二区三区| 精品一区精品二区高清| yourporn久久国产精品| 欧美性猛交xxxx乱大交退制版| 欧美一级欧美三级在线观看| 国产午夜精品美女毛片视频| 亚洲男人天堂av| 日本不卡在线视频| 国产91高潮流白浆在线麻豆| 色综合久久中文字幕| 欧美一区二区三区思思人| 国产欧美一区二区三区沐欲| 一区二区三区四区高清精品免费观看| 视频一区二区欧美| 国产成人亚洲综合a∨猫咪| 91福利资源站| 久久久久久久久久久久久夜| 亚洲影院免费观看| 国产一区不卡在线| 欧美日韩精品是欧美日韩精品| 久久综合国产精品| 亚洲一区日韩精品中文字幕| 国产剧情一区在线| 欧美日韩精品系列| 亚洲欧洲精品天堂一级 | 国产精品伦理在线| 午夜精品久久久久久久久久 | 精品一区二区免费看| 91蜜桃在线观看| 久久午夜色播影院免费高清| 亚洲一区视频在线| 成人免费高清在线观看| 日韩女优制服丝袜电影| 亚洲综合免费观看高清完整版在线| 国模无码大尺度一区二区三区| 欧美三电影在线| 综合久久一区二区三区| 国产一区二区三区久久悠悠色av | 国产人成亚洲第一网站在线播放| 天天色天天操综合| 色狠狠一区二区| 中文字幕精品三区| 久久狠狠亚洲综合| 欧美精品vⅰdeose4hd| 亚洲日本免费电影| 成人午夜免费视频| 精品国产乱码久久| 美女网站一区二区| 欧美日韩激情在线| 亚洲一区二区三区四区在线| 99精品视频在线免费观看| 久久精品一区二区| 韩国av一区二区三区四区| 欧美一区二区三区视频免费播放| 亚洲一区二区三区四区中文字幕| 99麻豆久久久国产精品免费| 国产拍欧美日韩视频二区| 国产一区二区精品久久99| 日韩精品中文字幕一区二区三区| 日韩不卡在线观看日韩不卡视频| 欧美日韩一区高清| 亚洲成人一区二区| 欧美日韩免费电影| 视频一区视频二区中文字幕| 欧美视频中文一区二区三区在线观看| 亚洲免费在线观看视频| 91丨九色丨黑人外教| 亚洲免费观看高清| 在线观看成人小视频| 亚洲一区二区三区美女| 精品污污网站免费看| 午夜精品久久久久久久| 欧美日本国产一区| 喷水一区二区三区| 日韩欧美一级在线播放| 精品一区二区三区在线播放| www激情久久| 成人午夜精品在线| 国产精品久久久久久久久晋中 | 久久精品国产精品青草| 日韩欧美国产电影| 国产精品一区二区久久不卡| 日本一区二区三区久久久久久久久不| 国产成人av自拍| 专区另类欧美日韩| 欧美日韩一区在线观看| 日韩国产精品久久久久久亚洲| 日韩精品中文字幕在线不卡尤物 | 性做久久久久久免费观看| 欧美一区二区久久久| 久久99久久久久久久久久久| 久久色.com| 成人免费高清在线| 亚洲一区在线视频观看| 欧美一区二区高清| 国产一区二区三区免费看| 中文字幕一区二区三区在线播放| 在线区一区二视频| 经典一区二区三区| 日韩一区中文字幕| 欧美日韩国产首页| 国产盗摄一区二区| 夜夜嗨av一区二区三区四季av | 中文字幕一区二区三区在线观看| 欧美在线视频全部完| 久久er99精品| 亚洲另类在线一区| 亚洲精品一区在线观看| 99精品在线观看视频| 日韩精品成人一区二区在线| 国产日韩亚洲欧美综合| 欧美日韩小视频| 国产精品一区在线| 亚洲一区二区3| 久久先锋影音av鲁色资源| 91成人国产精品| 国产麻豆精品久久一二三| 亚洲资源中文字幕| 国产拍欧美日韩视频二区| 欧美日韩一区三区四区| 懂色一区二区三区免费观看| 日韩精品乱码av一区二区| 国产精品亲子乱子伦xxxx裸| 在线播放91灌醉迷j高跟美女| 国产999精品久久久久久| 日韩精品电影一区亚洲| 亚洲女女做受ⅹxx高潮| 久久久久高清精品| 91精品国产高清一区二区三区蜜臀|