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

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

?? expr.c

?? Outputs messages to a 2line LCD
?? C
?? 第 1 頁 / 共 3 頁
字號:
            		ot("adiw\tr26,");
               else
               	ot("adiw\tr30,");
//	           	gpush(CINT);
//				   immed(stpt);
//		   		prefix();
		      	onum(offset);
		         nl();
//		         gadd(-1);
	            }
	         else
	           	stpt->offset = offset;
            if (match("[")) {
            	if (stpt->ident != ARRAY) {
               	error("Cannot subscript");
	      			junk();
	      			needbrack("]");
	               k = 0;
                  return k;
	      			}
	   			CINTpushPending = FALSE;
   	      	k = doIndexes(stpt);
      	      if (k) {
               	if (!ItemWasZero) {
					   	if (stpt->type == CINT || stpt->type == UCINT || stpt->type == VOID) {
                  		if (symtab[osymptr].type == CCHAR) {
	                     	ol("clr\tr31");
	                        flag = 0;
	                        }
						      gaslint();
	                     }
						   else
						   if (stpt->type == CLONG) {
						      gaslint();
						      gaslint();
						      }
	                  Constant = 0;
	                  }
                	}
               if (stkptr)
               	doimmed(stpt, 0, 0);

               if (!(stpt->storage == STATIC || stpt->storage == PUBLIC))
               	if (!CINTpushPending)
               		gpop(CINT);
               if ((TheCast == 0 || TheCast == CCHAR) && symtab[osymptr].type == CCHAR && flag)
               	ol("clr\tr31");
               if (!ItemWasZero) {
               	gpop(CINT);
               	ol("add\tr26,r30");
               	ol("adc\tr27,r31");
               	InX = 1;
                  }
				   stpt->pointing = 1;
               if (stkptr) {
               	if (stpt->type == STRUCTINST)
                  	gpush(stack[stkptr].type);
               	else
               		stkptr--;
                  }
               if (!stpt->type == CLONG && stpt->storage == PUBLIC)
               	gpush(CINT);
				   Indexing = 0;
               }
         	}
     		stpt->pointing = 1;      // the pointer is pointing
     		return (1);
        	}
      else
      	return (k);
      }
}


