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

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

?? eio.cc

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? CC
?? 第 1 頁 / 共 2 頁
字號:
	Addr page_addr;	struct exo_term_t *blob;	/* read the page */	exo = exo_read(fd);	if (!exo	    || exo->ec != ec_list	    || !exo->as_list.head	    || exo->as_list.head->ec != ec_address	    || !exo->as_list.head->next	    || exo->as_list.head->next->ec != ec_blob	    || exo->as_list.head->next->next != NULL)	    fatal("could not read EIO memory page");	page_addr = (Addr) exo->as_list.head->as_integer.val;	blob = exo->as_list.head->next;	/* write data to simulator memory */	for (j = 0; j < blob->as_blob.size; j++) {	    uint8_t val;	    val = blob->as_blob.data[j];	    /* unchecked access... */	    memory->access(Write, page_addr, &val, 1);	    page_addr++;	}	exo_delete(exo);    }    return trans_icnt;}/* syscall proxy handler from an EIO trace, architect registers   and memory are assumed to be precise when this function is called,   register and memory are updated with the results of the system call */// Note that we pass in a memory object that may be different from the// process's memory object (mem field), since we may be executing the// syscall early in the pipeline on uncommitted memory state.  It// might be reasonable to eliminate this parameter if we do syscalls// at commit time, or only after flushing the pipeline, etc.voidEioProcess::read_trace(RegFile *regs,	/* registers to update */		       FunctionalMemory *curmem, /* memory space */		       Counter icnt)	/* instruction count */{    int i;    struct exo_term_t *exo = 0, *exo_icnt = 0, *exo_pc = 0;    struct exo_term_t *exo_inregs = 0, *exo_inmem = 0,	              *exo_outregs = 0, *exo_outmem = 0;    struct exo_term_t *brkrec, *regrec, *memrec;    /* exit() system calls get executed for real... */    if (MD_EXIT_SYSCALL(regs)) {	/*	 * FIXME: Not clear what to do for a multithreaded workload	 * where one thread may call exit before the simulation	 * is complete.	 */	panic("EIO program called exit()");    }    /* else, read the external I/O (EIO) transaction */    exo = exo_read(eio_fd);    /* if we started from a checkpoint, we need to add in the number of     * instructions executed at the chkpt to the number simulated thus     * far to get our distance from the start of the program */    icnt += chkpt_num_inst;    /* pull apart the EIO transaction (EXO format) */    if (!exo || exo->ec != ec_list || !(exo_icnt = exo->as_list.head)	|| exo_icnt->ec != ec_integer || !(exo_pc = exo_icnt->next)	|| exo_pc->ec != ec_address || !(exo_inregs = exo_pc->next)	|| exo_inregs->ec != ec_list || !(exo_inmem = exo_inregs->next)	|| exo_inmem->ec != ec_list || !(exo_outregs = exo_inmem->next)	|| exo_outregs->ec != ec_list || !(exo_outmem = exo_outregs->next)	|| exo_outmem->ec != ec_list || exo_outmem->next != NULL)	fatal("%s: cannot read EIO transaction", name());    /*     * check the system call inputs     */    /* check ICNT input */    if (icnt != (Counter) exo_icnt->as_integer.val) {	ccprintf(cerr, "actual=%d, eio=%d\n", icnt,		 (Counter) exo_icnt->as_integer.val);	fatal("%s: EIO trace inconsistency: ICNT mismatch", name());    }    /* check PC input */    if (regs->pc != (Addr) exo_pc->as_integer.val) {	ccprintf(cerr, "actual=%d, eio=%d\n", regs->pc,		 (Counter) exo_pc->as_integer.val);	fatal("%s: EIO trace inconsistency: PC mismatch", name());    }    /* check integer register inputs */    for (i = MD_FIRST_IN_REG, regrec = exo_inregs->as_list.head;	 i <= MD_LAST_IN_REG; i++, regrec = regrec->next) {	if (!regrec || regrec->ec != ec_address) {	    ccprintf(cerr, "icount=%d, cycle=%d\n",		     icnt, curTick);	    fatal("%s: EIO trace inconsistency: missing input reg", name());	}	if (MD_EXO_CMP_IREG(regrec, regs, i)) {	    ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	    fatal("%s: EIO trace inconsistency: R[%d] input mismatch", name(),		  i);	}#ifdef VERBOSE	ccprintf(cerr, "** R[%d] checks out...\n", i);#endif				/* VERBOSE */    }    if (regrec != NULL) {	ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	fatal("%s: EIO trace inconsistency: too many input regs", name());    }    /* check memory inputs */    for (memrec = exo_inmem->as_list.head; memrec != NULL;	 memrec = memrec->next) {	Addr loc;	struct exo_term_t *addr = 0, *blob = 0;	/* check the mem transaction format */	if (!memrec || memrec->ec != ec_list || !(addr = memrec->as_list.head)	    || addr->ec != ec_address || !(blob = addr->next)	    || blob->ec != ec_blob || blob->next != NULL)	{	    ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	    fatal("%s: EIO trace inconsistency: bad memory transaction",		  name());	}	for (loc = addr->as_integer.val, i = 0; i < blob->as_blob.size;	     loc++, i++) {	    unsigned char val;	    /* was: val = MEM_READ_BYTE(loc); */	    curmem->access(Read, loc, &val, sizeof(unsigned char));	    if (val != blob->as_blob.data[i]) {		ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);		fatal("%s: EIO trace inconsistency: "		      "addr 0x%08p input mismatch", name(), loc);	    }#ifdef VERBOSE	    ccprintf(cerr, "** %#08d checks out...\n", loc);#endif				/* VERBOSE */	}	/* echo stdout/stderr output */	if (MD_OUTPUT_SYSCALL(regs)) {	    int tgt_fd = MD_STREAM_FILENO(regs);	    if (tgt_fd == STDOUT_FILENO || tgt_fd == STDERR_FILENO) {		int real_fd = sim_fd(tgt_fd);		if (real_fd >= 0) {		    write(real_fd, blob->as_blob.data, blob->as_blob.size);		}	    }	}    }    /*     * write system call outputs     */    /* adjust breakpoint */    brkrec = exo_outregs->as_list.head;    if (!brkrec || brkrec->ec != ec_address) {	ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	fatal("%s: EIO trace inconsistency: missing memory breakpoint",	      name());    }    brk_point = (Addr) brkrec->as_integer.val;    /* write integer register outputs */    for (i = MD_FIRST_OUT_REG, regrec = exo_outregs->as_list.head->next;	 i <= MD_LAST_OUT_REG; i++, regrec = regrec->next) {	if (!regrec || regrec->ec != ec_address) {	    ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	    fatal("%s: EIO trace inconsistency: missing output reg", name());	}	MD_EXO_TO_IREG(regrec, regs, i);#ifdef VERBOSE	ccprintf(cerr, "** R[%d] written...\n", i);#endif				/* VERBOSE */    }    if (regrec != NULL) {	ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	fatal("%s: EIO trace inconsistency: too many output regs", name());    }    /* write memory outputs */    for (memrec = exo_outmem->as_list.head; memrec != NULL;	 memrec = memrec->next) {	Addr loc;	struct exo_term_t *addr = 0, *blob = 0;	/* check the mem transaction format */	if (!memrec || memrec->ec != ec_list || !(addr = memrec->as_list.head)	    || addr->ec != ec_address || !(blob = addr->next)	    || blob->ec != ec_blob || blob->next != NULL)	{	    ccprintf(cerr, "icount=%d, cycle=%d\n", icnt, curTick);	    fatal("%s: EIO trace icnonsistency: bad memory transaction",		  name());	}	for (loc = addr->as_integer.val, i = 0; i < blob->as_blob.size;	     loc++, i++) {	    /* was: MEM_WRITE_BYTE(loc, blob->as_blob.data[i]); */	    curmem->access(Write, loc, &blob->as_blob.data[i],			   sizeof(unsigned char));#ifdef VERBOSE	    ccprintf(cerr, "** %#08d written...\n", loc);#endif				/* VERBOSE */	}    }    /* release the EIO EXO node */    exo_delete(exo);}/* fast forward EIO trace EIO_FD to the transaction just after ICNT */voideio_fast_forward(FILE * eio_fd, Counter icnt){    struct exo_term_t *exo;    Counter this_icnt;    do {	/* read the next external I/O (EIO) transaction */	exo = exo_read(eio_fd);	/* pull apart the EIO transaction (EXO format) */	if (!exo	    || exo->ec != ec_list	    || !exo->as_list.head || exo->as_list.head->ec != ec_integer)	    fatal("cannot read EIO transaction (during fast forward)");	this_icnt = exo->as_list.head->as_integer.val;	exo_delete(exo);    } while (this_icnt < icnt);    /* instruction counts should match exactly */    if (this_icnt > icnt)	fatal("EIO transaction icnt mismatch during fast forward");}EioProcess::EioProcess(const string &name, int stdout_fd, int stderr_fd,		       const string &eio_file, const string &chkpt_file)    : Process(name,	      -1, // stdin_fd unused: all input redirecte from EIO trace	      stdout_fd, stderr_fd){    /* open the EIO file stream */    eio_fd = eio_open(eio_file);    /* load initial state checkpoint */    if (read_chkpt(init_regs, eio_fd) != -1)	fatal("bad initial checkpoint in EIO file");    /* load checkpoint? */    if (chkpt_file != "")    {	Counter restore_icnt;	FILE *chkpt_fd;	cerr << "sim: loading checkpoint file: " << chkpt_file << "\n";	if (!eio_valid(chkpt_file)) {	    cerr << "file `" << chkpt_file		 << "' does not appear to be a checkpoint file" << endl;	    cerr << " ==> Running without checkpoint!" << endl;	}	else {	    /* open the checkpoint file */	    chkpt_fd = eio_open(chkpt_file);	    /* load the state image */	    restore_icnt = read_chkpt(init_regs, chkpt_fd);	    /* fast forward the baseline EIO trace to checkpoint location */	    ccprintf(cerr, "sim: fast forwarding to instruction %d\n",		     restore_icnt);	    eio_fast_forward(eio_fd, restore_icnt);	    eio_close(chkpt_fd);	}    }    /* computed state... */    prog_entry = init_regs->pc;}voidEioProcess::syscall(ExecContext *xc){    num_syscalls++;    read_trace(&xc->regs, xc->mem, xc->func_exe_inst);}BEGIN_DECLARE_SIM_OBJECT_PARAMS(EioProcess)    Param<string> file;    Param<string> chkpt;    Param<string> output;END_DECLARE_SIM_OBJECT_PARAMS(EioProcess)BEGIN_INIT_SIM_OBJECT_PARAMS(EioProcess)    INIT_PARAM(file, "EIO trace file name"),    INIT_PARAM(chkpt, "EIO checkpoint file name (optional)"),    INIT_PARAM(output, "filename for stdout/stderr (dflt: use sim stdout)")END_INIT_SIM_OBJECT_PARAMS(EioProcess)CREATE_SIM_OBJECT(EioProcess){    // initialize file descriptors to default: same as simulator    int stdout_fd, stderr_fd;    string out = output;    if (out == "stdout" || out == "cout")	stdout_fd = STDOUT_FILENO;    else if (out == "stderr" || out == "cerr")	stdout_fd = STDERR_FILENO;    else	stdout_fd = Process::openOutputFile(out);    stderr_fd = (stdout_fd != STDOUT_FILENO) ? stdout_fd : STDERR_FILENO;    return new EioProcess(getInstanceName(), stdout_fd, stderr_fd, file,			  chkpt);}REGISTER_SIM_OBJECT("EioProcess", EioProcess)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91美女福利视频| 国内精品久久久久影院一蜜桃| 精品乱人伦一区二区三区| 91色视频在线| 色综合亚洲欧洲| 色综合天天天天做夜夜夜夜做| eeuss影院一区二区三区| 成人黄色av网站在线| 91在线观看视频| 色综合天天综合网天天看片| 色视频欧美一区二区三区| 欧美这里有精品| 欧美日韩国产电影| 精品国产一区二区三区忘忧草| 精品成a人在线观看| 欧美高清一级片在线观看| 亚洲免费在线电影| 亚洲成国产人片在线观看| 日韩成人免费看| 国产一区二区不卡| 91浏览器在线视频| 欧美精品1区2区3区| 日韩精品一区二区三区在线播放 | 午夜精品视频在线观看| 日本欧洲一区二区| 国产不卡高清在线观看视频| 97精品超碰一区二区三区| 欧美日韩另类国产亚洲欧美一级| 欧美一区欧美二区| 欧美极品另类videosde| 亚洲午夜私人影院| 狠狠色丁香久久婷婷综合_中 | 欧美一级午夜免费电影| 国产欧美一区二区三区鸳鸯浴| 中文字幕在线观看一区二区| 午夜精品福利一区二区蜜股av| 久久99在线观看| 91麻豆精东视频| 26uuu精品一区二区| 亚洲国产三级在线| 国产成人a级片| 91精品欧美综合在线观看最新| 中文字幕av一区 二区| 水蜜桃久久夜色精品一区的特点| 岛国精品一区二区| 777a∨成人精品桃花网| 国产精品的网站| 久久精品噜噜噜成人av农村| 色噜噜久久综合| 久久久久99精品国产片| 日本vs亚洲vs韩国一区三区二区 | 日韩国产高清在线| 成人高清伦理免费影院在线观看| 在线播放中文字幕一区| 久久精品一区二区三区不卡牛牛 | 欧美一三区三区四区免费在线看| 18欧美乱大交hd1984| 蜜臀久久99精品久久久久久9| 91污在线观看| 国产精品美女久久久久aⅴ国产馆| 天天亚洲美女在线视频| 91丨porny丨中文| 久久精品水蜜桃av综合天堂| 男男gaygay亚洲| 欧美专区亚洲专区| 亚洲天天做日日做天天谢日日欢| 国产精品88888| 久久女同性恋中文字幕| 日韩国产一二三区| 欧美日韩一区在线| 一区二区三区产品免费精品久久75| 国产精品性做久久久久久| 欧美成人女星排名| 裸体一区二区三区| 欧美久久久久久蜜桃| 亚洲国产va精品久久久不卡综合| 色呦呦一区二区三区| 中文字幕一区二区三区不卡在线| 高清av一区二区| 国产精品区一区二区三区| 高清不卡在线观看av| 国产精品久久影院| 色噜噜久久综合| 亚洲国产婷婷综合在线精品| 欧美日韩五月天| 日韩精品电影在线| 欧美成人一区二区三区片免费| 免费人成精品欧美精品| 久久综合九色综合久久久精品综合| 精品一二线国产| 国产精品免费久久久久| 99久久精品一区| 亚洲a一区二区| 日韩精品在线看片z| eeuss鲁片一区二区三区在线观看| 国产精品第五页| 91精选在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕亚洲区| 欧美色窝79yyyycom| 久久99久久精品| 国产精品免费网站在线观看| 在线欧美小视频| 久久精品国产99| 亚洲日本中文字幕区| 欧美日韩亚洲综合一区| 国产激情一区二区三区| 亚洲一区二区三区中文字幕| 日韩一级二级三级| 99久久婷婷国产综合精品| 午夜精品久久久久影视| 国产欧美一区二区三区网站| 欧洲一区二区三区在线| 国产在线日韩欧美| 亚洲一区欧美一区| 国产丝袜美腿一区二区三区| 欧美艳星brazzers| 国产高清精品在线| 天堂成人国产精品一区| 国产精品另类一区| 欧美成人精品1314www| 91国模大尺度私拍在线视频| 黄色日韩三级电影| 亚洲成人av中文| 中文字幕乱码日本亚洲一区二区| 欧美精品三级日韩久久| 成人爱爱电影网址| 九九精品一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 久久久精品tv| 欧美一区二区三区小说| 欧美视频一区二| 99久久综合精品| 国产精品伊人色| 日本成人在线电影网| 一区二区三区在线观看国产| 国产亚洲精久久久久久| 精品成人一区二区三区| 在线成人av网站| 欧美一区午夜视频在线观看| 欧洲精品视频在线观看| 99久久综合精品| 99久久国产综合精品麻豆| 国产99久久久国产精品潘金网站| 久久国产人妖系列| 日本不卡一二三区黄网| 亚洲成人av一区二区| 亚洲国产成人va在线观看天堂| 亚洲精品视频免费看| 亚洲欧美偷拍另类a∨色屁股| 亚洲国产精品精华液2区45| 久久久五月婷婷| 国产亚洲欧美日韩在线一区| 26uuu色噜噜精品一区二区| 精品日产卡一卡二卡麻豆| 日韩三级电影网址| 欧美mv日韩mv国产网站app| 日韩亚洲电影在线| 日韩一级片在线观看| 欧美一区二区三区小说| 69久久99精品久久久久婷婷| 欧美精品久久久久久久久老牛影院| 欧美三区在线观看| 在线不卡一区二区| 久久夜色精品国产噜噜av | av成人免费在线| 99精品国产热久久91蜜凸| 99re热这里只有精品免费视频| 成人免费高清在线| 99riav一区二区三区| 在线亚洲一区二区| 欧美电影一区二区| 日韩视频在线你懂得| 久久久久亚洲蜜桃| 日韩理论片一区二区| 亚洲五码中文字幕| 久国产精品韩国三级视频| 国产精品69毛片高清亚洲| 91在线观看地址| 欧美日韩不卡视频| 久久久久久影视| 亚洲色图在线看| 蜜桃视频一区二区| av中文一区二区三区| 欧美麻豆精品久久久久久| 日本道在线观看一区二区| 91精品国产一区二区三区| 国产女人18水真多18精品一级做 | 7777精品伊人久久久大香线蕉经典版下载| 欧美男生操女生| 国产欧美日产一区| 亚洲高清中文字幕| 国产999精品久久久久久| 欧美亚洲另类激情小说| 日韩精品一区二区在线| 亚洲精品美腿丝袜| 韩国v欧美v日本v亚洲v| 欧美在线短视频| 国产欧美一区二区三区在线看蜜臀 | 精品国产污污免费网站入口|