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

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

?? analyze.c

?? C語言編譯器的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
                                scanexpr(block->exp,0,0);
                                break;
                        case st_while:
                        case st_do:
                                opt4(&block->exp);
                                scanexpr(block->exp,0,0);
                                scan(block->s1);
                                break;
                        case st_for:
                                opt4(&block->label);
                                scanexpr(block->label,0,0);
                                opt4(&block->exp);
                                scanexpr(block->exp,0,0);
                                scan(block->s1);
                                opt4(&block->s2);
                                scanexpr(block->s2,0,0);
                                break;
                        case st_if:
                                opt4(&block->exp);
                                scanexpr(block->exp,0,0);
                                scan(block->s1);
                                scan(block->s2);
                                break;
                        case st_switch:
                                opt4(&block->exp);
                                scanexpr(block->exp,0,0);
                                scan(block->s1);
                                break;
                        case st_case:
                                scan(block->s1);
                                break;
												case st_block:
																scan(block->exp);
																break;
												case st_asm:
																if (block->exp)
																	asm_scan(block->exp);
																break;
                        }
                block = block->next;
                }
}

void exchange(CSE **c1)
/*
 *      exchange will exchange the order of two expression entries
 *      following c1 in the linked list.
 */
{       CSE      *csp1, *csp2;
        csp1 = *c1;
        csp2 = csp1->next;
        csp1->next = csp2->next;
        csp2->next = csp1;
        *c1 = csp2;
}

int     desire(CSE *csp)
/*
 *      returns the desirability of optimization for a subexpression.
 */
{       if( csp->voidf || (isintconst(csp->exp->nodetype) &&
                        csp->exp->v.i < 16 && csp->exp->v.i >= 0))
                return 0;
        if( lvalue(csp->exp) )
                return 2 * csp->uses;
        return csp->uses;
}

int     bsort(CSE **list)
/*
 *      bsort implements a bubble sort on the expression list.
 */
{       CSE      *csp1, *csp2;
        csp1 = *list;
        if( csp1 == 0 || csp1->next == 0 )
                return 0;
        bsort( &(csp1->next));
        csp2 = csp1->next;
        if( desire(csp1) < desire(csp2) ) {
                exchange(list);
                return 1;
                }
        return 0;
}

void repexpr(ENODE *node, int size)
/*
 *      repexpr will replace all allocated references within an expression
 *      with tempref nodes.
 */
{       CSE      *csp;
        if( node == 0 )
                return;
				if (size == 0)
					size = natural_size(node);
        switch( node->nodetype ) {
                case en_rcon: case en_lrcon: case en_fcon:
                case en_icon:
								case en_lcon:
								case en_iucon:
								case en_lucon:
								case en_ccon:
                case en_nacon:
                case en_napccon:
								case en_absacon:
                case en_autocon:
								case en_autoreg:
                        if( (csp = searchnode(node)) != 0 )
                                if( csp->reg > 0 ) {
                                        node->nodetype = en_tempref;
                                        node->v.i = csp->reg | (size << 8);
                                        }
                        break;
								case en_floatref:
								case en_doubleref:
								case en_longdoubleref:
                case en_ub_ref:
                case en_uw_ref:
                case en_b_ref:
                case en_w_ref:
                case en_l_ref:
                case en_ul_ref:
                        if( (csp = searchnode(node)) != 0 ) {
                                if( csp->reg > 0 ) {
                                        node->nodetype = en_tempref;
                                        node->v.i = csp->reg | (size << 8);
                                        }
                                else
                                        repexpr(node->v.p[0],0);
                                }
                        else
                                repexpr(node->v.p[0],0);
                        break;
                case en_uminus: case en_bits:
                case en_not:    case en_compl:
                case en_ainc:   case en_adec:
                        repexpr(node->v.p[0],0);
                        break;
								case en_cb: case en_cub:
								case en_cw: case en_cuw:
								case en_cl: case en_cul:
								case en_cf: case en_cd: case en_cp: case en_cld:
                        repexpr(node->v.p[0],natural_size(node));
                        break;
                case en_add:    case en_sub:
                case en_umul:    case en_udiv: case en_umod:
                case en_mul:    case en_div:
                case en_mod:    case en_lsh:
								case en_asalsh: case en_asarsh: case en_alsh: case en_arsh:
                case en_rsh:    case en_and:
                case en_or:     case en_xor:
                case en_land:   case en_lor:
                case en_eq:     case en_ne:
                case en_lt:     case en_le:
								case en_ugt:	case en_uge: case en_ult: case en_ule:
                case en_gt:     case en_ge:
                case en_cond:   case en_void:
                case en_asadd:  case en_assub:
                case en_asmul:  case en_asdiv:
                case en_asor:   case en_asand:   case en_asxor:
                case en_asmod:  case en_aslsh:
								case en_asumod: case en_asudiv: case en_asumul: case en_pmul:
                case en_asrsh:  case en_fcall: case en_trapcall: case en_pdiv:
								case en_pfcall: case en_pfcallb:
                case en_assign: case en_intcall: case en_fcallb: case en_refassign:
                case en_moveblock: case en_stackblock: case en_callblock:
								case en_pcallblock:
                        repexpr(node->v.p[0],0);
                        repexpr(node->v.p[1],0);
                        break;
                }
}