static int heir11(STATE *stpt) {
   int k, ptr, pp;
   int flag, oldnargs;
	int type;
   char text[50];

   k = primary(stpt);
   ptr = stpt->ptr;
   if (funcptr > 0) {
      // parameter checking
      pp = funcptr;
      if (symtab[funcptr].ident == FUNCPTR)
         pp = symtab[funcptr].args;
      if (ptr) {
         if (symtab[pp].argtype[nargs].ident == symtab[ptr].ident &&
               symtab[pp].argtype[nargs].type == symtab[ptr].type)
        		;
         else
         if (stpt->cast && stpt->cast != POINTER && stpt->cast != symtab[pp].argtype[nargs].type)
         	error("Incorrect parameter type in function call");
         }
      else {
         if (symtab[pp].argtype[nargs].ident == VARIABLE &&
             	(symtab[pp].argtype[nargs].type == CINT ||
              	 symtab[pp].argtype[nargs].type == UCINT ||
              	 symtab[pp].argtype[nargs].type == CCHAR ||
              	 symtab[pp].argtype[nargs].type == UCCHAR))
            FuncArgType = symtab[pp].argtype[nargs].type;
         else
         if (symtab[pp].argtype[nargs].ident == POINTER && stpt->ident == POINTER)
            FuncArgType = symtab[pp].argtype[nargs].type;
         else
            error("Incorrect parameter type in function call");
         }
      if (stpt->ident == FUNCTION)
      	FuncArgType = CINT;
      }
   blanks();
   if (ch() == '.' && stpt->type == STRUCTINST && stpt->ident == ARRAY)
   	error("Requires array addressing");
   if ((ch() == '[') | (ch() == '('))
      while (1) {
         if (match("[")) {
         	ArrayFlag = 1;
         	flag = 1;
				ptr = stpt->ptr;
   			if (!(stpt->ident == ARRAY || stpt->ident == POINTER || stpt->ident == FUNCPTRARR)) {
      			error("can't subscript");
      			junk();
      			needbrack("]");
               k = 0;
      			}
            else
	   		if (stpt->type == STRUCTINST) {
	     			StructureOffset = symtab[ptr].PerEntry;
               Constant = 1;
               StructIsIndexed = TRUE;
               type = stpt->type;
               }
   			CINTpushPending = FALSE;
         	k = doIndexes(stpt);
            if (k) {
            	if (stpt->type == STRUCTINST) {
   					if (symtab[osymptr].type == CCHAR || symtab[osymptr].type == UCCHAR) {
//   						ol("clr\tr31");
                     flag = 0;
                     }
             		if (ch() == '.')
             			return k;

                 	if (type == STRUCTINST) {
         				if (ItemWasZero || !StructIsIndexed)
         					InX = 1;
							doimmed(stpt, 0, 0);
         				if (!ItemWasZero && StructIsIndexed)
       						doStructOff(StructureOffset);
         				InX = 0;
        					stkptr--;
         				ItemWasZero = 0;
                   	}
                  if (!rhs && stkptr > 0)
                  	stkptr--;
						return 0;
						}
//               else
//            	if (stpt->type == STRUCTINST && Constant) {
//                 	immed(stpt);
//                  onum(TheVal);
//                  nl();
//                  }
//               else
//               if (stpt->ident == FUNCPTRARR) {
//               	gaslint();
//                  flag = 0;
//                  }
              	else {
               	if (!ItemWasZero) {
					   	if (stpt->type == CINT || stpt->type == UCINT || stpt->type == VOID) {
                  		if (symtab[osymptr].type == CCHAR) {
	                     	ol("clr\tr31");
	                        flag = 0;
	                        }
						      gaslint();
	                     }
						   else
						   if (stpt->type == CLONG) {
						      gaslint();
						      gaslint();
						      }
	                  Constant = 0;
	                  }
                  }
               if (stkptr) {
               	doimmed(stpt, 0, 0);
               	}

               if (!(stpt->storage == STATIC || stpt->storage == PUBLIC))
               	if (!CINTpushPending)
               		gpop(CINT);
               if ((TheCast == 0 || TheCast == CCHAR) && symtab[osymptr].type == CCHAR && flag)
               	ol("clr\tr31");
               if (!ItemWasZero) {
               	if (stpt->storage == ROM) {
                  	ol("add\tr30,r26");
                     ol("adc\tr31,r27");
                     InX = 0;
                     }
                  else {
	               	ol("add\tr26,r30");
	               	ol("adc\tr27,r31");
	               	InX = 1;
                    	}
                  }
               StructureOffset = 0;
				   stpt->pointing = 1;
//               stpt->storage = AUTO;
               if (stkptr) {
               	if (stpt->type == STRUCTINST)
                  	gpush(stack[stkptr].type);
               	else
               		stkptr--;
                  }
               if (!stpt->type == CLONG && stpt->storage == PUBLIC)
               	gpush(CINT);
				   Indexing = 0;
               }
            ArrayFlag = 0;
            }
         else 
         if (match("(")) {
            funcptr = ptr;
            oldnargs = nargs;
            if (ptr == 0)
               callfunction(0);
            else
            if (symtab[ptr].ident != FUNCTION && symtab[ptr].ident != FUNCDEF) {
               callfunction(0);
               }
            else
               callfunction(ptr);
            k = 0;
            nargs = oldnargs;
//          	stpt->ptr = 0;
            funcptr = -1;
            InX = 0;
            } 
         else
            return (k);
         }

   if (ptr == 0)
      return (k);
   if (ptr < SYMTBSZ && (symtab[ptr].ident == FUNCTION || symtab[ptr].ident == FUNCDEF)) {
      if (funcptr < 0)
         funcptr = 0;
      else {
         ot("ldiz\t");
         InsertPrefix(text);
         strcat(text, symtab[ptr].name);
         outstr(text);
         outstr(">>1");             // adjust for AVR 16-bit address space
         nl();
         return (0);
         }
      }
   
   return (k);
}



