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

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

?? gexpr386.c

?? C語言編譯器的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
 */
{       AMODE    *ap1, *ap2, *ap3;
        int             ssize,rsize;
        ssize = natural_size(node->v.p[0]);
        rsize = natural_size(node->v.p[1]);
				if (rsize == 0)
					rsize = ssize;
				if (rsize > 4) {
					ap2 = gen_expr(node->v.p[0],F_FREG,rsize);
					ap3 = gen_expr(node->v.p[0],F_MEM,ssize);
					ap1 = gen_expr(node->v.p[1],F_FREG | F_MEM,rsize);
					if (ap1->mode == am_freg)
						gen_code(fop,0,0,0);
					else {
						if (rsize <= 4)
							if (fop == op_fadd)
								fop = op_fiadd;
							else
								fop = op_fisub;
						gen_f10code(fop,rsize,ap1,0);
					}
					floatstore(ap3,ssize,flags);
					gen_codef(op_fwait,0,0,0);
					if (!(flags & F_NOVALUE)) {
						ap2 = fstack();
						do_extend(ap2,ssize,size,flags);
						make_legal(ap2,flags,size);
					}
					return ap2;
				}
        if (chksize( ssize ,rsize ))
                rsize = ssize;
      	  ap2 = gen_expr(node->v.p[0],F_ALL | F_NOBIT | F_DEST,ssize);
				mark();
        ap1 = gen_expr(node->v.p[1],F_DREG | F_IMMED,rsize);
				if (node->v.p[0]->nodetype == en_bits)
					ap3= get_bitval(ap2,node->v.p[0],ssize);
				if (node->v.p[0]->nodetype == en_bits) {
					gen_code(op,ssize,ap3,ap1);
					bit_move(ap2,ap3,node->v.p[0],flags, ssize,rsize);
					freeop(ap3);
				}
				else
       		gen_code(op,ssize,ap2,ap1);
				freeop(ap1);
				release();
				if (flags & F_NOVALUE)
					freeop(ap2);
				else {
					do_extend(ap2,ssize,size,flags);
       		make_legal(ap2,flags,4);
				}
        return ap2;
}

AMODE    *gen_aslogic(ENODE *node, int flags, int size, int op)
/*
 *      generate a and equal or a or equal node.
 */
{       AMODE    *ap1, *ap2;
        int             ssize,rsize;
        ssize = natural_size(node->v.p[0]);
        rsize = natural_size(node->v.p[1]);
        if (chksize( ssize , rsize ))
                rsize = ssize;
			
      	  ap2 = gen_expr(node->v.p[0],F_ALL | F_NOBIT | F_DEST,ssize);
				mark();
        ap1 = gen_expr(node->v.p[1],F_DREG | F_IMMED,rsize);
				if (node->v.p[0]->nodetype == en_bits) {
					if (ap1->mode == am_immed) {
						ap1->offset->v.i &= bittab[node->v.p[0]->bits-1];
						ap1->offset->v.i <<= node->v.p[0]->startbit;
						gen_code(op,ssize,ap2,ap1);
					}
					else {
					  gen_code(op_and,ssize,ap1,make_immed(bittab[node->v.p[0]->bits-1]));
						if (node->v.p[0]->startbit)
					  	gen_code(op_shl,ssize,ap1,make_immed(node->v.p[0]->startbit));
						gen_code(op,ssize,ap2,ap1);
						if (!(flags & F_NOVALUE)) {
							freeop(ap1);
							release();
							if (node->v.p[0]->startbit)
					  		gen_code(op_shr,ssize,ap2,make_immed(node->v.p[0]->startbit));
        			do_extend(ap2,ssize,size,0);
							make_legal(ap2,F_DREG,size);
							return(ap2);
						}
					}
				}
				else
        	gen_code(op,ssize,ap2,ap1);
				freeop(ap1);
				release();
				if (flags & F_NOVALUE)
					freeop(ap2);
				else {
					do_extend(ap2,ssize,size,flags);
        	make_legal(ap2,flags,4);
				}
        return ap2;
}

