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

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

?? mips.h.svn-base

?? 模擬多核狀態(tài)下龍芯處理器的功能
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:

/* returns shift amount field value */
#define SHAMT		((inst >> 6) & 0x1f)

/* floating point register field synonyms */
#define FS		RD
#define FT		RT
#define FD		((inst >> 6) & 0x1f)

/* returns 16-bit signed immediate field value */
#define IMM		((int)((/* signed */short)(inst & 0xffff)))

/* returns 16-bit unsigned immediate field value */
#define UIMM		(inst & 0xffff)

/* returns 26-bit unsigned absolute jump target field value */
#define TARG		(inst & 0x3ffffff)

/* returns break code immediate field value */
#define BCODE		(inst & 0xfffff)

/* load/store 16-bit signed offset field value, synonym for imm field */
#define OFS		IMM		/* alias to IMM */

/* load/store base register specifier, synonym for RS field */
#define BS		RS		/* alias to rs */

/* largest signed integer */
#define MAXINT_VAL	0x7fffffff

/* check for overflow in X+Y, both signed */
#define OVER(X,Y)							\
  ((((X) > 0) && ((Y) > 0) && (MAXINT_VAL - (X) < (Y)))			\
   || (((X) < 0) && ((Y) < 0) && (-MAXINT_VAL - (X) > (Y))))

/* check for underflow in X-Y, both signed */
#define UNDER(X,Y)							\
  ((((X) > 0) && ((Y) < 0) && (MAXINT_VAL + (Y) < (X)))			\
   || (((X) < 0) && ((Y) > 0) && (-MAXINT_VAL + (Y) > (X))))

/* default target PC handling */
#ifndef SET_TPC
extern md_addr_t target_PC;
#define SET_TPC(PC)	{ target_PC = (PC); }	
#endif /* SET_TPC */

#define NOP  0

#ifdef BYTES_BIG_ENDIAN
/* lwl/swl defs */
#define WL_SIZE(ADDR)		((ADDR) & 0x03)
#define WL_BASE(ADDR)		((ADDR) & ~0x03)
#define WL_PROT_MASK(ADDR)	(md_lr_masks[4-WL_SIZE(ADDR)])
#define WL_PROT_MASK1(ADDR)	(md_lr_masks[WL_SIZE(ADDR)])
#define WL_PROT_MASK2(ADDR)	(md_lr_masks[4-WL_SIZE(ADDR)])

/* lwr/swr defs */
#define WR_SIZE(ADDR)		(((ADDR) & 0x03)+1)
#define WR_BASE(ADDR)		((ADDR) & ~0x03)
#define WR_PROT_MASK(ADDR)	(~(md_lr_masks[WR_SIZE(ADDR)]))
#define WR_PROT_MASK1(ADDR)	((md_lr_masks[WR_SIZE(ADDR)]))
#define WR_PROT_MASK2(ADDR)	(md_lr_masks[4-WR_SIZE(ADDR)])
#else /* BYTES_LITTLE_ENDIAN */
/* lwl/swl defs */
#define WL_SIZE(ADDR)		(4-((ADDR) & 0x03))
#define WL_BASE(ADDR)		((ADDR) & ~0x03)
#define WL_PROT_MASK(ADDR)	(md_lr_masks[4-WL_SIZE(ADDR)])
#define WL_PROT_MASK1(ADDR)	(md_lr_masks[WL_SIZE(ADDR)])
#define WL_PROT_MASK2(ADDR)	(md_lr_masks[4-WL_SIZE(ADDR)])

/* lwr/swr defs */
#define WR_SIZE(ADDR)		(((ADDR) & 0x03)+1)
#define WR_BASE(ADDR)		((ADDR) & ~0x03)
#define WR_PROT_MASK(ADDR)	(~(md_lr_masks[WR_SIZE(ADDR)]))
#define WR_PROT_MASK1(ADDR)	((md_lr_masks[WR_SIZE(ADDR)]))
#define WR_PROT_MASK2(ADDR)	(md_lr_masks[4-WR_SIZE(ADDR)])
#endif
  
/* mask table used to speed up LWL/LWR implementation */
extern word_t md_lr_masks[];

/*
 * various other helper macros/functions
 */

/* non-zero if system call is an exit() */
#define	SS_SYS_exit			4001
#define MD_EXIT_SYSCALL(REGS)		((REGS)->regs_R[2] == SS_SYS_exit)