void repcse(SNODE *block)
/*
 *      repcse will scan through a block of statements replacing the
 *      optimized expressions with their temporary references.
 */
{       while( block != 0 ) {
                switch( block->stype ) {
                        case st_return:
                        case st_expr:
                                repexpr(block->exp,0);
                                break;
                        case st_while:
                        case st_do:
                                repexpr(block->exp,0);
                                repcse(block->s1);
                                break;
                        case st_for:
                                repexpr(block->label,0);
                                repexpr(block->exp,0);
                                repcse(block->s1);
                                repexpr(block->s2,0);
                                break;
                        case st_if:
                                repexpr(block->exp,0);
                                repcse(block->s1);
                                repcse(block->s2);
                                break;
                        case st_switch:
                                repexpr(block->exp,0);
                                repcse(block->s1);
                                break;
                        case st_case:
                                repcse(block->s1);
                                break;
												case st_block:
																repcse(block->exp);
																break;
												case st_asm:
																if (block->exp)
																	asm_repcse(block->exp);
																break;
                        }
                block = block->next;
                }
}
void allocstack(void)
/*
 * This allocates space for local variables
 * we do this AFTER the register optimization so that we can
 * avoid allocating space on the stack twice
 */
{
	int lvl = 0;
	int again = TRUE;
	int oldauto, max;
	lc_maxauto = max = 0;
	while (again) {
		LIST *t = varlisthead;
		int align;
		lvl ++;
		oldauto = max;
		again = FALSE;
		while (t) {
			SYM *sp = t->data;
			while (sp && (sp->inreg || sp->funcparm || sp->storage_class == sc_static || sp->storage_class == sc_label || sp->storage_class == sc_ulabel))
				sp = sp->next;
			if (!sp) {
				t = t->link;
				continue;
			}
			if (sp->value.i >= lvl)
				again = TRUE;
			if (sp->value.i == lvl) {
				lc_maxauto = oldauto;
				while (sp) {
					if (!sp->inreg && !sp->funcparm && sp->storage_class != sc_static) {
						int val;
						align = getalign(sc_auto,sp->tp);
						val = lc_maxauto % align;
						if (val != 0)
							lc_maxauto += align - val;
						lc_maxauto += sp->tp->size;
						sp->value.i = -lc_maxauto;
					}
					sp = sp->next;
				}
			}
			if (lc_maxauto > max)
				max = lc_maxauto;
			t = t->link;
		}
	}
	lc_maxauto = max;
	lc_maxauto += stackadd;
	lc_maxauto &= stackmod;
}
void opt1(SNODE *block)
/*
 *      opt1 is the externally callable optimization routine. it will
 *      collect and allocate common subexpressions and substitute the
 *      tempref for all occurrances of the expression within the block.
 *
 *		optimizer is currently turned off...
 */
{
		int datareg = cf_freedata;
		int addreg = 16 + cf_freeaddress;
		int floatreg = 32 + cf_freefloat;
		olist = 0;
        scan(block);            /* collect expressions */
				voidall();							/* Disallow regs whose address is taken  */
				voidfloat(block);						/* disallow optimizing things which are assigned values derived from floats */
				reserveregs(&datareg, &addreg, &floatreg);		/* Allocate register vars */
        allocate(datareg, addreg,floatreg,block);             /* allocate registers  for opt*/
        repcse(block);          /* replace allocated expressions */
				loadregs();						/* Initialize allocated regs */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄一区二区| 国产剧情av麻豆香蕉精品| 欧美哺乳videos| jizz一区二区| 麻豆传媒一区二区三区| 中文字幕一区免费在线观看| 日韩亚洲欧美高清| 色妞www精品视频| 久久国产三级精品| 性久久久久久久久| 亚洲日韩欧美一区二区在线| www欧美成人18+| 精品国产第一区二区三区观看体验| 国产91精品精华液一区二区三区| 日韩电影一区二区三区| 亚洲精品免费视频| 中文字幕av一区二区三区高| 日韩精品一区二区三区三区免费| 91国模大尺度私拍在线视频| 成人污视频在线观看| 久久成人综合网| 亚洲精品成人a在线观看| 国产精品美日韩| 久久亚洲精精品中文字幕早川悠里| 欧美区一区二区三区| 91社区在线播放| 成人一级黄色片| 国产成都精品91一区二区三| 精品在线观看免费| 裸体在线国模精品偷拍| 丝袜美腿亚洲一区| 午夜久久久影院| 亚洲第一会所有码转帖| 一区二区三区中文字幕在线观看| 国产精品视频在线看| 国产亚洲精品7777| 精品国产sm最大网站免费看| 日韩精品专区在线影院观看| 在线不卡免费av| 欧美日韩国产在线观看| 欧美性淫爽ww久久久久无| 91麻豆自制传媒国产之光| 91欧美一区二区| 日本韩国欧美在线| 一本久久a久久精品亚洲| 一本色道**综合亚洲精品蜜桃冫| 色噜噜狠狠色综合欧洲selulu| 色欧美片视频在线观看| 欧美三级中文字| 欧美日韩在线三区| 欧美精品v日韩精品v韩国精品v| 欧美精品电影在线播放| 欧美一级久久久| 欧美精品一区二区三区蜜臀| wwwwxxxxx欧美| 亚洲国产精品v| 亚洲日本一区二区| 亚洲一区二区三区爽爽爽爽爽 | 精品久久久网站| 精品日韩成人av| 久久精品一区二区| **欧美大码日韩| 亚洲国产一区二区a毛片| 偷拍与自拍一区| 激情综合色播激情啊| 国产99精品在线观看| 在线欧美一区二区| 91精品蜜臀在线一区尤物| 欧美成人精品1314www| 欧美国产欧美亚州国产日韩mv天天看完整| 国产欧美视频一区二区三区| 亚洲欧美国产高清| 婷婷开心激情综合| 国产一区二区主播在线| 不卡的看片网站| 91精品国产福利| 国产精品免费久久久久| 亚洲国产sm捆绑调教视频 | 香蕉久久夜色精品国产使用方法| 日韩综合小视频| 国产毛片精品视频| 色香蕉成人二区免费| 日韩一区二区视频| 国产精品久久福利| 免费欧美在线视频| 成人午夜在线播放| 欧美福利一区二区| 中文字幕不卡的av| 日韩中文字幕不卡| 国产高清在线精品| 欧美日本在线看| 久久精品男人天堂av| 午夜精品一区二区三区电影天堂| 国产高清成人在线| 欧美片网站yy| 国产精品美女久久久久久2018| 性久久久久久久久| 91网址在线看| 精品欧美一区二区三区精品久久| 亚洲美女一区二区三区| 国产尤物一区二区| 欧美人牲a欧美精品| 中文字幕va一区二区三区| 蜜桃久久久久久| 欧美午夜精品免费| 国产精品毛片无遮挡高清| 麻豆一区二区三| 欧美怡红院视频| 国产精品第五页| 国产成人日日夜夜| 日韩三级精品电影久久久| 亚洲一区二区三区四区五区中文 | 欧美一区二区三区在线| 国产精品久久国产精麻豆99网站| 国产在线不卡一卡二卡三卡四卡| 欧美日韩一区不卡| 中文字幕一区二区在线观看| 国产成人精品一区二区三区网站观看| 欧美日韩不卡在线| 亚洲精品中文字幕在线观看| 国产91丝袜在线播放九色| 日韩欧美国产一区二区三区 | 国产精品美女www爽爽爽| 韩国一区二区在线观看| 欧美一区二区女人| 亚洲高清不卡在线| 欧美亚洲综合另类| 亚洲精品五月天| 91亚洲精品一区二区乱码| 国产精品国产精品国产专区不片 | 99re视频精品| 国产精品理伦片| 国产不卡免费视频| 国产欧美一区二区三区鸳鸯浴| 韩国在线一区二区| 久久老女人爱爱| 国产麻豆日韩欧美久久| 久久先锋影音av鲁色资源网| 久久精品久久综合| 欧美成人高清电影在线| 麻豆精品国产91久久久久久| 欧美大片在线观看| 久久精品国产色蜜蜜麻豆| 日韩免费高清视频| 久久电影国产免费久久电影 | 日韩毛片精品高清免费| 波多野结衣91| 亚洲欧美激情一区二区| 91黄色免费版| 性久久久久久久久久久久| 91精品国产免费| 精品一区二区在线免费观看| 久久综合精品国产一区二区三区 | 欧美三级乱人伦电影| 图片区小说区国产精品视频| 欧美一区二区三区在线电影| 狠狠色丁香九九婷婷综合五月| 久久久一区二区三区捆绑**| 国产成人精品影院| 亚洲精品一二三| 在线电影一区二区三区| 精品一区二区免费视频| 国产精品全国免费观看高清 | 色婷婷精品久久二区二区蜜臂av| 亚洲在线视频免费观看| 欧美一二三四区在线| 国产在线观看免费一区| 亚洲三级电影网站| 欧美一区二区三区喷汁尤物| 国产另类ts人妖一区二区| 中文字幕佐山爱一区二区免费| 777午夜精品视频在线播放| 国产一区视频在线看| 亚洲人成在线播放网站岛国| 这里只有精品视频在线观看| 国产精选一区二区三区| 一区二区三区中文免费| 欧美一级精品在线| 丁香婷婷综合五月| 同产精品九九九| 国产亚洲综合在线| 欧美性猛交xxxx乱大交退制版| 久久99国产精品免费网站| 亚洲色图第一区| 欧美变态tickle挠乳网站| 不卡在线视频中文字幕| 日本不卡高清视频| 国产精品九色蝌蚪自拍| 日韩欧美激情一区| 91豆麻精品91久久久久久| 久久精品国产一区二区三| 亚洲摸摸操操av| 精品国产第一区二区三区观看体验| 91福利小视频| 国产盗摄一区二区三区| 人人超碰91尤物精品国产| 亚洲视频图片小说| 26uuu久久天堂性欧美| 欧美性色综合网| 99re成人在线|