AMODE *gen_asshift(ENODE *node, int flags, int size, int op)
/*
 *      generate shift equals operators.
 */
{       
        AMODE    *ap1, *ap2, *ap3;
        int ssize = natural_size(node->v.p[0]);
        int rsize = natural_size(node->v.p[1]);
        if (chksize( ssize , rsize ))
                rsize = rsize;
      	  ap2 = gen_expr(node->v.p[0],F_ALL | F_NOBIT | F_DEST,ssize);
				mark();
        ap1 = gen_expr(node->v.p[1],F_DREG | F_IMMED,rsize);
				if (node->v.p[0]->nodetype == en_bits)
					ap3 = get_bitval(ap2,node->v.p[0],ssize);
				else
					ap3 = ap2;

				doshift(ap3,ap1,ssize,op);
				if (node->v.p[0]->nodetype == en_bits)
					bit_move(ap2,ap3,node->v.p[0],flags,ssize,rsize);
				freeop(ap1);
				release();
				if (ap3 != ap1)
					freeop(ap3);
				if (flags & F_NOVALUE)
					freeop(ap2);
				else {
					do_extend(ap2,ssize,size,flags);
       		make_legal(ap2,flags,4);
				}
        	return ap2;
}

AMODE    *gen_asmul(ENODE *node, int flags, int size,int op)
/*
 *      generate a *= node.
 */
{       AMODE    *ap1, *ap2,*ap3;
        int             ssize, lsize,rsize;
        ssize = natural_size(node->v.p[0]);
        rsize = natural_size(node->v.p[1]);
				if (rsize == 0)
					rsize = ssize;
				if (rsize > 4) {
					int fop = op_fmul;
					ap2 = gen_expr(node->v.p[0],F_FREG,rsize);
					ap3 = gen_expr(node->v.p[0],F_MEM,ssize);
					ap1 = gen_expr(node->v.p[1],F_FREG | F_MEM,rsize);
					if (ap1->mode == am_freg)
						gen_code(fop,0,0,0);
					else {
						if (rsize <= 4)
							fop = op_fimul;
						gen_f10code(fop,ssize,ap1,0);
					}
					floatstore(ap3,ssize,flags);
					gen_codef(op_fwait,0,0,0);
					if (!(flags & F_NOVALUE)) {
						ap2 = fstack();
						do_extend(ap2,ssize,size,flags);
						make_legal(ap2,flags,size);
					}
					return ap2;
				}
				if (op == op_imul)
					lsize= -4;
				else
					lsize = 4;
      	ap2 = gen_expr(node->v.p[0],F_ALL | F_NOBIT | F_DEST,ssize);
				mark();
    	  ap1 = gen_expr(node->v.p[1],F_ALL,lsize);
				ap3 = xalloc(sizeof(AMODE));
				ap3->mode = ap2->mode;
				ap3->preg = ap2->preg;
				ap3->sreg = ap2->sreg;
				ap3->scale = ap2->scale;
				ap3->offset = ap2->offset;
				if (node->v.p[0]->nodetype == en_bits)
					ap2 = get_bitval(ap2,node->v.p[0],ssize);
				else {
        	make_legal(ap2,F_DREG | F_VOL,4);
					do_extend(ap2,ssize,lsize,F_DREG);
				}
				domul(ap2,ap1,lsize,op);
				freeop(ap1);
				release();
				if (!equal_address(ap2,ap3))
					if (node->v.p[0]->nodetype == en_bits)
						bit_move(ap3,ap2,node->v.p[0],flags,ssize,rsize);
					else
						gen_code(op_mov,ssize,ap3,ap2);
				if (flags & F_NOVALUE)
					freeop(ap2);
				else {
					do_extend(ap2,ssize,size,flags);
       		make_legal(ap2,flags,4);
				}
        return ap2;
}