/* non-zero if system call is a write to stdout/stderr */
#define	SS_SYS_write		4004
#define MD_OUTPUT_SYSCALL(REGS)						\
  ((REGS)->regs_R[2] == SS_SYS_write					\
   && ((REGS)->regs_R[4] == /* stdout */1				\
       || (REGS)->regs_R[4] == /* stderr */2))

/* returns stream of an output system call, translated to host */
#define MD_STREAM_FILENO(REGS)		((REGS)->regs_R[4])

/* returns non-zero if instruction is a function call */
#define MD_IS_CALL(OP)							\
  ((MD_OP_FLAGS(OP) & (F_CTRL|F_CALL)) == (F_CTRL|F_CALL))

/* returns non-zero if instruction is a function return */
#define MD_IS_RETURN(OP)		((OP) == JR && (RS) == 31)

/* returns non-zero if instruction is an indirect jump */
#define MD_IS_INDIR(OP)			((OP) == JR || (OP) == JALR)

/* addressing mode probe, enums and strings */
enum md_amode_type {
  md_amode_imm,		/* immediate addressing mode */
  md_amode_gp,		/* global data access through global pointer */
  md_amode_sp,		/* stack access through stack pointer */
  md_amode_fp,		/* stack access through frame pointer */
  md_amode_disp,	/* (reg + const) addressing */
  md_amode_rr,		/* (reg + reg) addressing */
  md_amode_NUM
};
extern char *md_amode_str[md_amode_NUM];

/* addressing mode pre-probe FSM, must see all instructions */
#define MD_AMODE_PREPROBE(OP, FSM)					\
  { if ((OP) == LUI) (FSM) = (RT); }

/* compute addressing mode, only for loads/stores */
#define MD_AMODE_PROBE(AM, OP, FSM)					\
  {									\
    if (MD_OP_FLAGS(OP) & F_DISP)					\
      {									\
	if ((BS) == (FSM))						\
	  (AM) = md_amode_imm;						\
	else if ((BS) == MD_REG_GP)					\
	  (AM) = md_amode_gp;						\
	else if ((BS) == MD_REG_SP)					\
	  (AM) = md_amode_sp;						\
	else if ((BS) == MD_REG_FP) /* && bind_to_seg(addr) == seg_stack */\
	  (AM) = md_amode_fp;						\
	else								\
	  (AM) = md_amode_disp;						\
      }									\
    else if (MD_OP_FLAGS(OP) & F_RR)					\
      (AM) = md_amode_rr;						\
    else								\
      panic("cannot decode addressing mode");				\
  }

/* addressing mode pre-probe FSM, after all loads and stores */
#define MD_AMODE_POSTPROBE(FSM)						\
  { (FSM) = MD_REG_ZERO; }


/*
 * EIO package configuration/macros
 */

/* expected EIO file format */
#define MD_EIO_FILE_FORMAT		EIO_MIPS_FORMAT

#define MD_MISC_REGS_TO_EXO(REGS)					\
  exo_new(ec_list,							\
	  /*icnt*/exo_new(ec_integer, (exo_integer_t)sim_pop_insn),	\
	  /*PC*/exo_new(ec_address, (exo_integer_t)(REGS)->regs_PC),	\
	  /*NPC*/exo_new(ec_address, (exo_integer_t)(REGS)->regs_NPC),	\
	  /*HI*/exo_new(ec_integer, (exo_integer_t)(REGS)->regs_C.hi),	\
	  /*LO*/exo_new(ec_integer, (exo_integer_t)(REGS)->regs_C.lo),	\
	  /*FCC*/exo_new(ec_integer, (exo_integer_t)(REGS)->regs_C.fcc),\
	  NULL)

#define MD_IREG_TO_EXO(REGS, IDX)					\
  exo_new(ec_address, (exo_integer_t)(REGS)->regs_R[IDX])

#define MD_FREG_TO_EXO(REGS, IDX)					\
  exo_new(ec_address, (exo_integer_t)(REGS)->regs_F.l[IDX])

