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

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

?? symbol.c

?? 有想用的自己看吧
?? C
字號:
/* ---------------------------------------------------------------------- * FILE: symbol.c * PACKAGE: as31 - 8031/8051 Assembler. * * DESCRIPTION: *	This file contains the symbol table search/insertion routines *	associated with user defined symbols. * *	The reserved keyword (instructions/directives) look up routine *	is defined here. * *	The opcode table for all of the instructions is located in this *	file. * * REVISION HISTORY: *	Jan. 19, 1990 - Created. (Ken Stauffer) * * AUTHOR: *	All code in this file written by Ken Stauffer (University of Calgary) *	January, 1990. * */#include "as31.h"#define NULL		(0)#define B(a)		(0xF0+(a))#define ACC(a)		(0xE0+(a))#define PSW(a)		(0xD0+(a))#define T2CON(a)	(0xC8+(a))#define IP(a)		(0xB8+(a))#define P3(a)		(0xB0+(a))#define IE(a)		(0xA8+(a))#define P2(a)		(0xA0+(a))#define SCON(a)		(0x98+(a))#define P1(a)		(0x90+(a))#define TCON(a)		(0x88+(a))#define P0(a)		(0x80+(a))/* ----------------------------------------------------------------------  * sinit[] *	These symbols are not reserved keywords. *	This array contains the initial symbol table entries *	for the user symbol table. The symbols are *	basically convienient names that make writting *	in 8031/8051 bearable. * *	The function syminit() inserts these entries into the *	symbol table. * */static struct symbol sinit[] = {	{ "AC",		LABEL,		PSW(6),	NULL },	{ "ACC",	LABEL,		ACC(0),	NULL },	{ "B",		LABEL,		B(0),	NULL },	{ "CY",		LABEL,		PSW(7),	NULL },	{ "DPH",	LABEL,		0x83,	NULL },	{ "DPL",	LABEL,		0x82,	NULL },	{ "EA",		LABEL,		IE(7),	NULL },	{ "ES",		LABEL,		IE(4),	NULL },	{ "ET0",	LABEL,		IE(1),	NULL },	{ "ET1",	LABEL,		IE(3),	NULL },	{ "ET2",	LABEL,		IE(5),	NULL },	{ "EX0",	LABEL,		IE(0),	NULL },	{ "EX1",	LABEL,		IE(2),	NULL },	{ "EXEN2",	LABEL,		T2CON(3),NULL },	{ "EXF2",	LABEL,		T2CON(6),NULL },	{ "F0",		LABEL,		PSW(5),	NULL },	{ "IE",		LABEL,		IE(0),	NULL },	{ "IE0",	LABEL,		TCON(1),NULL },	{ "IE1",	LABEL,		TCON(3),NULL },	{ "IP",		LABEL,		IP(0),	NULL },	{ "IT0",	LABEL,		TCON(0),NULL },	{ "IT1",	LABEL,		TCON(2),NULL },	{ "OV",		LABEL,		PSW(2),	NULL },	{ "P",		LABEL,		PSW(0),	NULL },	{ "P0",		LABEL,		P0(0),	NULL },	{ "P1",		LABEL,		P1(0),	NULL },	{ "P2",		LABEL,		P2(0),	NULL },	{ "P3",		LABEL,		P3(0),	NULL },	{ "PCON",	LABEL,		0x87,	NULL },	{ "PS",		LABEL,		IP(4),	NULL },	{ "PSW",	LABEL,		PSW(0),	NULL },	{ "PT0",	LABEL,		IP(1),	NULL },	{ "PT1",	LABEL,		IP(3),	NULL },	{ "PT2",	LABEL,		IP(5),	NULL },	{ "PX0",	LABEL,		IP(0),	NULL },	{ "PX1",	LABEL,		IP(2),	NULL },	{ "RB8",	LABEL,		SCON(2),NULL },	{ "RCAP2H",	LABEL,		0xCB,	NULL },	{ "RCAP2L",	LABEL,		0xCA,	NULL },	{ "RCLK",	LABEL,		T2CON(5),NULL },	{ "REN",	LABEL,		SCON(4),NULL },	{ "RI",		LABEL,		SCON(0),NULL },	{ "RL2",	LABEL,		T2CON(0),NULL },	{ "RS0",	LABEL,		PSW(3),	NULL },	{ "RS1",	LABEL,		PSW(4),	NULL },	{ "SBUF",	LABEL,		0x99,	NULL },	{ "SCON",	LABEL,		SCON(0),NULL },	{ "SM0",	LABEL,		SCON(7),NULL },	{ "SM1",	LABEL,		SCON(6),NULL },	{ "SM2",	LABEL,		SCON(5),NULL },	{ "SP",		LABEL,		0x81,	NULL },	{ "T2CON",	LABEL,		T2CON(0),NULL },	{ "TB8",	LABEL,		SCON(3),NULL },	{ "TCLK",	LABEL,		T2CON(4),NULL },	{ "TCON",	LABEL,		TCON(0),NULL },	{ "TF0",	LABEL,		TCON(5),NULL },	{ "TF1",	LABEL,		TCON(7),NULL },	{ "TF2",	LABEL,		T2CON(7),NULL },	{ "TH0",	LABEL,		0x8C,	NULL },	{ "TH1",	LABEL,		0x8D,	NULL },	{ "TH2",	LABEL,		0xCD,	NULL },	{ "TI",		LABEL,		SCON(1),NULL },	{ "TL0",	LABEL,		0x8A,	NULL },	{ "TL1",	LABEL,		0x8B,	NULL },	{ "TL2",	LABEL,		0xCC,	NULL },	{ "TMOD",	LABEL,		0x89,	NULL },	{ "TR0",	LABEL,		TCON(4),NULL },	{ "TR1",	LABEL,		TCON(6),NULL },	{ "TR2",	LABEL,		T2CON(2),NULL }};#define SINITSIZE	(sizeof(sinit)/sizeof(sinit[0]))/* ---------------------------------------------------------------------- * opcode vectors: *	These arrays contain the various opcodes for the *	various forms an instruction may take. * *	The ordering of these opcodes is very critical to the *	proper fuctioning of the assembler. * *	When a given form of an instruction is parsed, the parser *	indexes one of these arrays by the correct amount and thus *	obtains the correct opcode for the particular form. * */static unsigned char acall[]=	{ 0x11 };static unsigned char add[]=	{ 0x28, 0x25, 0x26, 0x24 };static unsigned char addc[]=	{ 0x38, 0x35, 0x36, 0x34 };static unsigned char ajmp[]=	{ 0x01 };static unsigned char anl[]=	{ 0x58, 0x55, 0x56, 0x54, 0x52, 0x53, 0x82,				  0xb0 };static unsigned char cjne[]=	{ 0xb5, 0xb4, 0xb8, 0xb6 };static unsigned char clr[]=	{ 0xe4, 0xc3, 0xc2 };static unsigned char cpl[]=	{ 0xf4, 0xb3, 0xb2 };static unsigned char da[]=	{ 0xd4 };static unsigned char dec[]=	{ 0x14, 0x18, 0x15, 0x16 };static unsigned char div[]=	{ 0x84 };static unsigned char djnz[]=	{ 0xd8, 0xd5 };static unsigned char inc[]=	{ 0x04, 0x08, 0x05, 0x06, 0xa3 };static unsigned char jb[]=	{ 0x20 };static unsigned char jbc[]=	{ 0x10 };static unsigned char jc[]=	{ 0x40 };static unsigned char jmp[]=	{ 0x73 };static unsigned char jnb[]=	{ 0x30 };static unsigned char jnc[]=	{ 0x50 };static unsigned char jnz[]=	{ 0x70 };static unsigned char jz[]=	{ 0x60 };static unsigned char lcall[]=	{ 0x12 };static unsigned char ljmp[]=	{ 0x02 };static unsigned char mov[]=	{ 0xe8, 0xe5, 0xe6, 0x74, 0xf5, 0x75, 0xf8,				  0xa8, 0x78, 0x88, 0x85, 0x86, 0xf6, 0xa6,				  0x76, 0x90, 0xa2, 0x92 };static unsigned char movc[]=	{ 0x93, 0x83 };static unsigned char movx[]=	{ 0xe2, 0xe3, 0xe0, 0xf2, 0xf3, 0xf0 };static unsigned char mul[]=	{ 0xa4 };static unsigned char nop[]=	{ 0x00 };static unsigned char orl[]=	{ 0x48, 0x45, 0x46, 0x44, 0x42, 0x43, 0x72,				  0xa0 };static unsigned char pop[]=	{ 0xd0 };static unsigned char push[]=	{ 0xc0 };static unsigned char ret[]=	{ 0x22 };static unsigned char reti[]=	{ 0x32 };static unsigned char rl[]=	{ 0x23 };static unsigned char rlc[]=	{ 0x33 };static unsigned char rr[]=	{ 0x03 };static unsigned char rrc[]=	{ 0x13 };static unsigned char setb[]=	{ 0xd3, 0xd2 };static unsigned char sjmp[]=	{ 0x80 };static unsigned char subb[]=	{ 0x98, 0x95, 0x96, 0x94 };static unsigned char swap[]=	{ 0xc4 };static unsigned char xch[]=	{ 0xc8, 0xc5, 0xc6 };static unsigned char xchd[]=	{ 0xd6 };static unsigned char xrl[]=	{ 0x68, 0x65, 0x66, 0x64, 0x62, 0x63 };/* ---------------------------------------------------------------------- * optable[] *	This table contains opcodes, directives and a few reserved *	symbols. * *	The second field is the keywords token value. * *	Unless the symbol is an opcode, the third field will *	be NULL. *  *	The third field is a pointer to an array of opcode bytes. * */static struct opcode optable[] = {	{"a",		A,	NULL		},	{"ab",		AB,	NULL		},	{"acall",	ACALL,	acall		},	{"add",		ADD,	add		},	{"addc",	ADDC,	addc		},	{"ajmp",	AJMP,	ajmp		},	{"anl",		ANL,	anl		},	{"byte",	D_BYTE,	NULL		},	{"c",		C,	NULL		},	{"cjne",	CJNE,	cjne		},	{"clr",		CLR,	clr		},	{"cpl",		CPL,	cpl		},	{"da",		DA,	da		},	{"dec",		DEC,	dec		},	{"div",		DIV,	div		},	{"djnz",	DJNZ,	djnz		},	{"dptr",	DPTR,	NULL		},	{"end",		D_END,	NULL		},	{"equ",		D_EQU,	NULL		},	{"flag",	D_FLAG,	NULL		},	{"inc",		INC,	inc		},	{"jb",		JB,	jb		},	{"jbc",		JBC,	jbc		},	{"jc",		JC,	jc		},	{"jmp",		JMP,	jmp		},	{"jnb",		JNB,	jnb		},	{"jnc",		JNC,	jnc		},	{"jnz",		JNZ,	jnz		},	{"jz",		JZ,	jz		},	{"lcall",	LCALL,	lcall		},	{"ljmp",	LJMP,	ljmp		},	{"mov",		MOV,	mov		},	{"movc",	MOVC,	movc		},	{"movx",	MOVX,	movx		},	{"mul",		MUL,	mul		},	{"nop",		NOP,	nop		},	{"org",		D_ORG,	NULL		},	{"orl",		ORL,	orl		},	{"pc",		PC,	NULL		},	{"pop",		POP,	pop		},	{"push",	PUSH,	push		},	{"r0",		R0,	NULL		},	{"r1",		R1,	NULL		},	{"r2",		R2,	NULL		},	{"r3",		R3,	NULL		},	{"r4",		R4,	NULL		},	{"r5",		R5,	NULL		},	{"r6",		R6,	NULL		},	{"r7",		R7,	NULL		},	{"ret",		RET,	ret		},	{"reti",	RETI,	reti		},	{"rl",		RL,	rl		},	{"rlc",		RLC,	rlc		},	{"rr",		RR,	rr		},	{"rrc",		RRC,	rrc		},	{"setb",	SETB,	setb		},	{"sjmp",	SJMP,	sjmp		},	{"skip",	D_SKIP,	NULL		},	{"subb",	SUBB,	subb		},	{"swap",	SWAP,	swap		},	{"word",	D_WORD,	NULL		},	{"xch",		XCH,	xch		},	{"xchd",	XCHD,	xchd		},	{"xrl",		XRL,	xrl		}};#define OPTABSIZE	(sizeof(optable)/sizeof(struct opcode))/* ---------------------------------------------------------------------- * strcase: *	A case IN-sensitive string compare. * */strcase(s,t)char *s,*t;{	for( ; (*s|040) == (*t|040); s++, t++)		if( *s == '\0') return(0);	return( (*s|040) - (*t|040) );}/* ---------------------------------------------------------------------- * lookop: *	Do a binary search through optable[], for a matching *	symbol. Return the symbol found or NULL. * */struct opcode *lookop(s)char *s;{	register int low,high,mid,cond;	low = 0;	high = OPTABSIZE-1;	while( low<=high ) {		mid = (low+high)/2;		if( (cond = strcase(s,optable[mid].name)) < 0 )			high = mid-1;		else if(cond > 0 )			low = mid+1;		else			return(&optable[mid]);	}	return(NULL);}/* ---------------------------------------------------------------------- * symtab, hash, looksym: *	User symbol table routines. *	symtab is the hash table for the user symbols. *	(chaining is used for collision resolution). * */static struct symbol *symtab[HASHTABSIZE];static hash(s)char *s;{	register char *p;	register unsigned h=0,g;	for(p=s; *p; p++) {		h = (h<<4) + *p;		if( g = h&0xf0000000 ) {			h = h ^ (g >> 24);			h = h ^ g;		}	}	return( h % HASHTABSIZE );}struct symbol *looksym(s)char *s;{	register struct symbol *ptr,*prev;	char *malloc(),*p;	register int hv;	hv = hash(s);	prev = NULL;	for(ptr=symtab[hv]; ptr; ptr = ptr->next) {		if( !strcmp(ptr->name,s) ) {			if( prev != NULL ) {				prev->next = ptr->next;				ptr->next = symtab[hv];				symtab[hv] = ptr;			}			return(ptr);		}		prev = ptr;	}	if( p = malloc(strlen(s)+1) )		strcpy(p,s);	else		error("Cannot allocate %d bytes",strlen(s)+1);	ptr = (struct symbol *) malloc( sizeof(struct symbol) );	if( ptr == NULL )		error("Cannot allocate %d bytes",sizeof(struct symbol));	ptr->name = p;	ptr->type = UNDEF;	ptr->next = symtab[hv];	symtab[hv] = ptr;	return(ptr);}/* ---------------------------------------------------------------------- * syminit: *	Initializes the hash table, with the initial symbols from *	sinit[] * */syminit(){	register int i,hv;	for(i=0; i<SINITSIZE; i++ ) {		hv = hash(sinit[i].name);		if( symtab[hv] )			sinit[i].next = symtab[hv];		symtab[hv] = &sinit[i];	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美老年两性高潮| 91视频.com| 成人不卡免费av| 91精品国产综合久久小美女| 国产日韩欧美综合一区| 亚洲永久精品国产| 国产精品综合久久| 欧美欧美午夜aⅴ在线观看| 国产精品免费丝袜| 精品系列免费在线观看| 在线观看免费亚洲| 国产精品视频一二三区| 精品一区二区免费| 337p亚洲精品色噜噜| 亚洲免费av高清| 国产91精品一区二区麻豆网站| 欧美一级在线免费| 亚洲高清中文字幕| 一本久久精品一区二区| 亚洲国产电影在线观看| 国产一区二区三区免费观看| 日韩欧美中文一区| 日韩高清在线不卡| 欧美浪妇xxxx高跟鞋交| 夜夜爽夜夜爽精品视频| 成人性色生活片| 国产日韩欧美不卡| 国产真实乱对白精彩久久| 日韩欧美一二区| 久久99久久久欧美国产| 欧美一区二区三区在线| 琪琪一区二区三区| 欧美一区午夜精品| 奇米一区二区三区| 精品少妇一区二区三区日产乱码 | 亚洲国产成人一区二区三区| 国产美女娇喘av呻吟久久| 精品久久国产老人久久综合| 久久99精品久久久久婷婷| 日韩欧美综合一区| 国产精选一区二区三区| 中文幕一区二区三区久久蜜桃| 国产盗摄视频一区二区三区| 国产亚洲精品中文字幕| 成人午夜av影视| 中文字幕亚洲一区二区va在线| 菠萝蜜视频在线观看一区| 中文字幕一区免费在线观看| 99久久99久久综合| 亚洲综合激情网| 欧美妇女性影城| 精品一区二区综合| 精品久久久久久久一区二区蜜臀| 午夜精品免费在线| 日韩欧美一级二级三级久久久| 黄色日韩网站视频| 国产精品夫妻自拍| 欧美日韩视频不卡| 国模套图日韩精品一区二区| 国产欧美1区2区3区| 色综合av在线| 日本aⅴ免费视频一区二区三区 | 国产精品资源在线观看| 国产精品热久久久久夜色精品三区 | 亚洲精品国产品国语在线app| 在线看不卡av| 紧缚奴在线一区二区三区| 中文字幕乱码久久午夜不卡 | 粉嫩嫩av羞羞动漫久久久| 亚洲欧美偷拍三级| 日韩视频123| 91浏览器打开| 精品一区二区三区在线观看国产| 国产精品三级电影| 7777精品伊人久久久大香线蕉超级流畅 | 日韩你懂的在线观看| 久久精品国产99国产精品| 欧美高清在线精品一区| 色噜噜偷拍精品综合在线| 天堂蜜桃一区二区三区| 中文字幕第一页久久| 色94色欧美sute亚洲线路一久| 热久久免费视频| 午夜亚洲福利老司机| 亚洲国产精品黑人久久久| 欧美精品丝袜久久久中文字幕| 国产精品久久福利| 欧美日韩电影在线播放| 国产丶欧美丶日本不卡视频| 亚洲图片欧美色图| 久久综合999| 91丨porny丨国产入口| 青青草原综合久久大伊人精品优势| 欧美成人女星排行榜| 91麻豆免费观看| 国产精品123| 亚洲电影视频在线| 国产精品福利一区二区| 日韩一区二区三免费高清| 日本电影欧美片| 国产精品自拍在线| 精品系列免费在线观看| 日韩国产精品91| 一区二区三区在线免费观看| 久久久久久久久久看片| 日韩一区二区视频| 欧美日韩极品在线观看一区| 成人性生交大片| 国产精品一卡二| 日韩在线一二三区| 一区二区三区四区在线| 亚洲女人的天堂| 中文字幕成人网| 久久久久久99久久久精品网站| 日韩女优制服丝袜电影| 日韩欧美一级二级| 日韩精品影音先锋| 精品国内片67194| 亚洲精品在线观看视频| 精品少妇一区二区三区在线视频| 日韩你懂的电影在线观看| 日韩免费在线观看| 久久麻豆一区二区| 国产欧美日产一区| 久久久国产午夜精品| 国产亚洲欧美一级| 国产精品视频在线看| 亚洲日本青草视频在线怡红院 | 欧美男人的天堂一二区| 欧美高清精品3d| 精品久久久久久久久久久久包黑料| 精品国产乱码久久| 国产欧美精品一区aⅴ影院| 亚洲同性gay激情无套| 亚洲日本在线天堂| 亚洲成a人v欧美综合天堂下载| 日韩国产在线观看一区| 精品一区二区成人精品| proumb性欧美在线观看| 欧美在线播放高清精品| 日韩精品一区二区在线观看| 国产清纯在线一区二区www| 日韩一区在线看| 石原莉奈在线亚洲二区| 国模少妇一区二区三区| 色婷婷综合久久久久中文 | 国产精品午夜电影| 一区二区三区中文在线| 奇米亚洲午夜久久精品| 北岛玲一区二区三区四区| 在线观看成人小视频| 精品对白一区国产伦| 中文字幕中文字幕一区| 日韩电影在线免费观看| 国产在线精品一区二区不卡了 | 国产精品久久久久毛片软件| 亚洲成a人在线观看| 国产一区二区不卡老阿姨| 91亚洲大成网污www| 欧美大片在线观看一区| 有坂深雪av一区二区精品| 日韩精品中文字幕一区二区三区 | 国产视频一区在线观看| 亚洲色图欧洲色图| 麻豆传媒一区二区三区| 一本大道久久a久久精品综合| 成人av资源在线| 国产欧美一区二区精品忘忧草 | 亚洲图片激情小说| 欧洲激情一区二区| 精品国产乱码久久久久久蜜臀| 久久精品国产77777蜜臀| 黄色资源网久久资源365| 欧美午夜一区二区| 亚洲狠狠爱一区二区三区| 美女视频网站黄色亚洲| 国产一区二区三区免费观看 | 日韩av午夜在线观看| 国产精品毛片久久久久久| 亚洲一区二区三区不卡国产欧美 | 日本欧美一区二区三区乱码| 丁香婷婷综合激情五月色| 日韩欧美一级特黄在线播放| 日韩亚洲欧美高清| 亚洲黄色在线视频| 国产九色精品成人porny| 91精品婷婷国产综合久久性色 | 日日噜噜夜夜狠狠视频欧美人| 成人黄色免费短视频| 欧美一区二区不卡视频| ...av二区三区久久精品| 久久精品国产精品亚洲综合| 精品1区2区3区| 亚洲免费成人av| 国产美女主播视频一区| 欧美一区二区美女| 青青草原综合久久大伊人精品| 91免费版pro下载短视频| 国产午夜精品一区二区三区视频| 亚洲午夜精品在线|