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

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

?? init.c

?? 虛擬機實現c/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一区二区三区免费野_久草精品视频
国产免费久久精品| 在线91免费看| 久久久91精品国产一区二区三区| 日韩成人精品视频| 91精品国产91久久久久久最新毛片| 亚洲国产成人一区二区三区| 成人av免费在线观看| 中文字幕在线不卡一区二区三区| jiyouzz国产精品久久| 亚洲美女偷拍久久| 欧美日韩国产影片| 蜜臀99久久精品久久久久久软件| www国产亚洲精品久久麻豆| 国产99久久久国产精品潘金网站| 中文字幕欧美三区| 欧美日韩美女一区二区| 免费欧美日韩国产三级电影| 26uuu亚洲婷婷狠狠天堂| 成人在线综合网站| 洋洋av久久久久久久一区| 日韩视频免费观看高清完整版 | 久久久久久麻豆| 成人开心网精品视频| 亚洲自拍与偷拍| 日韩欧美国产小视频| 成人晚上爱看视频| 亚洲国产一区二区a毛片| 精品成人一区二区三区| 99久久精品一区| 日本视频在线一区| 中文字幕一区二区三区在线观看| 欧美日韩免费不卡视频一区二区三区| 久久成人麻豆午夜电影| 亚洲天堂久久久久久久| 欧美一区二区三区免费观看视频| 国产盗摄一区二区三区| 天天亚洲美女在线视频| 国产精品国产a| 91精品国产免费| 95精品视频在线| 国内精品国产成人| 午夜精品久久久久影视| 国产精品国产三级国产普通话蜜臀| 91精品国产乱| 欧美午夜精品久久久久久孕妇 | 国产一区二区三区免费| 亚洲一区二区三区精品在线| 中文字幕精品三区| 日韩欧美一级精品久久| 欧美三级视频在线| 成人aaaa免费全部观看| 国模少妇一区二区三区| 秋霞午夜av一区二区三区| 国产精品萝li| 国产视频一区二区在线观看| 欧美成人一区二区三区片免费 | 久久se这里有精品| 亚洲一区二区高清| 亚洲精品成人少妇| 国产精品美女久久久久久久久久久| 26uuu国产一区二区三区| 日韩一区二区三区精品视频| 欧美日韩大陆在线| 欧美精选在线播放| 777a∨成人精品桃花网| 欧美日韩一本到| 欧美年轻男男videosbes| 欧美日韩在线播放一区| 精品视频资源站| 欧美猛男男办公室激情| 欧美日韩一区二区不卡| 538在线一区二区精品国产| 欧美日韩一区精品| 欧美日韩中字一区| 欧美一区二区三区不卡| 欧美精品一区二区久久婷婷| 久久综合九色欧美综合狠狠| 2024国产精品| 日本一区二区视频在线| 亚洲日本一区二区三区| 亚洲午夜激情av| 日本午夜一区二区| 久久97超碰色| 成人免费毛片嘿嘿连载视频| 91福利视频网站| 日本一区二区不卡视频| 日韩一区二区免费高清| 欧美一级爆毛片| 久久婷婷久久一区二区三区| 国产丝袜美腿一区二区三区| 中文字幕在线一区| 一区二区三区中文在线| 丝瓜av网站精品一区二区| 久久丁香综合五月国产三级网站| 高清在线不卡av| 欧美亚洲国产怡红院影院| 777久久久精品| 久久精品这里都是精品| 亚洲精品日日夜夜| 免费看欧美美女黄的网站| 国模一区二区三区白浆| 91在线丨porny丨国产| 欧美日韩精品欧美日韩精品一| 欧美大黄免费观看| 制服丝袜亚洲播放| 91麻豆自制传媒国产之光| 欧美日韩不卡一区二区| 国产日韩欧美精品一区| 一区二区三区四区av| 久久精品av麻豆的观看方式| www.66久久| 国产美女精品人人做人人爽| 色综合久久六月婷婷中文字幕| 欧美一区二区在线播放| 国产精品国产三级国产专播品爱网| 一区二区三区精品视频| 国产剧情av麻豆香蕉精品| 色婷婷综合激情| 国产视频亚洲色图| 日本美女一区二区三区视频| av亚洲精华国产精华| 久久老女人爱爱| 日韩视频中午一区| 日韩影视精彩在线| 国产麻豆一精品一av一免费 | 男人操女人的视频在线观看欧美| 成人一区二区三区视频在线观看| 欧美人伦禁忌dvd放荡欲情| 国产精品午夜免费| 精品一区二区三区免费视频| 欧美日韩一本到| 亚洲天天做日日做天天谢日日欢 | 欧美日韩美少妇| 亚洲麻豆国产自偷在线| 国产毛片精品国产一区二区三区| 91麻豆精品国产综合久久久久久| 午夜久久久久久| 国产精品嫩草99a| 美日韩一区二区| 欧美天堂亚洲电影院在线播放| 久久久精品免费网站| 精品夜夜嗨av一区二区三区| 欧美日韩一二三区| 亚洲成av人片在线| 欧美喷潮久久久xxxxx| 性久久久久久久| 4hu四虎永久在线影院成人| 午夜久久久影院| 日韩免费一区二区三区在线播放| 日韩精品一二三| 欧美α欧美αv大片| 经典一区二区三区| 中文字幕 久热精品 视频在线| 久久国产剧场电影| 久久综合九色综合97婷婷女人 | 亚洲天堂精品在线观看| 成人午夜激情视频| 国产精品电影院| 色综合久久中文综合久久牛| 亚洲精选一二三| 欧美在线观看18| 丝袜美腿亚洲色图| 日韩欧美成人一区| 国产成人午夜精品5599| 国产精品动漫网站| 在线免费观看成人短视频| 丝袜美腿亚洲一区| 久久综合一区二区| 91在线无精精品入口| 一区二区三区精品视频在线| 91精品欧美久久久久久动漫| 国产专区欧美精品| 亚洲欧洲精品成人久久奇米网| 欧美揉bbbbb揉bbbbb| 亚洲在线中文字幕| 日韩一区二区不卡| 成人h动漫精品| 天堂久久一区二区三区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品女同一区二区三区| 99国产精品久久久| 日韩电影一区二区三区四区| 国产日本欧美一区二区| 欧美亚洲动漫制服丝袜| 韩国欧美一区二区| 亚洲一区二区三区美女| 国产亚洲婷婷免费| 欧美日韩高清一区二区不卡| 丁香六月综合激情| 日本欧美一区二区三区| 中文字幕一区免费在线观看| 国产视频不卡一区| 91亚洲午夜精品久久久久久| 天堂资源在线中文精品| 国产欧美一区二区三区沐欲| 在线视频国产一区| 国产精品996| 日本vs亚洲vs韩国一区三区 | 激情六月婷婷综合| 国产精品嫩草影院com|