AMODE    *gen_asmodiv(ENODE *node, int flags, int size, int op, int modflag)
/*
 *      generate /= and %= nodes.
 */
{       AMODE    *ap1, *ap2,*ap3;
        int             ssize,lsize,rsize;
        ssize = natural_size(node->v.p[0]);
        rsize = natural_size(node->v.p[1]);
				if (rsize == 0)
					rsize = ssize;
				if (rsize > 4) {
					int fop = op_fdiv;
					ap2 = gen_expr(node->v.p[0],F_FREG,rsize);
					ap3 = gen_expr(node->v.p[0],F_MEM,ssize);
					ap1 = gen_expr(node->v.p[1],F_FREG | F_MEM,rsize);
					if (ap1->mode == am_freg)
						gen_code(fop,0,0,0);
					else {
						if (rsize <= 4)
							fop = op_fidiv;
						gen_f10code(fop,ssize,ap1,0);
					}
					floatstore(ap3,ssize,flags);
					gen_codef(op_fwait,0,0,0);
					if (!(flags & F_NOVALUE)) {
						ap2 = fstack();
						do_extend(ap2,ssize,size,flags);
						make_legal(ap2,flags,size);
					}
					return ap2;
				}                                                   
				if (op == op_idiv)                                  
					lsize= -4;                                        
				else                                                
					lsize = 4;                                        
			                                                      
     	  ap2 = gen_expr(node->v.p[0],F_ALL | F_NOBIT | F_DEST, ssize);         
				mark();
   	    ap1 = gen_expr(node->v.p[1],F_ALL,lsize);         
				ap3 = xalloc(sizeof(AMODE));                      
				ap3->mode = ap2->mode;                            
				ap3->preg = ap2->preg;                            
				ap3->sreg = ap2->sreg;                            
				ap3->scale = ap2->scale;                          
				ap3->offset = ap2->offset;
				if (node->v.p[0]->nodetype == en_bits)
					ap2 = get_bitval(ap2,node->v.p[0],ssize);
				else {
        	make_legal(ap2,F_DREG | F_VOL,4);
					do_extend(ap2,ssize,lsize,F_DREG);
				}
				dodiv(ap2,ap1,ssize,op,modflag);                  
				freeop(ap1);
				release();
				if (!equal_address(ap2,ap3))
					if (node->v.p[0]->nodetype == en_bits)
						bit_move(ap3,ap2,node->v.p[0],flags,ssize,rsize);
					else
						gen_code(op_mov,ssize,ap3,ap2);
				if (flags & F_NOVALUE)                              
					freeop(ap2);                                      
				else {
					do_extend(ap2,ssize,size,flags);
       		make_legal(ap2,flags,4);
				}
       	return ap2;                                       
}
AMODE *gen_moveblock(ENODE *node, int flags, int size)      
{                                                           
	AMODE *ap1, *ap2;                                         
	if (!node->size)                                          
		return(0);
	ap2 = gen_expr(node->v.p[1],F_DREG | F_VOL,4);                     
	mark();
	ap1 = gen_expr(node->v.p[0],F_DREG | F_VOL,4);                     
	gen_push(ESI,am_dreg,0);                                  
	gen_push(EDI,am_dreg,0);                                  
	if (regs[1])                                              
		gen_push(ECX,am_dreg,0);                                
	gen_code(op_mov,4,makedreg(ESI),ap2);		                  
	gen_code(op_mov,4,makedreg(EDI),ap1);                     
	gen_code(op_mov,4,makedreg(ECX),make_immed(node->size));  
	gen_code(op_cld,0,0,0);
	gen_code(op_rep,1,0,0);                                   
	gen_code(op_movsb,1,0,0);		                              
	if (regs[1])                                              
		gen_pop(ECX,am_dreg,0);
	gen_pop(EDI,am_dreg,0);
	gen_pop(ESI,am_dreg,0);
	freeop(ap2);
	freeop(ap1);
	release();
	return(ap2);
}
AMODE    *gen_assign(ENODE *node, int flags, int size)
/*
 *      generate code for an assignment node. if the size of the
 *      assignment destination is larger than the size passed then
 *      everything below this node will be evaluated with the
 *      assignment size.
 */
{       AMODE    *ap1, *ap2, *ap3,*ap4 = 0;
        int             ssize,rsize;
				rsize = natural_size(node->v.p[1]);
        switch( node->v.p[0]->nodetype )
                {
								case en_bits:
												ssize = natural_size(node->v.p[0]);
												break;
                case en_ub_ref:
								case en_cub:
                        ssize = 1;
                        break;
                case en_b_ref:
								case en_cb:
                        ssize = -1;
                        break;
                case en_uw_ref:
								case en_cuw:
                        ssize = 2;
                        break;
                case en_w_ref:
								case en_cw:
                        ssize = -2;
                        break;
                case en_l_ref:
								case en_cl:
												ssize = -4;
												break;
                case en_ul_ref:
								case en_cul:
								case en_cp:
                        ssize = 4;
                        break;
                case en_tempref:
                case en_regref:
												ssize = node->v.p[0]->v.i >> 8;
												break;
								case en_floatref:
								case en_cf:
												ssize = 6;
												break;
								case en_doubleref:
								case en_cd:
												ssize = 8;
												break;
								case en_longdoubleref:
								case en_cld:
												ssize = 10;
												break;
								default:
												ssize = -4;
                }
        if (chksize( ssize , rsize ))
                rsize = ssize;
        ap2 = gen_expr(node->v.p[1],F_DREG | F_FREG | F_IMMED,rsize);
				mark();
        ap1 = gen_expr(node->v.p[0],F_ALL | F_NOBIT | F_DEST,ssize);
				if (!equal_address(ap1,ap2)	) {
					if (rsize > 4) {
						floatstore(ap1,ssize,flags);
						gen_codef(op_fwait,0,0,0);
					}
					else {
						if (node->v.p[0]->nodetype == en_bits) {
							bit_move(ap1,ap2,node->v.p[0],flags,ssize,rsize);
						}
						else {
							if (ap2->mode != am_dreg && ap2->mode != am_immed
										&& ap1->mode != am_dreg) {
								freeop(ap2);
								ap3 = temp_data();
								gen_code(op_mov,ssize,ap3,ap2);
								gen_code(op_mov,ssize,ap1,ap3);
							}
							else {
  	      			gen_code(op_mov,ssize,ap1,ap2);
							}
						}
					}
				}
				release();
				if (flags & F_NOVALUE)
					freeop(ap2);
				else {
					do_extend(ap2,ssize,size,flags);
					make_legal(ap2,flags,size);
				}
        return ap2;
}
AMODE    *gen_refassign(ENODE *node, int flags, int size)
/*
 *      generate code for an assignment node. if the size of the
 *      assignment destination is larger than the size passed then
 *      everything below this node will be evaluated with the
 *      assignment size.
 */
{       AMODE    *ap1, *ap2, *ap3,*ap4;
        int             ssize,rsize;
				rsize = natural_size(node->v.p[1]);
        switch( node->v.p[0]->nodetype )
                {
								case en_bits:
												ssize = natural_size(node->v.p[0]);
												break;
                case en_ub_ref:
								case en_cub:
                        ssize = 1;
                        break;
                case en_b_ref:
								case en_cb:
                        ssize = -1;
                        break;
                case en_uw_ref:
								case en_cuw:
                        ssize = 2;
                        break;
                case en_w_ref:
								case en_cw:
                        ssize = -2;
                        break;
                case en_l_ref:
								case en_cl:
												ssize = -4;
												break;
                case en_ul_ref:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类人妖一区二区av| 欧美成人video| 亚洲欧美色一区| 日韩欧美国产一二三区| 欧美在线制服丝袜| av在线免费不卡| 粉嫩av一区二区三区| 激情文学综合丁香| 奇米精品一区二区三区四区 | 91蜜桃免费观看视频| 岛国精品一区二区| 91在线视频官网| 色伊人久久综合中文字幕| 成人18精品视频| 欧美亚洲国产怡红院影院| 欧美乱妇一区二区三区不卡视频| 欧美三电影在线| 欧美一三区三区四区免费在线看| 日韩欧美国产wwwww| 亚洲国产精品久久艾草纯爱| 午夜伊人狠狠久久| 激情丁香综合五月| 日韩一区二区在线看| 日本一区二区成人在线| 中文字幕日韩一区| 亚洲国产一区二区三区青草影视| aaa欧美大片| 国产精品久久久久久妇女6080| 一区二区三区久久| 久久精品国产亚洲高清剧情介绍 | 99国产精品久久| 亚洲国产精品精华液2区45| 激情另类小说区图片区视频区| 日韩视频国产视频| 久久激五月天综合精品| 欧美精品一区二区三| 久久久91精品国产一区二区精品| 国产精品伦一区| 日日嗨av一区二区三区四区| 国产精品亚洲一区二区三区妖精| 99久久精品国产网站| 综合自拍亚洲综合图不卡区| 精品系列免费在线观看| 欧美亚洲尤物久久| 视频在线观看一区二区三区| 91精品国产色综合久久ai换脸| 日本不卡一区二区三区| 成人激情免费网站| 亚洲欧美日韩国产中文在线| 精品视频资源站| 蜜桃精品视频在线观看| 一本到三区不卡视频| 亚洲一区视频在线| 北条麻妃一区二区三区| 亚洲色图在线播放| 欧美日韩国产另类不卡| 亚洲视频免费在线| 欧美日韩精品一区二区| 久久91精品久久久久久秒播| 国产三级一区二区三区| 色婷婷国产精品| 免费观看在线综合| 国产精品激情偷乱一区二区∴| 色88888久久久久久影院野外| 国产精品久久久久影视| 欧美日韩国产综合久久| 国产一区高清在线| 欧美tickling网站挠脚心| 福利一区福利二区| 五月天一区二区三区| 色综合久久久久| 伦理电影国产精品| 亚洲女同一区二区| 精品99999| 欧美日韩在线播放三区| 丁香亚洲综合激情啪啪综合| 亚洲福利视频一区二区| 久久久不卡影院| 国产一区欧美日韩| 亚洲国产一区二区三区| 国产精品国产三级国产有无不卡 | 国产高清精品久久久久| 久久这里都是精品| 精品亚洲国内自在自线福利| 亚洲最新视频在线播放| 欧美国产精品专区| 欧美大片一区二区| 欧美日韩情趣电影| 91在线视频免费91| 国产69精品久久777的优势| 日韩二区三区四区| 一区二区成人在线观看| 中文字幕欧美一| 国产日韩欧美a| jizzjizzjizz欧美| 国产福利一区二区三区视频在线| 日韩电影在线免费看| 亚洲精品视频免费看| 欧美少妇一区二区| 99re这里只有精品视频首页| 国产一区二区精品久久99| 日本女优在线视频一区二区| 亚洲国产视频在线| 亚洲丝袜自拍清纯另类| 国产精品国产三级国产aⅴ中文| 欧美成人高清电影在线| 91精品婷婷国产综合久久性色| 老司机免费视频一区二区三区| 午夜激情久久久| 亚洲成av人片在线观看无码| 亚洲成人久久影院| 亚洲第一成年网| 亚洲一区二区五区| 亚洲成人激情av| 亚洲国产中文字幕在线视频综合 | 欧美日本在线播放| 91久久精品国产91性色tv| 9色porny自拍视频一区二区| 不卡免费追剧大全电视剧网站| 盗摄精品av一区二区三区| 成人国产精品免费观看视频| 成人av在线影院| 99精品热视频| 欧美色偷偷大香| 欧美精品一二三| 欧美成人一区二区三区在线观看| 精品国产乱码久久久久久牛牛| 久久综合资源网| 国产精品久久久久天堂| 一区二区三区四区精品在线视频| 一区二区三区四区国产精品| 日韩综合一区二区| 韩国在线一区二区| 成人免费观看视频| 一本色道**综合亚洲精品蜜桃冫| 欧美猛男超大videosgay| 日韩三区在线观看| 欧美国产精品劲爆| 亚洲一区二区综合| 国内精品第一页| 色综合久久88色综合天天| 在线成人av网站| 亚洲精品一区二区三区在线观看| 国产欧美日韩精品一区| 亚洲在线成人精品| 国产一区二区网址| 色综合视频一区二区三区高清| 在线播放视频一区| 国产精品视频观看| 性做久久久久久| 成人激情校园春色| 欧美一区日本一区韩国一区| 国产欧美日韩亚州综合| 一区二区三区成人| 国产一区二区导航在线播放| 91麻豆自制传媒国产之光| 日韩欧美中文字幕公布| 中文字幕亚洲电影| 精品一区二区三区视频| 色婷婷精品大视频在线蜜桃视频| 精品久久免费看| 亚洲一区二区综合| 丁香六月久久综合狠狠色| 欧美一区二区三区在线| 亚洲欧美偷拍另类a∨色屁股| 久久草av在线| 欧美日韩国产综合视频在线观看 | 久久精品日韩一区二区三区| 亚洲与欧洲av电影| 99精品偷自拍| 久久九九久久九九| 蜜臀av一区二区三区| 91麻豆精品一区二区三区| 国产亚洲一本大道中文在线| 亚洲v精品v日韩v欧美v专区| 色综合天天在线| 欧美日韩在线免费视频| 国产精品美女久久久久aⅴ国产馆| 美女久久久精品| 91精品国产乱码久久蜜臀| 夜夜亚洲天天久久| 91在线精品一区二区| 久久精品综合网| 韩国v欧美v亚洲v日本v| 日韩视频免费观看高清完整版在线观看 | 精品综合免费视频观看| 欧美性欧美巨大黑白大战| 中文字幕一区二区5566日韩| 国产 日韩 欧美大片| 久久午夜色播影院免费高清| 久久国产精品色婷婷| 欧美一区二视频| 香蕉乱码成人久久天堂爱免费| 91高清在线观看| 一区二区三区加勒比av| 在线亚洲人成电影网站色www| 最新成人av在线| 91麻豆精品视频| 一区二区三区成人| 欧美视频一区二区|