#define MD_EXO_TO_MISC_REGS(EXO, ICNT, REGS)				\
  /* check EXO format for errors... */					\
  if (!exo								\
      || exo->ec != ec_list						\
      || !exo->as_list.head						\
      || exo->as_list.head->ec != ec_integer				\
      || !exo->as_list.head->next					\
      || exo->as_list.head->next->ec != ec_address			\
      || !exo->as_list.head->next->next					\
      || exo->as_list.head->next->next->ec != ec_address		\
      || !exo->as_list.head->next->next->next				\
      || exo->as_list.head->next->next->next->ec != ec_integer		\
      || !exo->as_list.head->next->next->next->next			\
      || exo->as_list.head->next->next->next->next->ec != ec_integer	\
      || !exo->as_list.head->next->next->next->next->next		\
      || exo->as_list.head->next->next->next->next->next->ec != ec_integer\
      || exo->as_list.head->next->next->next->next->next->next != NULL)	\
    fatal("could not read EIO misc regs");				\
  (ICNT) = (counter_t)exo->as_list.head->as_integer.val;		\
  (REGS)->regs_PC = (md_addr_t)exo->as_list.head->next->as_address.val;	\
  (REGS)->regs_NPC =							\
    (md_addr_t)exo->as_list.head->next->next->as_address.val;		\
  (REGS)->regs_C.hi =							\
    (word_t)exo->as_list.head->next->next->next->as_integer.val;	\
  (REGS)->regs_C.lo =							\
    (word_t)exo->as_list.head->next->next->next->next->as_integer.val;	\
  (REGS)->regs_C.fcc =							\
    (int)exo->as_list.head->next->next->next->next->next->as_integer.val;

#define MD_EXO_TO_IREG(EXO, REGS, IDX)					\
  ((REGS)->regs_R[IDX] = (word_t)(EXO)->as_integer.val)

#define MD_EXO_TO_FREG(EXO, REGS, IDX)					\
  ((REGS)->regs_F.l[IDX] = (word_t)(EXO)->as_integer.val)

#define MD_EXO_CMP_IREG(EXO, REGS, IDX)					\
  ((REGS)->regs_R[IDX] != (sword_t)(EXO)->as_integer.val)

#define MD_FIRST_IN_REG			2
#define MD_LAST_IN_REG			7

#define MD_FIRST_OUT_REG		2
#define MD_LAST_OUT_REG			7


/*
 * configure the EXO package
 */

/* EXO pointer class */
typedef qword_t exo_address_t;

/* EXO integer class, 64-bit encoding */
typedef qword_t exo_integer_t;

/* EXO floating point class, 64-bit encoding */
typedef double exo_float_t;


/*
 * configure the stats package
 */

/* counter stats */
#ifdef HOST_HAS_QWORD
#define stat_reg_counter		stat_reg_sqword
#define sc_counter			sc_sqword
#define for_counter			for_sqword
#else /* !HOST_HAS_QWORD */
#define stat_reg_counter		stat_reg_double
#define sc_counter			sc_double
#define for_counter			for_double
#endif /* HOST_HAS_QWORD */

/* address stats */
#define stat_reg_addr			stat_reg_uint


/*
 * configure the DLite! debugger
 */

/* register bank specifier */
enum md_reg_type {
  rt_gpr,		/* general purpose register */
  rt_lpr,		/* integer-precision floating pointer register */
  rt_fpr,		/* single-precision floating pointer register */
  rt_dpr,		/* double-precision floating pointer register */
  rt_ctrl,		/* control register */
  rt_PC,		/* program counter */
  rt_NPC,		/* next program counter */
  rt_NUM
};

/* register name specifier */
struct md_reg_names_t {
  char *str;			/* register name */
  enum md_reg_type file;	/* register file */
  int reg;			/* register index */
};

/* symbolic register names, parser is case-insensitive */
extern struct md_reg_names_t md_reg_names[];

/* returns a register name string */
char *md_reg_name(enum md_reg_type rt, int reg);

/* default register accessor object */
struct eval_value_t;
struct regs_t;
char *						/* err str, NULL for no err */
md_reg_obj(struct regs_t *regs,			/* registers to access */
	   int is_write,			/* access type */
	   enum md_reg_type rt,			/* reg bank to probe */
	   int reg,				/* register number */
	   struct eval_value_t *val);		/* input, output */

/* print integer REG(S) to STREAM */
void md_print_ireg(md_gpr_t regs, int reg, FILE *stream);
void md_print_iregs(md_gpr_t regs, FILE *stream);

/* print floating point REG(S) to STREAM */
void md_print_fpreg(md_fpr_t regs, int reg, FILE *stream);
void md_print_fpregs(md_fpr_t regs, FILE *stream);