static int doIndexes(STATE *stpt) {
	int old_rhs, ptr;
	int asize;

	ptr = stpt->ptr;
   Emitting = 1;
   if (symtab[ptr].ident == POINTER)
      rvalue(stpt);
   if (stkptr == 0 && stpt->storage != PUBLIC)
   	CINTpushPending = TRUE;
   old_rhs = rhs;
   rhs = 0;
   Indexing = 1;
   expression(YES);
//   if (stpt->storage == AUTO)
//   	asize = abs(symtab[stpt->ptr].offset / 2);
//   else
   asize = abs(symtab[stpt->ptr].offset);
   if (!(stpt->ident == POINTER) && TheIndex >= asize)
     	error("Array dimension exceeded");
   rhs = old_rhs;
   needbrack("]");
   ArrayFlag = 0;
//   InX = 0;
   return (1);
}




static void Check2Cast(STATE *st1pt, STATE *st2pt) {

   if (symtab[st1pt->ptr].reg && symtab[st2pt->ptr].ident == ARRAY && symtab[st2pt->ptr].reg)
      error("Cannot point to a register variable");
   if (st2pt->cast > 0) {
   	if (st2pt->ptr == 0) {
      	if (st1pt->type != st2pt->type)
         	error("Destination type does not match cast type");
			}
		else
      // we must check for sign extend
      if (st1pt->type == CLONG && st2pt->type == CINT && st2pt->cast == CLONG)
         long_sign_extend(st2pt);
      else
      if (st1pt->type == CLONG && st2pt->type == CCHAR && st2pt->cast == CLONG)
         char2long_sign_extend(st2pt);
      else
      if (st1pt->type == CINT && st2pt->type == CCHAR && st2pt->cast == CINT)
         int_sign_extend(st2pt);
      else
      if (st1pt->type == CINT && st2pt->type == CLONG && st2pt->cast == CINT)
         long2int(st2pt);
      else
      if (st1pt->type == CCHAR && st2pt->type == CLONG && st2pt->cast == CCHAR)
         long2int(st2pt);
      else
      if (st1pt->type == CCHAR && st2pt->type == CINT && st2pt->cast == CCHAR)
         ;
      st2pt->type = st2pt->cast;    // from now on
      st2pt->cast = 0;              // cast is done
      }
   if (st2pt->ptr > 0) {
   	if ((st1pt->ident == FUNCPTR && st2pt->ident == FUNCPTRARR) ||
      	 (st2pt->ident == FUNCPTR && st1pt->ident == FUNCPTRARR))
			;
      else
      if (st1pt->type == VOID || st2pt->type == VOID)
      	;
      else
   	if (st1pt->type != st2pt->type) {
      	if (st1pt->type == CINT && st2pt->type == UCINT)
         	;
			else
      	if (st1pt->type == UCINT && st2pt->type == CINT)
         	;
         else
         if (st1pt->type == CCHAR && st2pt->type == UCCHAR)
         	;
         else
         if (st1pt->type == UCCHAR && st2pt->type == CCHAR)
         	;
         else
      	if (!(st1pt->type == CSTRUCT && st2pt->type == STRUCTINST)) {
         	if (!PointerFlag)
      			error("Variable type mismatch - requires a cast.");
            }
        	}
      }
}



void Check1Cast(STATE *stpt) {
   int cast;

   if (stpt->ptr > 0 && stpt->cast > 0) {
      cast = stpt->cast;
      // we must check for sign extend
      if (stpt->type == CINT && cast == CLONG)  // int to long
         long_sign_extend(stpt);
      else
      if (stpt->type == UCINT && cast == CLONG) {
      	ol("clr\tr27");
         ol("clr\tr26");
         }
      else
      if (stpt->type == CCHAR && cast == CINT)  // char to int
         int_sign_extend(stpt);
      else
      if (stpt->type == UCCHAR && cast == CINT) {	// uchar to int
      	if (InX)
         	ol("clr\tr27");
         else
         	ol("clr\tr31");
			}
      else
      if (stpt->type == CCHAR && cast == CLONG) // char to long
         char2long_sign_extend(stpt);
      stpt->type = cast;      // from now on
      }

   if (stpt->ident == POINTER || stpt->ident == FUNCPTR || stpt->ident == FUNCPTRARR) {
    	if (stpt->ident == POINTER && stpt->pointing)
         FuncArgType = stpt->type;
      else
    		FuncArgType = CINT;
      }
  	else
     	FuncArgType = stpt->type;
}


