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

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

?? c.y

?? C編譯器,在VC6.0環境下開發
?? Y
?? 第 1 頁 / 共 5 頁
字號:
					// cmp	ax,	dx
					gen_cmp("ax", "dx");
					// je	lab1
					gen_jump("je", 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;
			}
		|	equality_expression oUNEQU relational_expression
			{
				symbol	*p;

				PARSE_INFO("equality_expression :equality_expression oUNEQU 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");

					// cmp	ax,	dx
					gen_cmp("ax", "dx");
					// jne	lab1
					gen_jump("jne", 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;
			}
		;

relational_expression
		:	shift_expression
			{
				PARSE_INFO("relational_expression :shift_expression")
			}
		|	relational_expression oLT shift_expression
			{
				symbol	*p;

				PARSE_INFO("relational_expression :relational_expression oLT shift_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");

					// cmp	ax,	dx
					gen_cmp("ax", "dx");
					// jl	lab1
					gen_jump("jl", 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;
			}
		|	relational_expression oGT shift_expression
			{
				symbol	*p;

				PARSE_INFO("relational_expression :relational_expression oGT shift_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");

					// cmp	ax,	dx
					gen_cmp("ax", "dx");
					// jg	lab1
					gen_jump("jg", 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;
			}
		|	relational_expression oLE shift_expression
			{
				symbol	*p;

				PARSE_INFO("relational_expression :relational_expression oLE shift_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");

					// cmp	ax,	dx
					gen_cmp("ax", "dx");
					// jle	lab1
					gen_jump("jle", 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;
			}
		|	relational_expression oGE shift_expression
			{
				symbol	*p;

				PARSE_INFO("relational_expression :relational_expression oGE shift_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");

					// cmp	ax,	dx
					gen_cmp("ax", "dx");
					// jge	lab1
					gen_jump("jge", 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;
			}
		;

shift_expression
		:	additive_expression
			{
				PARSE_INFO("shift_expression :additive_expression")
			}
		|	shift_expression oLFTSHT additive_expression
			{
				symbol	*p;

				PARSE_INFO("shift_expression :oLFTSHT additive_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", "cx");

					// shl ax, cl
					gen_shl("ax", "cl");
					// push	ax
					gen_push_reg("ax");

					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		|	shift_expression oRITSHT additive_expression
			{
				symbol	*p;

				PARSE_INFO("shift_expression :oRITSHT additive_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", "cx");

					// shr ax, cl
					gen_shr("ax", "cl");
					// push	ax
					gen_push_reg("ax");

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

additive_expression
		:	multiplicative_expression
			{
				PARSE_INFO("additive_expression :multiplicative_expression")
			}
		|	additive_expression oPLUS multiplicative_expression
			{
				symbol	*p;

				PARSE_INFO("additive_expression :additive_expression oPLUS multiplicative_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
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					// add	ax,	dx
					gen_add("ax", "dx");
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		|	additive_expression oMINUS multiplicative_expression
			{
				symbol	*p;

				PARSE_INFO("additive_expression :additive_expression oMINUS multiplicative_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
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

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

multiplicative_expression
		:	cast_expression
			{
				PARSE_INFO("multiplicative_expression :cast_expression")
			}
		|	multiplicative_expression oMUL cast_expression
			{
				symbol	*p;

				PARSE_INFO("multiplicative_expression :multiplicative_expression oMUL cast_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
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					// imul	dx
					gen_mul("dx");
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		|	multiplicative_expression oDIV cast_expression
			{
				symbol	*p;

				PARSE_INFO("multiplicative_expression :multiplicative_expression oDIV cast_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
				{
					p = gen_get_two_op_not_cl($1, $3, "ax", "dx");

					// idiv	dx
					gen_div("dx");
					// push	ax
					gen_push_reg("ax");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		|	multiplicative_expression oMOD cast_expression
			{
				symbol	*p;

				PARSE_INFO("multiplicative_expression :multiplicative_expression oMOD cast_expression")
				CHECK_BIT_OP_TYPE($1)
				CHECK_BIT_OP_TYPE($3)
				if ( IS_CL($1) && IS_CL($3) )
				{
					// calcu it
					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");

					// idiv	dx
					gen_div("dx");
					// push	dx
					gen_push_reg("dx");
					
					// set rvalue flag
					p->is_rvalue = 1;
					// set pused flag
					p->is_pushed = 1;
				}
				$$ = p;
			}
		;

cast_expression
		:	unary_expression
			{
				PARSE_INFO("cast_expression :unary_expression")
			}
/*	// 類型轉換
		|	oLP type_name oRP cast_expression
			{
				PARSE_INFO("cast_expression :oLP type_name oRP cast_expression")
			}
*/
		;

unary_expression
		:	postfix_expression
			{
				PARSE_INFO("unary_expression :postfix_expression")
			}
		|	oADDADD unary_expression
			{
				PARSE_INFO("unary_expression :oADDADD unary_expression")
				// change itself
				if ( !IS_LVALUE($2) )
				{
					yyerror("'++' needs l-value");
					user_exit(1);
				}
				// gen code
				if ( IS_ARRAY($2) )
					gen_get_array_element($2);

				// change assign value
				gen_inc($2->rname);

				// set rvalue flag
				$2->is_rvalue = 1;
				if ( IS_ARRAY($2) )
				{
					// push ax
					gen_mov_nopush_to_reg($2, "ax");
					gen_push_reg("ax");
					// set pushed flag
					$2->is_pushed = 1;
				}
				$$ = $2;
			}
		|	oSUBSUB unary_expression
			{
				PARSE_INFO("unary_expression :oSUBSUB unary_expression")
				// change itself
				if ( !IS_LVALUE($2) )
				{
					yyerror("'--' needs l-value");
					user_exit(1);
				}
				// gen code
				if ( IS_ARRAY($2) )
					gen_get_array_element($2);

				// change assign value
				gen_dec($2->rname);

				// set rvalue flag
				$2->is_rvalue = 1;
				if ( IS_ARRAY($2) )
				{
					// push ax
					gen_mov_nopush_to_reg($2, "ax");
					gen_push_reg("ax");
					// set pushed flag
					$2->is_pushed = 1;
				}
				$$ = $2;
			}
/*		|	unary_operator cast_expression */
		|	oPLUS cast_expression
			{
				PARSE_INFO("unary_operator :oPLUS cast_expression")
				// only ingore
				if ( !IS_CL($2) )
				{
					// set rvalue flag
					$2->is_rvalue = 1;
					// not pushed for default
				}
				$$ = $2;
			}
		|	oMINUS cast_expression
			{
				PARSE_INFO("unary_operator :oMINUS cast_expression")
		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人影视亚洲图片在线| 欧美r级电影在线观看| 91精品国产综合久久久蜜臀粉嫩 | 亚洲成av人片在线观看| 精品一区二区在线看| 91免费视频观看| 26uuu色噜噜精品一区二区| 一区二区三区小说| 成人av中文字幕| xf在线a精品一区二区视频网站| 亚洲一区二区三区精品在线| 成人黄色免费短视频| 欧美大片在线观看一区| 亚洲6080在线| 欧美影院一区二区| 国产精品三级av在线播放| 久久99国产精品免费网站| 欧美精品日韩精品| 一区二区三区四区激情| 91香蕉国产在线观看软件| 久久久99久久| 狠狠色伊人亚洲综合成人| 欧美老肥妇做.爰bbww| 亚洲综合图片区| 91在线码无精品| 成人欧美一区二区三区在线播放| 国产精品99久| 国产校园另类小说区| 国产一区亚洲一区| 精品理论电影在线| 久久99精品视频| 精品久久久久久亚洲综合网| 亚洲aⅴ怡春院| 欧美精品色综合| 亚洲成在人线免费| 精品污污网站免费看| 午夜一区二区三区在线观看| 在线观看91视频| 夜夜爽夜夜爽精品视频| 在线观看不卡一区| 婷婷激情综合网| 欧美一区2区视频在线观看| 亚洲一二三区在线观看| 欧美午夜精品久久久久久孕妇| 一区二区三区四区在线| 欧美性受极品xxxx喷水| 亚洲综合激情另类小说区| 欧美视频中文一区二区三区在线观看| 亚洲女与黑人做爰| 91在线视频官网| 亚洲午夜精品网| 日韩一区二区在线免费观看| 国产永久精品大片wwwapp| 国产日韩欧美一区二区三区综合| 韩国中文字幕2020精品| 欧美经典一区二区| 国产寡妇亲子伦一区二区| 国产精品不卡一区二区三区| 色呦呦一区二区三区| 全部av―极品视觉盛宴亚洲| 日韩一区二区三| 国产高清无密码一区二区三区| 亚洲女子a中天字幕| 91国在线观看| 美女精品一区二区| 欧美国产97人人爽人人喊| 99精品黄色片免费大全| 亚洲成人免费看| 日本一区二区三区在线不卡| 91视频一区二区| 美女任你摸久久| 亚洲欧洲综合另类| 在线91免费看| 国产精品一区二区x88av| 亚洲久本草在线中文字幕| 91精品国产手机| 91免费小视频| 国产精品一二三区| 午夜一区二区三区在线观看| 国产日韩精品一区二区浪潮av| 在线观看成人免费视频| 成人精品gif动图一区| 免费看欧美美女黄的网站| 国产精品三级在线观看| 欧美一级生活片| 91小视频在线免费看| 韩国成人福利片在线播放| 亚洲国产美女搞黄色| 国产欧美视频一区二区| 欧美一区二区三区四区在线观看 | 成人国产精品视频| 日韩电影在线观看网站| 国产精品久久毛片| 久久精品在线免费观看| 日韩欧美一区二区在线视频| 在线免费观看日韩欧美| www.日韩在线| 国产.欧美.日韩| 国内精品久久久久影院薰衣草| 天堂va蜜桃一区二区三区漫画版| 亚洲欧美一区二区三区孕妇| 欧美极品少妇xxxxⅹ高跟鞋 | 91精品国产麻豆国产自产在线 | 日韩一级成人av| 欧美中文字幕不卡| 色欧美88888久久久久久影院| 国产凹凸在线观看一区二区| 韩国精品主播一区二区在线观看 | 粉嫩久久99精品久久久久久夜 | 国产欧美一区二区三区在线看蜜臀| 4438成人网| 欧美日韩精品一区二区天天拍小说| 在线一区二区三区四区五区| 91香蕉视频mp4| 欧美在线免费视屏| 欧美中文字幕一区二区三区| 欧美在线999| 欧美日韩精品免费| 欧美精品123区| 欧美一区二区在线视频| 日韩欧美一区在线观看| 精品av综合导航| 国产视频在线观看一区二区三区| 久久久国产精品午夜一区ai换脸| 国产女主播视频一区二区| 国产精品嫩草99a| 亚洲特级片在线| 亚洲成人第一页| 免费观看在线色综合| 国产精品资源网站| 成人性生交大片免费| 色偷偷88欧美精品久久久| 欧美色视频一区| 日韩一区二区视频在线观看| 久久综合五月天婷婷伊人| 日本一区二区三区在线观看| 一区二区三区中文字幕在线观看| 亚洲大尺度视频在线观看| 激情偷乱视频一区二区三区| 国产成人啪午夜精品网站男同| 99vv1com这只有精品| 欧美理论片在线| 国产午夜精品一区二区| 综合在线观看色| 日韩av电影天堂| 粉嫩av亚洲一区二区图片| 欧美亚洲国产bt| 精品国产99国产精品| 亚洲六月丁香色婷婷综合久久 | 五月婷婷另类国产| 国产在线精品一区二区夜色| 成人av资源站| 日韩欧美一区在线| 亚洲蜜臀av乱码久久精品 | 91丨九色porny丨蝌蚪| 欧美一级在线免费| 亚洲欧美aⅴ...| 国产一区二区91| 欧美日韩免费一区二区三区视频| 久久青草欧美一区二区三区| 一区二区三区精品久久久| 国产美女主播视频一区| 在线精品视频小说1| 国产女人18水真多18精品一级做| 天天综合网 天天综合色| 93久久精品日日躁夜夜躁欧美| 精品少妇一区二区三区在线播放| 亚洲人成人一区二区在线观看| 国产一区二区网址| 91麻豆精品国产自产在线观看一区 | 国产精品蜜臀av| 日本成人中文字幕| 91行情网站电视在线观看高清版| 久久久亚洲欧洲日产国码αv| 亚洲va欧美va国产va天堂影院| 国产v日产∨综合v精品视频| 欧美一区二区视频在线观看| 亚洲影院免费观看| 91在线国产福利| 国产日韩欧美一区二区三区乱码 | 久久精品欧美日韩| 麻豆精品视频在线观看| 欧美日韩三级一区| 一区二区三区成人在线视频| 一本到三区不卡视频| 中文字幕高清一区| 国产精品一区二区在线看| 精品国产不卡一区二区三区| 麻豆精品视频在线| 欧美刺激午夜性久久久久久久| 婷婷中文字幕综合| 7777精品伊人久久久大香线蕉 | 国产剧情av麻豆香蕉精品| 日韩一级精品视频在线观看| 午夜激情综合网| 欧美日韩精品久久久| 日韩精品一卡二卡三卡四卡无卡| 欧美午夜精品一区二区三区| 亚洲一区二三区| 欧美日韩国产精品自在自线|