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

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

?? c.y

?? C編譯器,在VC6.0環境下開發
?? Y
?? 第 1 頁 / 共 5 頁
字號:
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push ax
					gen_push_reg("ax");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		|	unary_expression oMODASSIGN assignment_expression
			{
				PARSE_INFO("assignment_expression :unary_expression oMODASSIGN assignment_expression")
				if ( !IS_LVALUE($1) )
				{
					yyerror("'%=' : left operand must be l-value");
					user_exit(1);
				}
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				// mov	dx, $3
				gen_mov_value_to_reg($3, "dx");
				// mov	ax, $1
				gen_mov_value_to_reg($1, "ax");
				// idiv	dx
				gen_div("dx");
				// mov	$1, dx
				gen_mov_reg_to_var("dx", $1);
				del_symbol($3);
				// set rvalue flag
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push dx
					gen_push_reg("dx");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		|	unary_expression oBITORASSIGN assignment_expression
			{
				PARSE_INFO("assignment_expression :unary_expression oBITORASSIGN assignment_expression")
				if ( !IS_LVALUE($1) )
				{
					yyerror("'|=' : left operand must be l-value");
					user_exit(1);
				}
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				// mov	ax, $3
				gen_mov_value_to_reg($3, "ax");
				if ( IS_ARRAY($1) )
					gen_get_array_element($1);
				// or	ax,	$1
				gen_or("ax", $1->rname);
				// mov	$1, ax
				gen_mov_reg_to_var("ax", $1);
				del_symbol($3);
				// set rvalue flag
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push ax
					gen_push_reg("ax");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		|	unary_expression oBITANDASSIGN assignment_expression
			{
				PARSE_INFO("assignment_expression :unary_expression oBITANDASSIGN assignment_expression")
				if ( !IS_LVALUE($1) )
				{
					yyerror("'&=' : left operand must be l-value");
					user_exit(1);
				}
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				// mov	ax, $3
				gen_mov_value_to_reg($3, "ax");
				if ( IS_ARRAY($1) )
					gen_get_array_element($1);
				// and	ax,	$1
				gen_and("ax", $1->rname);
				// mov	$1, ax
				gen_mov_reg_to_var("ax", $1);
				del_symbol($3);
				// set rvalue flag
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push ax
					gen_push_reg("ax");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		|	unary_expression oBITXORASSIGN assignment_expression
			{
				PARSE_INFO("assignment_expression :unary_expression oBITXORASSIGN assignment_expression")
				if ( !IS_LVALUE($1) )
				{
					yyerror("'^=' : left operand must be l-value");
					user_exit(1);
				}
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				// mov	ax, $3
				gen_mov_value_to_reg($3, "ax");
				if ( IS_ARRAY($1) )
					gen_get_array_element($1);
				// xor	ax,	$1
				gen_xor("ax", $1->rname);
				// mov	$1, ax
				gen_mov_reg_to_var("ax", $1);
				del_symbol($3);
				// set rvalue flag
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push ax
					gen_push_reg("ax");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		|	unary_expression oLFTSHTASSIGN assignment_expression
			{
				PARSE_INFO("assignment_expression :unary_expression oLFTSHTASSIGN assignment_expression")
				if ( !IS_LVALUE($1) )
				{
					yyerror("'<<=' : left operand must be l-value");
					user_exit(1);
				}
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				// mov	cx, $3
				gen_mov_value_to_reg($3, "cx");
				if ( IS_ARRAY($1) )
					gen_get_array_element($1);
				// shl	$1, cl
				gen_shl($1->rname, "cl");
				del_symbol($3);
				// set rvalue flag
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push ax
					gen_push_reg("ax");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		|	unary_expression oRITSHTASSIGN assignment_expression
			{
				PARSE_INFO("assignment_expression :unary_expression oRITSHTASSIGN assignment_expression")
				if ( !IS_LVALUE($1) )
				{
					yyerror("'>>=' : left operand must be l-value");
					user_exit(1);
				}
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				// mov	cx, $3
				gen_mov_value_to_reg($3, "cx");
				if ( IS_ARRAY($1) )
					gen_get_array_element($1);
				// shr	$1, cl
				gen_shr($1->rname, "cl");
				del_symbol($3);
				// set rvalue flag
				$1->is_rvalue = 1;
				if ( IS_ARRAY($1) )
				{
					// push ax
					gen_push_reg("ax");
					// set pushed flag
					$1->is_pushed = 1;
				}
				// not push, so not set pushed flag
			}
		;

/*
assignment_operator
		:	oASSIGN
			{
				PARSE_INFO("assignment_operator :oASSIGN")
			}
		|	oPLUSASSIGN
			{
				PARSE_INFO("assignment_operator :oPLUSASSIGN")
			}
		|	oMINUSASSIGN
			{
				PARSE_INFO("assignment_operator :oMINUSASSIGN")
			}
		|	oMULASSIGN
			{
				PARSE_INFO("assignment_operator :oMULASSIGN")
			}
		|	oDIVASSIGN
			{
				PARSE_INFO("assignment_operator :oDIVASSIGN")
			}
		|	oMODASSIGN
			{
				PARSE_INFO("assignment_operator :oMODASSIGN")
			}
		|	oBITORASSIGN
			{
				PARSE_INFO("assignment_operator :oBITORASSIGN")
			}
		|	oBITANDASSIGN
			{
				PARSE_INFO("assignment_operator :oBITANDASSIGN")
			}
		|	oBITXORASSIGN
			{
				PARSE_INFO("assignment_operator :oBITXORASSIGN")
			}
		;
*/
			
conditional_expression
		:	logical_OR_expression
			{
				PARSE_INFO("conditional_expression :logical_OR_expression")
			}
		|	logical_OR_expression oQUESTION expression oCOLON conditional_expression
			{
				symbol	*p;

				PARSE_INFO("conditional_expression :logical_OR_expression oQUESTION expression oCOLON conditional_expression")
				if ( !$3 )
				{
					yyerror("empty between '?' and ':'");
					user_exit(1);
				}
				if ( IS_CL($1) && IS_CL($3) && IS_CL($5) )
				{
					cast_cl_type($1, $3);
					cast_cl_type($3, $5);
					cast_cl_type($1, $5);

					switch($1->NOUN)
					{
					case	SPEC_CHAR:
						$1->V_C = ($1->V_C ? $3->V_C : $5->V_C);
						break;
					case	SPEC_INT:
						$1->V_I = ($1->V_I ? $3->V_I : $5->V_I);
						break;
					case	SPEC_DOUBLE:
						$1->V_LF = ($1->V_LF ? $3->V_LF : $5->V_LF);
						break;
					case	SPEC_FLOAT:
						$1->V_F = ($1->V_F ? $3->V_F : $5->V_F);
						break;
					default:
						yyerror("can't do cl operator");
						user_exit(1);
					}
					del_symbol($3);
					del_symbol($5);
					p = $1;
				}
				else
				{
					char	lab1[LABEL_LEN], lab2[LABEL_LEN];

					strcpy(lab1, get_a_label());
					strcpy(lab2, get_a_label());
					// at least one is not cl

					gen_mov_value_to_reg($5, "dx");
					gen_mov_value_to_reg($3, "ax");
					gen_mov_value_to_reg($1, "bx");

					/*  bx ? ax : dx */
					//	or	bx,	bx
					gen_or("bx", "bx");
					//	jnz	lab1
					gen_jump("jnz", lab1);
					//	push	dx
					gen_push_reg("dx");
					//	jmp	lab2
					gen_jump("jmp", lab2);
					//lab1:
					gen_label(lab1);
					//	push	ax
					gen_push_reg("ax");
					//lab2:
					gen_label(lab2);

					if ( !IS_CL($1) )
					{
						del_symbol($3);
						del_symbol($5);
						p  = $1;
					}
					if ( !IS_CL($3) )
					{
						del_symbol($1);
						del_symbol($5);
						p  = $3;
					}
					del_symbol($1);
					del_symbol($3);
					p  = $5;

					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

constant_expression
		:	conditional_expression
			{
				PARSE_INFO("constant_expression :conditional_expression")
			}
		;

logical_OR_expression
		:	logical_AND_expression
			{
				PARSE_INFO("logical_OR_expression :logical_AND_expression")
			}
		|	logical_OR_expression oOR logical_AND_expression
			{
				symbol	*p;

				PARSE_INFO("logical_OR_expression :logical_OR_expression oOR logical_AND_expression")
				if ( IS_CL($1) && IS_CL($3) )
				{
					cast_cl_type($1, $3);
					_CL_DOUBLE_OPERATION($1, $3, ||)
					del_symbol($3);
					p = $1;
				}
				else
				{
					char	lab1[LABEL_LEN], lab2[LABEL_LEN];

					strcpy(lab1, get_a_label());
					strcpy(lab2, get_a_label());
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					//	or	ax,	ax
					gen_or("ax", "ax");
					// jnz	lab1
					gen_jump("jnz", lab1);
					//	or	dx,	dx
					gen_or("dx", "dx");
					//	jnz	lab1
					gen_jump("jnz", lab1);
					//	xor	ax,	ax
					gen_xor("ax", "ax");
					// jmp lab2
					gen_jump("jmp", lab2);
					// lab1:
					gen_label(lab1);
					// mov	ax,	1
					gen_mov_cl("ax", 1);
					// lab2:
					gen_label(lab2);
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

logical_AND_expression
		:	inclusive_OR_expression
			{
				PARSE_INFO("logical_AND_expression :inclusive_OR_expression")
			}
		|	logical_AND_expression oAND inclusive_OR_expression
			{
				symbol	*p;

				PARSE_INFO("logical_AND_expression :logical_AND_expression oAND inclusive_OR_expression")
				if ( IS_CL($1) && IS_CL($3) )
				{
					cast_cl_type($1, $3);
					_CL_DOUBLE_OPERATION($1, $3, &&)
					del_symbol($3);
					p = $1;
				}
				else
				{
					char	lab1[LABEL_LEN], lab2[LABEL_LEN];

					strcpy(lab1, get_a_label());
					strcpy(lab2, get_a_label());
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					//	or	ax,	ax
					gen_or("ax", "ax");
					// jz	lab1
					gen_jump("jz", lab1);
					//	or	dx,	dx
					gen_or("dx", "dx");
					//	jz	lab1
					gen_jump("jz", lab1);
					//	mov	ax,	1
					gen_mov_cl("ax", 1);
					// jmp lab2
					gen_jump("jmp", lab2);
					// lab1:
					gen_label(lab1);
					// xor	ax, ax
					gen_xor("ax", "ax");
					// lab2:
					gen_label(lab2);
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

inclusive_OR_expression
		:	exclusive_OR_expression
			{
				PARSE_INFO("inclusive_OR_expression :exclusive_OR_expression")
			}
		|	inclusive_OR_expression oBITOR exclusive_OR_expression
			{
				symbol	*p;

				PARSE_INFO("inclusive_OR_expression :inclusive_OR_expression oBITOR exclusive_OR_expression")
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				if ( IS_CL($1) && IS_CL($3) )
				{
					cast_cl_type($1, $3);
					_CL_DOUBLE_BIT_OPERATION($1, $3, |)
					del_symbol($3);
					p = $1;
				}
				else
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					// or ax, dx
					gen_or("ax", "dx");
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

exclusive_OR_expression
		:	AND_expression
			{
				PARSE_INFO("exclusive_OR_expression :AND_expression")
			}
		|	exclusive_OR_expression oBITXOR AND_expression
			{
				symbol	*p;

				PARSE_INFO("exclusive_OR_expression :exclusive_OR_expression oBITXOR AND_expression")
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				if ( IS_CL($1) && IS_CL($3) )
				{
					cast_cl_type($1, $3);
					_CL_DOUBLE_BIT_OPERATION($1, $3, ^)
					del_symbol($3);
					p = $1;
				}
				else
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					// xor ax, dx
					gen_xor("ax", "dx");
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

AND_expression
		:	equality_expression
			{
				PARSE_INFO("AND_expression :equality_expression")
			}
		|	AND_expression oBITAND equality_expression
			{
				symbol	*p;

				PARSE_INFO("AND_expression :AND_expression oBITAND equality_expression")
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				if ( IS_CL($1) && IS_CL($3) )
				{
					cast_cl_type($1, $3);
					_CL_DOUBLE_BIT_OPERATION($1, $3, &)
					del_symbol($3);
					p = $1;
				}
				else
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					// and ax, dx
					gen_and("ax", "dx");
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

equality_expression
		:	relational_expression
			{
				PARSE_INFO("equality_expression :relational_expression")
			}
		|	equality_expression oEQUAL relational_expression
			{
				symbol	*p;

				PARSE_INFO("equality_expression :equality_expression oEQUAL relational_expression")
				if ( IS_CL($1) && IS_CL($3) )
				{
					// calcu it
					cast_cl_type($1, $3);
					_CL_DOUBLE_OPERATION($1, $3, ==)
					del_symbol($3);
					p = $1;
				}
				else
				{
					char	lab1[LABEL_LEN], lab2[LABEL_LEN];

					strcpy(lab1, get_a_label());
					strcpy(lab2, get_a_label());
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品中文字幕一区二区小辣椒| 欧美aaaaa成人免费观看视频| 精品污污网站免费看| 国产一区二区中文字幕| 伊人开心综合网| 精品电影一区二区| 欧美日韩成人综合| 91在线国产观看| 国产成人av网站| 久久成人18免费观看| 亚洲一区精品在线| 国产精品久久久久久久久果冻传媒| 欧美一区日本一区韩国一区| 91同城在线观看| 国产成人在线视频网址| 欧美aaaaa成人免费观看视频| 亚洲欧美另类图片小说| 国产欧美日韩麻豆91| 欧美一区二区三级| 欧美日本视频在线| 91福利资源站| 成人av免费在线播放| 国产露脸91国语对白| 久久se精品一区精品二区| 石原莉奈在线亚洲二区| 亚洲成人1区2区| 亚洲一区二区三区四区不卡| 国产精品国产三级国产普通话三级| 26uuu另类欧美亚洲曰本| 欧美本精品男人aⅴ天堂| 91精品国产91久久久久久一区二区| 欧美在线你懂的| 在线观看一区日韩| 欧美午夜宅男影院| 欧美人牲a欧美精品| 欧美久久久久中文字幕| 欧美日精品一区视频| 欧美日韩在线播放一区| 精品欧美黑人一区二区三区| 欧美精品日韩一本| 欧美一级免费观看| 日韩欧美123| 久久日韩精品一区二区五区| 久久无码av三级| 久久精品免费在线观看| 欧美国产国产综合| 1024成人网| 亚洲一卡二卡三卡四卡五卡| 日本亚洲欧美天堂免费| 麻豆精品一二三| 国产精品12区| 91麻豆精品在线观看| 欧美亚洲动漫精品| 欧美一区二区三区电影| 久久久青草青青国产亚洲免观| 国产精品免费丝袜| 亚洲精品成人少妇| 奇米精品一区二区三区在线观看一 | 成人教育av在线| 成人免费视频网站在线观看| 99国产精品国产精品毛片| 欧美中文字幕不卡| 欧美一区二区三区爱爱| 国产欧美精品在线观看| 亚洲欧美日韩成人高清在线一区| 亚洲一区在线视频| 麻豆专区一区二区三区四区五区| 国产东北露脸精品视频| 91免费看`日韩一区二区| 欧美日韩国产精品成人| 久久青草欧美一区二区三区| 最近日韩中文字幕| 日本中文一区二区三区| 成人午夜av影视| 欧美日韩国产综合久久| 国产亚洲自拍一区| 亚洲自拍偷拍欧美| 狠狠色伊人亚洲综合成人| 99久久综合色| 欧美成人欧美edvon| 国产精品久久久久精k8| 日本视频一区二区| 不卡一区二区在线| 亚洲免费色视频| 极品销魂美女一区二区三区| 99久久免费精品高清特色大片| 91精品国产综合久久福利| 国产精品视频免费看| 麻豆精品视频在线观看视频| 99re成人精品视频| 精品乱人伦小说| 一二三区精品视频| 韩国欧美国产1区| 欧美精品1区2区| 亚洲欧洲99久久| 国产九色精品成人porny| 欧美日韩和欧美的一区二区| 亚洲国产精品ⅴa在线观看| 蜜桃av一区二区在线观看| 色综合天天性综合| 久久久精品一品道一区| 美女脱光内衣内裤视频久久网站| 一道本成人在线| 欧美国产97人人爽人人喊| 理论片日本一区| 欧美丰满少妇xxxbbb| 一区二区日韩av| 不卡区在线中文字幕| 久久婷婷色综合| 蜜臀精品一区二区三区在线观看| 欧洲国产伦久久久久久久| 久久久久国产精品人| 毛片av一区二区三区| 欧美高清dvd| 亚洲一区av在线| 91视频一区二区三区| 一区精品在线播放| 丁香六月综合激情| 国产精品无码永久免费888| 国产乱国产乱300精品| 久久亚洲二区三区| 久久狠狠亚洲综合| 欧美va天堂va视频va在线| 日韩国产欧美在线播放| 欧美另类videos死尸| 亚洲国产精品久久人人爱蜜臀| 色国产综合视频| 一区二区三区日韩精品视频| 91碰在线视频| 亚洲精品视频免费观看| 99热这里都是精品| 亚洲欧洲国产日韩| 色视频成人在线观看免| 亚洲欧美日韩国产中文在线| 91久久免费观看| 亚洲国产综合视频在线观看| 91黄色在线观看| 亚洲小说春色综合另类电影| 欧美视频完全免费看| 亚洲成人黄色小说| 555www色欧美视频| 久久精品国产一区二区三| 精品国产髙清在线看国产毛片| 激情六月婷婷久久| 国产亚洲午夜高清国产拍精品 | 精品精品国产高清一毛片一天堂| 亚洲国产综合91精品麻豆| 欧美色精品在线视频| 五月天婷婷综合| 日韩欧美国产综合在线一区二区三区| 婷婷中文字幕综合| 欧美电影免费观看完整版| 国产米奇在线777精品观看| 久久久久久久综合色一本| 本田岬高潮一区二区三区| 亚洲精品日韩一| 欧美久久久久中文字幕| 精品一区二区在线免费观看| 中文一区二区在线观看| 91高清在线观看| 久88久久88久久久| 国产精品美女久久久久aⅴ国产馆| 99久久久久久| 日韩成人dvd| 欧美激情一区二区三区| 色久综合一二码| 免费xxxx性欧美18vr| 欧美国产综合色视频| 在线观看区一区二| 老司机精品视频在线| |精品福利一区二区三区| 欧美精品日韩综合在线| 国产福利一区二区三区在线视频| 亚洲视频在线一区二区| 日韩欧美专区在线| 成人av免费在线播放| 日本少妇一区二区| 亚洲欧洲www| 欧美成人a∨高清免费观看| 成人在线视频一区二区| 婷婷中文字幕综合| 中文字幕一区二区三区av| 欧美一区二区播放| 色综合夜色一区| 国精品**一区二区三区在线蜜桃| 亚洲欧美另类图片小说| 国产精品久久久久久久第一福利| 精品视频在线视频| 成人影视亚洲图片在线| 蜜臀av一区二区| 亚洲美女一区二区三区| 久久久精品欧美丰满| 欧美情侣在线播放| 99riav一区二区三区| 狠狠色狠狠色综合日日91app| 亚洲一区二区成人在线观看| 欧美激情一区二区三区四区| 日韩精品在线网站| 欧美高清你懂得| 色综合久久综合网97色综合 |