/* print control REG(S) to STREAM */
void md_print_creg(md_ctrl_t regs, int reg, FILE *stream);
void md_print_cregs(md_ctrl_t regs, FILE *stream);

/* compute CRC of all registers */
word_t md_crc_regs(struct regs_t *regs);

/* xor checksum registers */
word_t md_xor_regs(struct regs_t *regs);


/*
 * configure sim-outorder specifics
 */

/* primitive operation used to compute addresses within pipeline */
#define MD_AGEN_OP		ADD

/* NOP operation when injected into the pipeline */
#define MD_NOP_OP		NOP

/* non-zero for a valid address, used to determine if speculative accesses
   should access the DL1 data cache */
#define MD_VALID_ADDR(ADDR)						\
  (((ADDR) >= ld_text_base && (ADDR) < (ld_text_base + ld_text_size))	\
   || ((ADDR) >= ld_data_base && (ADDR) < ld_stack_base))


/*
 * configure branch predictors
 */

/* shift used to ignore branch address least significant bits, usually
   log2(sizeof(md_inst_t)) */
#define MD_BR_SHIFT		2	


/*
 * target-dependent routines
 */

/* intialize the inst decoder, this function builds the ISA decode tables */
void md_init_decoder(void);

/* disassemble an instruction */
void
md_print_insn(md_inst_t inst,		/* instruction to disassemble */
	      md_addr_t pc,		/* addr of inst, used for PC-rels */
	      FILE *stream);		/* output stream */


/* this won't be included in math.h unless C99 is used */
extern double round(double);
extern float roundf(float);
extern double trunc(double);
extern float truncf(float);

/* flag of the delay slot */
extern int is_jump;
                                                                                
/* flag of branch likely delay slot annulling*/
extern int is_annulled;

/* mmap,handle mmap */
#define MMAP_START_ADDR 0x30000000
extern md_addr_t mmap_base;
                                                                                
/* mmap segment size in bytes */
extern unsigned int mmap_size;


