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

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

?? reformat.c

?? 一個小型虛擬機的實現(xiàn)代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
			case EI:	/* EI	B */
			case DI:
			case HALT:
			case NOP:
			{
				DBG_FMT1("opcode %s\n\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case DIV:  /* DIV $r1, $r2, $r3, $r4 */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case CAST_IF:	/* CAST_IF  $r, $f */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case CAST_ID:	/* CAST_ID  $r, $d */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case CAST_FI: /* CAST_FI  $f, $r */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case CAST_FD: /* CAST_FD  $f, $d */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case CAST_DI: /* CAST_DI  $d, $r */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badIntReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",R_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case CAST_DF: /* CAST_DF  $d, $f */
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			case FADD: /* FADD $f1, $f2, $f3    BBBB */
			case FSUB:
			case FMULT:
			case FDIV:
			case FSLT:
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badFltReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",Rf_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);
				
			}break;
			case DADD: /* DADD $d1, $d2, $d3    BBBB */
			case DSUB:
			case DMULT:
			case DDIV:
			case DSLT:
			{
				DBG_FMT1("opcode %s\n",I_Set[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkCurrentByte(current_byte,stop);

				badDblReg(RAM[current_byte],current_byte);
				DBG_FMT1("operand %s\n\n",Rd_STR[RAM[current_byte]]);
				current_byte++;
				checkEndCurrentByte(current_byte,stop);

			}break;
			default:
			{
				ERROR1_LVL2("reformat(): bad opcode %d",
					        RAM[current_byte]);
				return(FALSE);
			}

		}/*end switch*/

	}/*end while*/

	DBG_FMT0("reformatting complete\n");

	return(TRUE);

}/*end reformat*/

/*-----------------------------------------------------------------*/

/* 
some registers are read-only ( used by runtime system only )
*/

