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

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

?? init.c

?? 一個小型虛擬機的實現代碼
?? C
字號:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                                   +
+ init.c - loads bytecode off of disk and into physical memory    +
+                                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ macros                                                            + 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#define	APPLICATION		0xDEED	/* identifies an executable file (magic number) */

/*#define DBG_INIT		1*/

#ifdef DBG_INIT
#define DBG_INIT0(str);				printf("initHEC(): "); printf(str);
#define DBG_INIT1(str,arg1);		printf("initHEC(): "); printf(str,arg1);
#define DBG_INIT2(str,arg1,arg2);	printf("initHEC(): "); printf(str,arg1,arg2);
#define PRINT_SYM_TBL();			printDebugData(&debugData);	
#else
#define DBG_INIT0(str);
#define DBG_INIT1(str,arg1);
#define DBG_INIT2(str,arg1,arg2); 
#define PRINT_SYM_TBL();	
#endif	

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ public prototypes                                                 +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

U1 initHEC(struct CmdLine cl);

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ function definitions                                              +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/*
	init execution environment ( same way BIOS would boot a PC )
	1) open executable and read header and debug data
	2) validate header data
	3) user header data to allocate RAM and init registers ( 4GB limit imposed here )
	4) load bytecode into RAM[]
*/

U1 initHEC(struct CmdLine cl)
{
	U8 fileSize;			/* size of bytecode file in bytes */
	FILE *fptr;				/* pointer to open file */

	struct HeaderRec hr;	/*header read from file*/

	U8 bytecodeStart;		/*byte offsets into executable file*/
	U8 bytecodeEnd;

	U8 exec_bytes;			/* bytes in bytecode section of RAM[] */
	U8 total_bytes;			/* total bytes allocated for RAM[] */
	U8 free_bytes;			/* available physical RAM */

	U8 index;				/*index into file*/
	U8 i;					/*index into RAM[]*/
	int read_byte;		

	/*1) open executable and read header and debug data */

	fileSize = getFileSize(cl.binaryFile);

	if(fileSize == 0)
	{
		ERROR0_LVL2("initHEC(): executable has zero size");
		return(FALSE);	
	}

	if((fptr=fopen(cl.binaryFile,"rb"))== NULL)
	{
		ERROR1_LVL2("initHEC(): cannot open %s",cl.binaryFile);
		return(FALSE);
	}

	DBG_INIT0("populate symbol table---------------------\n");
	populateDebugData(&hr,&debugData,fptr);
	PRINT_SYM_TBL();
	DBG_INIT0("end symbol table population---------------\n");

	DBG_INIT0("finished reading header and symbol table\n");
	DBG_INIT1("magic number=%X\n",hr.magic);
	DBG_INIT1("symbol table size=%lu\n",hr.szSymTbl);
	DBG_INIT1("string table size=%lu\n",hr.szStrTbl);
	DBG_INIT1("bytecode table size=%lu\n",hr.szByteCode);

	/*2) validate header data */

	if(hr.magic!=(U2)APPLICATION)
	{
		ERROR0_LVL2("initHEC(): file not HEC executable");
		FCLOSE(fptr);
		return(FALSE);
	}

	if(hr.szByteCode==0)
	{
		ERROR1_LVL2("initHEC(): no bytecode in %s",cl.binaryFile);
		FCLOSE(fptr);
		return(FALSE);
	}

	/*3) user header data to allocate RAM and init registers*/
	
	bytecodeStart = SIZE_HEADER + hr.szSymTbl + hr.szStrTbl;
	bytecodeEnd = (bytecodeStart+hr.szByteCode)-1;

	DBG_INIT1("bytecodeStart in file=%lu\n",bytecodeStart);
	DBG_INIT1("bytecodeEnd in file=%lu\n",bytecodeEnd);

	exec_bytes = ( bytecodeEnd - bytecodeStart ) + 1;

	total_bytes = exec_bytes+
		         (cl.heapRequest*1024)+
				 (cl.stackRequest*1024);

	free_bytes = getAvailableMemory();

	if(total_bytes > free_bytes)
	{
		ERROR0_LVL2("initHEC(): not enough memory to init runtime");
		FCLOSE(fptr);
		return(FALSE);
	}

	DBG_INIT1("available physical RAM= %lu\n", free_bytes );
    DBG_INIT1("file size= %lu\n", fileSize );
	DBG_INIT1("size of bytecode in file= %lu\n", exec_bytes );
	DBG_INIT1("heap bytes= %lu\n", cl.heapRequest*1024 );
	DBG_INIT1("stack bytes= %lu\n", cl.stackRequest*1024 );
	DBG_INIT1("total required bytes= %lu\n", total_bytes );

	/* we're legal, so can allocate RAM  */

	printf("allocating %lu bytes\n",total_bytes); 

	/* U4 size limit is imposed here!!!! */

	RAM = ( U1* )malloc((U4)total_bytes); 

	/*
		now set up registers
		
		memory layout:  [0 -> $BE] [$HS -> $HE] [$SS -> $TOP]
	*/

	DBG_INIT0("setting up registers\n");

	R[$IP]=0;
	R[$SP]=total_bytes-1;
	R[$FP]=0;
	R[$BE]=exec_bytes-1;

	R[$HS]=exec_bytes;
	R[$HE]=exec_bytes+(cl.heapRequest*1024)-1;

	R[$SS]=exec_bytes+(cl.heapRequest*1024);
	R[$TOP]=total_bytes-1; 

	appMetaData.fileSize = fileSize;
	appMetaData.szSymTbl=hr.szSymTbl;
	appMetaData.szStrTbl=hr.szStrTbl;
	appMetaData.szByteCode=hr.szByteCode;
	appMetaData.bCodeFileStart=bytecodeStart;
	appMetaData.bCodeFileEnd=bytecodeEnd;
	appMetaData.heapSize = cl.heapRequest*1024;
	appMetaData.stackSize= cl.stackRequest*1024;
	appMetaData.ram = total_bytes;

	/*4) load bytecode into RAM[] */

	/*load bytecode into RAM*/

	rewind(fptr);	/* rewind to start of file */

	/* 
	note: fseek starts index at zero, so our scheme is correct
	note: (U4) cast, limits us to 4GB file
	*/

	if(fseek(fptr,(U4)bytecodeStart,SEEK_SET))
	{
		ERROR0_LVL2("initHEC(): could not find bytecode start");
		return(FALSE);
	}

	i=0;
	for(index=bytecodeStart;index<=bytecodeEnd;index++)
	{
		read_byte = fgetc(fptr);
		if(read_byte==EOF)
		{
			ERROR0_LVL2("initHEC(): error reading bytecode file");
			FCLOSE(fptr);
			return(FALSE);
		}
		RAM[i]=(U1)read_byte;
		i++;
	}

	FCLOSE(fptr);
	return(TRUE);

}/*end initHEC*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线观看一区二区| 亚洲精品精品亚洲| 欧美性色aⅴ视频一区日韩精品| 99久久精品久久久久久清纯| 老司机一区二区| 免费xxxx性欧美18vr| 蜜臀va亚洲va欧美va天堂| 婷婷亚洲久悠悠色悠在线播放| 一区二区在线观看av| 亚洲综合免费观看高清在线观看| 亚洲精品亚洲人成人网| 亚洲一区二区精品视频| 日韩va欧美va亚洲va久久| 日韩av一区二区三区| 美腿丝袜在线亚洲一区 | 国产一区二区日韩精品| 黄一区二区三区| 波多野结衣精品在线| 色综合久久天天综合网| 欧美一卡在线观看| 久久美女高清视频| 中文字幕一区二区日韩精品绯色| 亚洲黄色片在线观看| 日本成人在线网站| 国产成人午夜精品影院观看视频| av高清久久久| 欧美日韩国产电影| 26uuuu精品一区二区| 亚洲人成在线观看一区二区| 香蕉成人啪国产精品视频综合网| 精品一区二区三区免费观看 | 欧美经典一区二区三区| 亚洲日本在线观看| 久久精品国产亚洲高清剧情介绍 | 成人性视频免费网站| 91亚洲精品久久久蜜桃网站| 欧美一级黄色录像| 国产农村妇女毛片精品久久麻豆 | 美国毛片一区二区三区| 北条麻妃国产九九精品视频| 精品视频一区二区不卡| 久久久一区二区| 婷婷夜色潮精品综合在线| 国产aⅴ精品一区二区三区色成熟| 欧美日韩免费观看一区二区三区| 91.com在线观看| 中文字幕日韩av资源站| 麻豆国产欧美日韩综合精品二区 | 国产一区二区三区在线看麻豆| 91在线丨porny丨国产| 欧美成人一区二区三区在线观看| 一色桃子久久精品亚洲| 精品在线免费观看| 欧美日韩国产免费| 亚洲精品视频在线| 国产成人午夜电影网| 日韩欧美国产1| 亚洲图片欧美色图| 91视频一区二区三区| 国产欧美日韩另类一区| 国产在线播放一区| 日韩美女一区二区三区四区| 7777精品伊人久久久大香线蕉最新版| 欧美国产一区二区在线观看| 一区二区高清在线| 国产伦精品一区二区三区免费| 欧美午夜精品一区二区蜜桃 | 久久人人爽人人爽| 精品一区二区免费| 精品少妇一区二区三区日产乱码| 亚洲电影你懂得| 日本韩国欧美一区| 亚洲精品久久久蜜桃| 色婷婷精品久久二区二区蜜臀av | 久久人人97超碰com| 国内精品久久久久影院薰衣草| 日韩欧美精品三级| 青青草原综合久久大伊人精品优势 | 91麻豆精品在线观看| 日韩精品一区二区在线| 免费在线观看视频一区| 7777精品久久久大香线蕉| 亚洲成a人在线观看| 欧美日韩情趣电影| 免费成人在线观看| 亚洲精品一线二线三线无人区| 久久精品99国产精品日本| 日韩三级视频在线看| 国产乱码精品一品二品| 中文字幕欧美激情| 91在线观看地址| 亚洲综合一区二区三区| 欧美高清视频一二三区| 美日韩一级片在线观看| 久久久久久久久久久99999| 成人国产免费视频| 亚洲与欧洲av电影| 日韩精品自拍偷拍| 岛国av在线一区| 亚洲一区免费观看| 欧美成人女星排行榜| 成人激情免费网站| 亚洲第一搞黄网站| 2023国产精品| 一本久久精品一区二区 | 日韩欧美国产高清| 国产成人亚洲综合a∨猫咪| 亚洲视频小说图片| 在线综合视频播放| 国产成人在线看| 亚洲成人资源网| 国产欧美1区2区3区| 欧美日精品一区视频| 久久er99精品| 亚洲综合免费观看高清完整版| 精品对白一区国产伦| 欧美午夜一区二区三区免费大片| 久久精品噜噜噜成人88aⅴ| 亚洲美女精品一区| 精品美女在线播放| 欧美午夜寂寞影院| 成人一区二区三区在线观看| 日韩影院在线观看| ㊣最新国产の精品bt伙计久久| 在线不卡一区二区| 色哟哟一区二区在线观看 | 一级女性全黄久久生活片免费| 精品国产91亚洲一区二区三区婷婷| 色婷婷亚洲综合| av在线一区二区三区| 国产综合色在线视频区| 日韩不卡一区二区三区| 亚洲免费观看高清在线观看| 中文字幕乱码日本亚洲一区二区| 欧美老年两性高潮| 欧美影院一区二区| 99久久婷婷国产| gogo大胆日本视频一区| 高清av一区二区| 另类中文字幕网| 蜜臀av性久久久久av蜜臀妖精| 亚洲线精品一区二区三区八戒| 国产精品蜜臀在线观看| 国产亚洲欧美激情| 精品国产一区a| 久久久噜噜噜久久中文字幕色伊伊 | 精品1区2区3区| 91免费视频大全| 91在线视频官网| 色哟哟一区二区| 日本乱码高清不卡字幕| 91原创在线视频| 一本久久精品一区二区| 91成人免费在线| 在线视频亚洲一区| 欧美综合视频在线观看| 欧美唯美清纯偷拍| 欧美精品日日鲁夜夜添| 欧美一区中文字幕| 精品欧美一区二区三区精品久久| 日韩美女天天操| 国产亚洲一区二区三区四区| 中文字幕第一页久久| 国产精品色哟哟| 一区二区三区在线免费观看| 亚洲一区二区三区小说| 精品对白一区国产伦| 成人黄色av网站在线| 国产精品123区| 国产精品亚洲第一| 成人av在线播放网址| www.日本不卡| 91久久线看在观草草青青| 91黄色免费看| 日韩欧美国产午夜精品| 日本一区二区三区dvd视频在线| 国产精品成人在线观看| 性做久久久久久久免费看| 久久av老司机精品网站导航| 粉嫩一区二区三区性色av| 91免费在线视频观看| 69久久99精品久久久久婷婷 | 久久久99精品久久| 国产亚洲福利社区一区| 亚洲日本电影在线| 视频一区视频二区中文字幕| 国产一区亚洲一区| 91久久国产综合久久| 日韩欧美中文字幕一区| 国产精品拍天天在线| 五月婷婷激情综合| www.亚洲在线| 欧美一区二区三区四区在线观看| 国产欧美va欧美不卡在线| 午夜精品在线视频一区| 国产成人一区在线| 欧美一区二区三区在线观看视频| 中文字幕在线播放不卡一区| 五月婷婷久久丁香| 色婷婷亚洲婷婷|