#endif /* MIPS_H */




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日夜夜精品视频免费| 欧美写真视频网站| 欧美性大战久久久久久久蜜臀 | 国产在线不卡一卡二卡三卡四卡| 成人精品一区二区三区中文字幕 | 99re热这里只有精品免费视频| 欧美日韩高清一区二区| 国产欧美一区在线| 精品综合久久久久久8888| 在线视频一区二区免费| 国产精品沙发午睡系列990531| 日韩高清在线观看| 欧美午夜精品一区二区三区| 国产精品网站在线观看| 国内成人精品2018免费看| 欧美二区在线观看| 亚洲一区二区美女| 91欧美一区二区| 中文av一区特黄| 国产成人精品免费在线| 精品免费99久久| 美女国产一区二区三区| 欧美日本在线播放| 亚洲资源中文字幕| 色婷婷亚洲精品| 亚洲欧美国产高清| 91丨porny丨国产入口| 国产精品三级久久久久三级| 国产成人在线视频播放| 国产日本一区二区| 国产福利一区二区三区视频在线 | 精品影院一区二区久久久| 欧美日韩高清不卡| 视频一区欧美日韩| 日韩一区二区在线观看| 麻豆视频一区二区| 精品国产a毛片| 精品一区二区三区免费观看| 精品国产乱码久久久久久影片| 日韩一区精品视频| 日韩欧美久久久| 国产美女精品在线| 国产精品久久综合| 色狠狠av一区二区三区| 亚洲国产精品麻豆| 日韩亚洲欧美在线| 国产福利精品一区| 亚洲欧洲精品一区二区三区不卡| 91老师国产黑色丝袜在线| 亚洲免费看黄网站| 欧美日韩一二三| 老司机精品视频在线| 久久综合资源网| 国产成人免费视频一区| 亚洲欧美日韩人成在线播放| 精品视频在线看| 精品一区二区三区在线视频| 欧美激情在线免费观看| 在线中文字幕不卡| 六月婷婷色综合| 国产精品初高中害羞小美女文| 色屁屁一区二区| 美女视频黄频大全不卡视频在线播放| 国产视频一区在线播放| 91麻豆文化传媒在线观看| 日韩激情中文字幕| 国产欧美日韩在线视频| 欧美日韩一区中文字幕| 狠狠狠色丁香婷婷综合激情| 国产精品日韩精品欧美在线| 欧美疯狂做受xxxx富婆| jlzzjlzz亚洲女人18| 午夜精品在线视频一区| 国产欧美一区二区精品秋霞影院 | 欧美亚洲国产一区在线观看网站 | 五月婷婷另类国产| 国产欧美日韩三区| 欧美一区二区三区四区高清| 波多野结衣亚洲一区| 男人的j进女人的j一区| 亚洲天堂a在线| 欧美精品一区二区三区高清aⅴ| 色综合激情久久| 国产成人精品www牛牛影视| 亚洲综合一二三区| 中文字幕免费不卡在线| 欧美大片在线观看一区| 91久久奴性调教| www.欧美.com| 国产精品69久久久久水密桃| 男人操女人的视频在线观看欧美| 一区二区在线观看免费视频播放 | 精品国产免费视频| 欧美日韩国产色站一区二区三区| 成人激情午夜影院| 国产精品亚洲一区二区三区妖精| 午夜不卡在线视频| 亚洲激情自拍视频| 亚洲人吸女人奶水| 久久久久综合网| 久久亚洲免费视频| 欧美一区二区免费观在线| 欧美三级在线看| 色狠狠色狠狠综合| 色综合网色综合| 一本在线高清不卡dvd| 成人毛片在线观看| 国产99精品国产| 国产91在线观看丝袜| 国产精品原创巨作av| 国产一区二区三区在线看麻豆| 麻豆免费精品视频| 蜜臀av一区二区三区| 麻豆视频一区二区| 麻豆91免费观看| 国产自产2019最新不卡| 国产综合色在线| 成人精品电影在线观看| 成人久久18免费网站麻豆| 成人aaaa免费全部观看| 97精品久久久久中文字幕| 在线视频一区二区三区| 欧美日韩一二三区| 日韩一区二区三区高清免费看看| 日韩精品在线一区| 久久人人爽爽爽人久久久| 国产午夜亚洲精品不卡| 国产精品久久久久久一区二区三区| 中文字幕第一区第二区| 中文字幕欧美一| 一区二区三区四区不卡在线| 亚洲一区二区三区在线播放| 日韩国产精品91| 国产露脸91国语对白| 99久久国产综合精品色伊| 色视频一区二区| 日韩一级黄色大片| 国产三级一区二区| 一区二区三区精品| 另类小说视频一区二区| 国产成人精品免费看| 在线免费观看视频一区| 日韩一区二区精品在线观看| 国产亚洲美州欧州综合国| 亚洲日本成人在线观看| 日本中文字幕一区二区有限公司| 国精品**一区二区三区在线蜜桃| 99视频在线观看一区三区| 7777精品伊人久久久大香线蕉完整版 | 福利一区在线观看| 91麻豆免费观看| 日韩欧美色综合网站| 成人欧美一区二区三区1314| 五月婷婷综合网| 丁香婷婷综合激情五月色| 在线观看国产一区二区| 久久综合成人精品亚洲另类欧美| 亚洲天堂久久久久久久| 久久91精品久久久久久秒播| 一本大道久久a久久综合| 2022国产精品视频| 亚洲综合色噜噜狠狠| 懂色av中文字幕一区二区三区| 欧美精品1区2区3区| 国产精品国产三级国产a| 精品一区二区三区视频| 欧美日韩在线播| 亚洲色图一区二区| 国产乱色国产精品免费视频| 91精品婷婷国产综合久久性色| 国产精品毛片大码女人| 久久精品国产一区二区三区免费看| 在线观看网站黄不卡| 中文字幕欧美激情| 国产福利91精品| 精品国产电影一区二区| 蜜臀av国产精品久久久久| 欧美影视一区二区三区| 亚洲精品视频在线观看免费| 国产精品一线二线三线精华| 欧美成人猛片aaaaaaa| 婷婷综合久久一区二区三区| 色综合久久久久久久久久久| 国产精品乱码一区二三区小蝌蚪| 激情文学综合插| 日韩精品一区二区三区视频播放| 亚洲一区二区av电影| 91在线国产福利| 中文字幕av在线一区二区三区| 狠狠网亚洲精品| 精品毛片乱码1区2区3区| 午夜精品影院在线观看| 欧美亚洲综合色| 亚洲一区二区三区在线| 欧美日韩一区二区在线观看| 亚洲一区二区三区小说| 欧美视频在线观看一区| 天堂资源在线中文精品| 9191精品国产综合久久久久久| 性欧美疯狂xxxxbbbb|