void badIntReg(U1 arg, U8 currentbyte)
{
	if(arg>$R24)
	{ 
		ERROR1_LVL2("badIntReg(): (%d) not integer register",arg);
		
		xmlBegin();
		fprintf(errPtr,"badIntReg(): bad register at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();

		FATAL_ERROR();
	}
	return;

}/*end badIntReg*/

/*-----------------------------------------------------------------*/

void badFltReg(U1 arg, U8 currentbyte)		
{
	if(arg>$F10) 
	{ 
		ERROR1_LVL2("badFltReg(): (%d) not float register",arg);

		xmlBegin();
		fprintf(errPtr,"badFltReg(): bad register at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();
		
		FATAL_ERROR();
	} 
	return;

}/*end badFltReg*/

/*-----------------------------------------------------------------*/

void badDblReg(U1 arg, U8 currentbyte)		
{
	if(arg>$D10) 
	{ 
		ERROR1_LVL2("badDblReg(): (%d) not double register",arg);

		xmlBegin();
		fprintf(errPtr,"badDblReg(): bad register at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();
		
		FATAL_ERROR();
	} 
	return;

}/*end badDblReg*/

/*-----------------------------------------------------------------*/

void checkAddress(U1 *arr, U8 cb)
{
	U8* addr; 
	addr = (U8*)&arr[cb]; 
	if(*addr > R[$TOP])
	{ 
		ERROR0_LVL2("checkAddress(): address out of bounds");

		xmlBegin(); 
		fprintf(errPtr,"checkAddress(): invalid address literal ");
		fpU8(errPtr,*addr);
		fprintf(errPtr," at memory location "); 
		fpU8(errPtr,cb); 
		xmlEnd();

		FATAL_ERROR();
	}
	return;

}/*end checkAddress*/ 

/*-----------------------------------------------------------------*/

/* 
don't want incomplete instruction (hit end bytecode before end 
of instruction) 
*/

void checkCurrentByte(U8 cb, U8 end)
{
	if(cb>=end)
	{ 
		ERROR0_LVL2("checkCurrentByte(): incomplete instruction"); 

		xmlBegin(); 
		fprintf(errPtr,"checkCurrentByte(): ");
		fprintf(errPtr,"incomplete instruction at address "); 
		fpU8(errPtr,cb); 
		xmlEnd();

		FATAL_ERROR(); 
	}
	return;

}/*end checkCurrentByte*/

/*-----------------------------------------------------------------*/

/* 
last byte of an instruction is allowed to be at end of bytecode, so 
use checkEndCurrentByte 
*/

void checkEndCurrentByte(U8 cb, U8 end)
{
	if(cb>end)
	{ 
		ERROR0_LVL2("checkEndCurrentByte(): incomplete instruction"); 
		
		xmlBegin(); 
		fprintf(errPtr,"checkEndCurrentByte(): ");
		fprintf(errPtr,"incomplete instruction at address "); 
		fpU8(errPtr,cb); 
		xmlEnd();

		FATAL_ERROR(); 
	}
	return;

}/*end checkEndCurrentByte*/

/*-----------------------------------------------------------------*/

void badAddress(U8 arg, U8 currentbyte)
{	
	if(arg>R[$TOP]) 
	{ 
		ERROR0_LVL2("badAddress(): invalid address literal");
		
		xmlBegin();
		fprintf(errPtr,"badAddress(): invalid address literal ");
		fpU8(errPtr,arg); 
		fprintf(errPtr," at memory location "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();

		FATAL_ERROR();
	}
	return;

}/*end badAddress*/

/*-----------------------------------------------------------------*/

void badStack(U8 arg, U8 currentbyte)
{
	if(arg<=R[$HE]) 
	{ 
		ERROR0_LVL2("badStack(): stack overflow into heap");

		xmlBegin();
		fprintf(errPtr,"badStack(): ");
		fpU8(errPtr,arg); 
		fprintf(errPtr," stack overflow into heap "); 
		fprintf(errPtr,"at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();

		FATAL_ERROR();
	}
	else if(arg>R[$TOP])
	{
		ERROR0_LVL2("badStack(): stack underflow beyond $TOP");

		xmlBegin();
		fprintf(errPtr,"badStack(): ");
		fpU8(errPtr,arg); 
		fprintf(errPtr," stack underflow beyond $TOP "); 
		fprintf(errPtr,"at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();

		FATAL_ERROR();
	}
	return;

}/*end badStack*/ 	

/*-----------------------------------------------------------------*/

void badHeap(U8 arg, U8 currentbyte)
{
	if(arg<R[$HS]) 
	{ 
		ERROR0_LVL2("badHeap(): below heap");

		xmlBegin();
		fprintf(errPtr,"badHeap(): ");
		fpU8(errPtr,arg); 
		fprintf(errPtr," below start of heap "); 
		fprintf(errPtr,"at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();

		FATAL_ERROR();
	}
	else if(arg>R[$HE])
	{
		ERROR0_LVL2("badHeap(): beyond end of heap");

		xmlBegin();
		fprintf(errPtr,"badHeap(): ");
		fpU8(errPtr,arg); 
		fprintf(errPtr," beyond end of heap "); 
		fprintf(errPtr,"at address "); 
		fpU8(errPtr,currentbyte); 
		xmlEnd();

		FATAL_ERROR();

	}
	return;

}/*end badHeap*/ 	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品黄色片免费大全| 欧美福利一区二区| 国产精品影视天天线| 久久国产三级精品| 三级精品在线观看| 日本va欧美va欧美va精品| 免费成人在线视频观看| 久久国产精品无码网站| 国产精品一区二区你懂的| 国产精品1区二区.| 91香蕉视频污| 91精品国产综合久久久蜜臀粉嫩| 日韩一二三区不卡| 久久一日本道色综合| 久久久久久毛片| 亚洲人成网站影音先锋播放| 亚洲一二三区在线观看| 美腿丝袜亚洲一区| 国产成人在线色| 在线观看亚洲精品| 欧美不卡视频一区| 国产精品毛片大码女人| 亚洲一区二三区| 国产一区在线不卡| 在线观看国产日韩| 久久久亚洲精品一区二区三区| 国产精品无人区| 日韩高清不卡一区二区| 成人理论电影网| 欧美一区二区三区日韩| 日本一区二区久久| 日韩国产一区二| eeuss鲁片一区二区三区| 欧美精品一卡二卡| 国产精品视频看| 蜜臀va亚洲va欧美va天堂 | 日韩一区二区在线看片| 日韩欧美久久一区| 亚洲人吸女人奶水| 捆绑调教美女网站视频一区| 91论坛在线播放| 精品久久一区二区| 亚洲成人资源在线| 不卡的av电影| 久久色视频免费观看| 午夜视频久久久久久| 成人高清av在线| 久久亚洲免费视频| 日韩av网站在线观看| 在线精品视频免费观看| 日本一区二区成人| 国产一区二区美女诱惑| 日韩午夜激情免费电影| 亚洲国产综合色| 色综合天天综合网天天狠天天 | 欧美性受xxxx黑人xyx性爽| 欧美激情综合五月色丁香小说| 亚洲另类中文字| www.欧美.com| 国产丝袜欧美中文另类| 精彩视频一区二区三区| 日韩一级黄色大片| 免费在线观看日韩欧美| 在线不卡欧美精品一区二区三区| 一区二区在线观看免费| 色8久久人人97超碰香蕉987| 国产精品国产a级| 成人免费视频网站在线观看| 国产清纯白嫩初高生在线观看91 | 亚洲免费观看高清完整| 91亚洲永久精品| 最新日韩av在线| 99国产精品久久久久久久久久 | 国产精品美女久久久久久| 国精产品一区一区三区mba视频| 日韩一区二区三区三四区视频在线观看| 亚洲一区影音先锋| 欧美日韩激情一区二区三区| 午夜私人影院久久久久| 欧美丰满少妇xxxxx高潮对白| 性久久久久久久久久久久| 777xxx欧美| 国产自产视频一区二区三区| 国产日韩av一区二区| www.亚洲色图.com| 亚洲精品视频一区二区| 欧美日韩亚洲综合在线 | 日韩一区精品字幕| 91精品国产综合久久久久久久 | 午夜精品免费在线观看| 欧美最猛黑人xxxxx猛交| 亚洲成人一二三| 欧美mv日韩mv国产网站app| 国产精品99久| 亚洲蜜桃精久久久久久久| 欧美日韩不卡一区| 国产一区二区女| 亚洲精品中文在线影院| 欧美一区二区福利视频| 高清不卡一区二区在线| 亚洲夂夂婷婷色拍ww47 | 91香蕉视频污在线| 午夜精品视频在线观看| 国产亚洲自拍一区| 欧美最猛性xxxxx直播| 国产一区美女在线| 亚洲午夜免费视频| 久久久夜色精品亚洲| 日本韩国一区二区三区| 久久成人18免费观看| 亚洲精品大片www| 日韩精品自拍偷拍| 91国产免费看| 成人免费高清视频在线观看| 亚洲第一会所有码转帖| 国产欧美日产一区| 欧美日韩亚洲另类| 波多野结衣视频一区| 麻豆91小视频| 亚洲国产精品视频| 国产精品麻豆视频| 欧美电视剧免费全集观看| 色视频成人在线观看免| 国产一区二区三区美女| 午夜精品久久久久久久99水蜜桃 | 亚洲成人综合视频| 欧美极品xxx| 久久亚洲影视婷婷| 欧美日韩国产一级二级| 91丨九色丨黑人外教| 国产 欧美在线| 国产一区二区在线电影| 蜜臀精品一区二区三区在线观看 | 亚洲黄色av一区| 国产精品麻豆欧美日韩ww| 久久久五月婷婷| 欧美精品一区二区在线播放| 欧美一区二区大片| 欧美一卡二卡在线| 欧美丰满少妇xxxxx高潮对白| 欧美中文字幕一区二区三区亚洲| 91同城在线观看| 91丨porny丨在线| 9i在线看片成人免费| 成人国产精品免费观看视频| 国产乱码精品一区二区三区av| 麻豆精品一区二区三区| 欧美aa在线视频| 美女精品自拍一二三四| 麻豆精品一区二区| 久久99蜜桃精品| 国产在线一区二区综合免费视频| 欧美bbbbb| 狠狠色综合色综合网络| 国产一区二区主播在线| 国产aⅴ精品一区二区三区色成熟| 国产一区 二区| 国产夫妻精品视频| av在线播放成人| 欧美自拍偷拍午夜视频| 3atv一区二区三区| 日韩一区二区在线观看视频播放| 欧美大片一区二区三区| 久久综合九色综合97婷婷女人 | 亚洲高清免费在线| 亚洲成a人片在线不卡一二三区| 亚洲不卡在线观看| 免费观看91视频大全| 国产精品一区二区不卡| 99r国产精品| 51精品视频一区二区三区| 久久婷婷国产综合国色天香| 亚洲欧洲一区二区在线播放| 亚洲电影第三页| 国内精品伊人久久久久av影院| 国产成人欧美日韩在线电影| 色94色欧美sute亚洲线路一久| 在线不卡中文字幕播放| 久久久精品免费观看| 一区二区三区免费网站| 久久www免费人成看片高清| 不卡电影一区二区三区| 欧美日韩一区二区不卡| 久久久无码精品亚洲日韩按摩| 尤物av一区二区| 国产一二三精品| 欧美视频一区二区三区| 精品国产91洋老外米糕| 亚洲中国最大av网站| 国产精品正在播放| 欧美日韩国产高清一区二区| 亚洲国产精品99久久久久久久久| 亚洲123区在线观看| 成人黄页在线观看| 精品三级在线看| 一区二区三区精密机械公司| 激情小说欧美图片| 欧美精品 国产精品| 亚洲女人的天堂| 国产成人99久久亚洲综合精品|