static void EvalRight(int (*eval)(), STATE *st1pt, STATE *st2pt) {
   st2pt->cast = 0;
   osymptr = st1pt->ptr;
   if ((*eval)(st2pt)) {
      Check2Cast(st1pt, st2pt);
      rvalue(st2pt);
      }
}



void LoadBase(STATE *stpt) {
   char text[100], txt[20];

   immed(stpt);
   if (stpt->storage == PUBLIC || stpt->storage == STATIC || stpt->storage == EXTERN) {
   	InsertPrefix(text);
   	strcat(text, symtab[stpt->ptr].name);
      if (stpt->offset > 0) {
      	strcat(text, "+");
         sprintf(txt, "%d", stpt->offset);
         strcat(text, txt);
         }
      outname(text);
      if (stpt->ident == FUNCTION) {
      	outstr(">>1");
      	nl();
         }
   	}
 	else {
  		outstr(symtab[stpt->ptr].name);
   	if (stpt->offset > 0) {
     		outstr("+");
      	onum(stpt->offset);
      	}
   	nl();
      }
}




static int GetStructItem(STATE *stpt, char *sname, int *t) {
	int i, offset;
   struct s_symtab *st;

   i = offset = 0;
	st = &symtab[stpt->ptr].entry[0];
   while (st->type != 0) {
     	if (strcmp(sname, (char *)st) == 0)
        	break;
      offset += st->offset;
      st++;
      i++;
      }

   *t = i;
   if (st->type)
   	return (offset);
   else
   	return -1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美在线| 91蝌蚪porny| 精品国产一区久久| 九色|91porny| 久久综合视频网| 精品在线亚洲视频| 国产偷国产偷精品高清尤物| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美天天综合网| 婷婷开心激情综合| 久久综合色鬼综合色| 成人永久aaa| 亚洲大片在线观看| 欧美亚洲动漫精品| 国内久久精品视频| 亚洲色大成网站www久久九九| 天堂一区二区在线| 欧美成人精精品一区二区频| 日韩欧美专区在线| 综合分类小说区另类春色亚洲小说欧美| 亚洲欧美色图小说| 99re这里只有精品视频首页| 久久综合中文字幕| 亚洲天堂精品视频| 欧美一二三四在线| 成人动漫av在线| 丝袜美腿亚洲色图| 337p日本欧洲亚洲大胆色噜噜| 国产成人精品亚洲日本在线桃色 | www.一区二区| 天堂影院一区二区| 亚洲欧洲精品一区二区三区| 欧美日韩一区二区电影| 国产一区二区毛片| 香蕉久久夜色精品国产使用方法 | 欧美成人一区二区三区| www.在线成人| 国产在线播精品第三| 亚洲国产一区视频| 久久精品一区二区三区四区| 欧美伊人久久久久久久久影院| 国产一区二区女| 奇米精品一区二区三区四区| 一区二区视频在线| 欧美高清在线一区二区| 精品成人一区二区三区| 欧美日韩在线直播| 色八戒一区二区三区| 成人在线一区二区三区| 国产在线播精品第三| 男女男精品视频网| 亚洲线精品一区二区三区| 中文字幕一区二区三区色视频| 日韩欧美另类在线| 欧美日韩专区在线| 99久久精品免费看国产免费软件| 黑人巨大精品欧美黑白配亚洲| 亚洲一区视频在线| 中文天堂在线一区| 久久蜜臀精品av| 91精品福利在线一区二区三区| 欧美性猛交xxxx乱大交退制版 | 在线精品亚洲一区二区不卡| av电影在线观看一区| 国产suv精品一区二区三区| 久久成人免费日本黄色| 久久国产精品免费| 久久99精品国产麻豆婷婷洗澡| 日韩电影在线免费看| 午夜精品123| 亚洲五码中文字幕| 一区二区三区**美女毛片| 亚洲欧美乱综合| 亚洲欧美偷拍卡通变态| 亚洲美女淫视频| 一区二区三区四区在线播放| 亚洲精品午夜久久久| 亚洲欧美日韩国产成人精品影院| 亚洲三级在线看| 亚洲一区在线观看视频| 午夜精品爽啪视频| 日韩av电影一区| 久久99久久精品欧美| 韩国精品主播一区二区在线观看 | 久久免费午夜影院| 中文一区二区在线观看| 中文字幕不卡在线观看| 亚洲欧洲日韩一区二区三区| 亚洲黄色录像片| 午夜精品视频一区| 精品一区二区在线观看| 成人免费黄色大片| 91理论电影在线观看| 欧美影片第一页| 日韩一区二区电影网| 久久综合久久综合久久综合| 国产精品夫妻自拍| 亚洲高清在线精品| 国产在线精品不卡| 色系网站成人免费| 欧美一级片在线观看| 久久男人中文字幕资源站| 最新欧美精品一区二区三区| 亚洲二区视频在线| 精品一区二区三区免费观看| www.在线欧美| 6080yy午夜一二三区久久| 337p日本欧洲亚洲大胆色噜噜| 亚洲欧洲国产专区| 五月婷婷综合在线| 国产永久精品大片wwwapp| 91丨九色丨黑人外教| 欧美巨大另类极品videosbest | 毛片av一区二区三区| 国产成人综合在线观看| 91成人在线免费观看| 精品国产一区二区在线观看| 亚洲青青青在线视频| 久久成人精品无人区| 91一区二区三区在线播放| 717成人午夜免费福利电影| 欧美高清在线视频| 日韩不卡一区二区三区| aaa亚洲精品| 日韩欧美一区二区在线视频| 国产精品无人区| 蜜桃av噜噜一区| 欧美在线视频你懂得| 中文字幕av一区二区三区| 蜜臂av日日欢夜夜爽一区| 色婷婷精品久久二区二区蜜臀av | 欧美精品第1页| 亚洲色图19p| 国产成人av影院| 欧美一区二区精品久久911| 中文字幕一区二区三区四区| 国内精品伊人久久久久av一坑| 欧美日韩精品一区二区三区四区| 成人欧美一区二区三区白人| 国内精品第一页| 欧美一级日韩一级| 亚洲va欧美va人人爽| 一本色道久久综合亚洲91| 国产日韩在线不卡| 精品一区二区三区香蕉蜜桃| 91精品国产91久久综合桃花| 亚洲国产精品一区二区久久恐怖片| 99久久精品免费看国产| 国产精品青草久久| 国产成人综合自拍| 久久久久国产精品麻豆ai换脸| 奇米精品一区二区三区在线观看 | 国产99久久久久| 久久久久久久久久电影| 黄色日韩三级电影| 欧美一级高清片| 蜜臀久久久久久久| 7777精品久久久大香线蕉| 视频一区欧美精品| 337p亚洲精品色噜噜噜| 亚洲午夜在线视频| 欧美日韩另类一区| 午夜视频一区二区三区| 欧美视频精品在线观看| 一区二区三区四区不卡视频| 色综合久久88色综合天天6| 亚洲欧美福利一区二区| 色综合天天做天天爱| 一区二区三区四区在线播放 | 91丨porny丨蝌蚪视频| 中文字幕日韩欧美一区二区三区| 国产成人亚洲综合a∨婷婷图片 | 日韩欧美电影一区| 免费成人美女在线观看.| 欧美成人性战久久| 国产高清久久久| 国产精品成人一区二区艾草| 91视频免费看| 日日摸夜夜添夜夜添精品视频| 欧美一区二区网站| 黄色小说综合网站| 国产精品美女视频| 91黄色在线观看| 日韩中文字幕麻豆| 欧美videos大乳护士334| 国产91综合网| 一区二区在线观看免费视频播放| 欧美精品乱码久久久久久按摩| 日本特黄久久久高潮| 日本一区二区三区高清不卡 | 国产成人精品亚洲777人妖| 国产精品福利电影一区二区三区四区 | 成人黄色软件下载| 亚洲日本一区二区三区| 欧美日韩情趣电影| 国产麻豆成人精品| 一区二区在线观看免费视频播放| 日韩视频一区二区三区在线播放| 国产成人av电影在线观看| 亚洲一区二区三区四区的|