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

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

?? codeavr.c

?? Outputs messages to a 2line LCD
?? C
?? 第 1 頁 / 共 4 頁
字號:
	else
  	if (stkptr && stpt->type == CLONG) {
		if (stkptr && stpt->storage == PUBLIC) {
         ot("lds\tr31,");
         outstr(stack[stkptr].name);
         outstr("+0\n");
         ot("lds\tr30,");
         outstr(stack[stkptr].name);
         outstr("+1\n");
         ot("lds\tr27,");
         outstr(stack[stkptr].name);
         outstr("+2\n");
         ot("lds\tr26,");
         outstr(stack[stkptr].name);
         outstr("+3\n");
         stkptr--;
         }
     	else {
      	if (stkptr) {
	      	ot("ldi\tr31,high(");
	         outstr(stack[stkptr].name);
	         outstr(")\n");
	         ot("ldi\tr30,low(");
	         outstr(stack[stkptr].name);
	         outstr(")\n");
	         stkptr--;
	         }
	      else {
	     		ol("ldd\tr26,z+3");
	      	ol("ldd\tr27,z+2");
	      	ol("ldd\tr0,z+1");
	      	ol("ldd\tr31,z+0");
	      	ol("mov\tr30,r0");
	         }
			}
 		return;
   	}

   if (stpt->cast && stpt->ident == POINTER)
   	error("Cannot cast a pointer");
   else {
   	if (stpt->cast == CLONG) {
      	if (stpt->type == CCHAR || stpt->type == UCCHAR) {
         	ot("lds\tr26,");
            NamePrefix();
            outstr(symtab[ptr].name);
            nl();
            if (stpt->type == UCCHAR)
            	gcall("ucharlong_ext", CINT);
            else
					gcall("charlong_ext", CINT);
            }
         else
         if (stpt->type == CINT) {
				ot("lds\tr27,");
				NamePrefix();
				outstr(symtab[ptr].name);
				nl();
				ot("lds\tr26,");
				NamePrefix();
				outstr(symtab[ptr].name);
				outstr("+1");
				nl();
				sign_extend_long(stpt);
            }
         else
            GetMemLong(ptr, stpt->offset);
			}
      else
      if (stpt->cast == CINT) {
      	if (stpt->type == CCHAR || stpt->type == UCCHAR) {
//         	GetMemChar(ptr, stpt->offset);
            sign_extend_int(stpt);
            stpt->type = CINT;
            }
         else
         if (stpt->type == CLONG) {
				ot("lds\tr31,");
				NamePrefix();
				outstr(symtab[ptr].name);
            outstr("+2");
				nl();
				ot("lds\tr30,");
				NamePrefix();
				outstr(symtab[ptr].name);
				outstr("+3");
				nl();
            }
         else
         	GetMemInt(ptr, stpt->offset);
        	}
      else
      if (stpt->cast == CCHAR) {
      	if (stpt->type == CLONG) {
				ot("lds\tr30,");
				NamePrefix();
				outstr(symtab[ptr].name);
				outstr("+3");
				nl();
            }
         else
         if (stpt->type == CINT) {
				ot("lds\tr30,");
				NamePrefix();
				outstr(symtab[ptr].name);
				outstr("+1");
				nl();
            }
         else
         	GetMemChar(ptr, stpt->offset);
         }
      }
}



void sign_extend_int(STATE *stpt) {
  	if (stpt->type == UCCHAR) {
   	if (InX)
   		ol("clr\tr27");
      else
      	ol("clr\tr31");
      }
   else {
   	if (InX)
			gcall("sextx", CINT);
      else
      	gcall("sextz", CINT);
      }
}


void sign_extend_long(STATE *stpt) {
  	if (stpt->type == UCINT)
   	gcall("uintlong_ext", CINT);
   else
		gcall("intlong_ext", CINT);
}


void char2long_sign_extend(STATE *stpt) {
	ol("mov\tr26,r30");
  	if (stpt->type == UCCHAR)
   	gcall("ucharlong_ext", CINT);
   else
		gcall("charlong_ext", CINT);
}



static GetMemChar(int ptr, int offset) {
	ot("lds\tr26,");
	NamePrefix();
	outstr(symtab[ptr].name);
   if (offset) {
     	outstr("+");
      onum(offset);
      }
	nl();
   ol("clr\tr27");
   InX = 1;
}


static GetMemInt(int ptr, int offset) {
	ot("lds\tr27,");
	NamePrefix();
	outstr(symtab[ptr].name);
   if (offset) {
     	outstr("+");
      onum(offset);
      }
	nl();
	ot("lds\tr26,");
	NamePrefix();
	outstr(symtab[ptr].name);
   if (offset) {
     	outstr("+");
      onum(offset);
      }
	outstr("+1");
	nl();
   InX = 1;
}


static GetMemLong(int ptr, int offset) {
	ot("llds\t");
	NamePrefix();
	outstr(symtab[ptr].name);
   if (offset) {
     	ot("+");
      onum(offset);
      }
	nl();
}


// fetch the address of the specified symbol into the primary register

void getloc(STATE *stpt) {
	int k, ptr;
	
	ptr = stpt->ptr;
	if (symtab[ptr].storage == LSTATIC) {
		immed(stpt);
		printlabel(glint(ptr));
		nl();
		}
	else {
   	if (stpt->type == CLONG) {
			ol("mov\tr30,r28");
			ol("mov\tr31,r29");
			k = glint(ptr) - stkp;
	      if (k < 0)
	      	error("Internal error - negative variable offset");
			if (k) {
				ot("adiw\tr30,");
				outdec(k);
				nl();
				}
	      InX = 0;
			}
   	else {
      	if (PointerFlag) {
         	ol("mov\tr30,r28");
            ol("mov\tr31,r29");
            InX = 0;
            }
         else {
				ol("mov\tr26,r28");
				ol("mov\tr27,r29");
            InX = 1;
            }
			k = glint(ptr) - stkp;
	      if (k < 0)
	      	error("Internal error - negative variable offset");
         if (stpt->funcpar)
         	k++;
			if (k) {
         	if (PointerFlag)
					ot("adiw\tr30,");
            else
            	ot("adiw\tr26,");
				outdec(k);
				nl();
				}
	      if (PointerFlag)
        		InX = 0;
         else
	      	InX = 1;
			}
   	}
}



// Store the correct register into the specified static memory cell.
// If the SubFlag is TRUE, then store the secondary register, else
// store the primary.

void putmem(STATE *stpt) {
	char ttt[100], *pt;

	strcpy(ttt, symtab[stpt->ptr].name);
	pt = ttt + strlen(ttt) - 1;
	while ((*pt == '\t') || (*pt == ' '))
		*pt-- = '\0';

	if (symtab[stpt->ptr].ident != POINTER && (symtab[stpt->ptr].type == CCHAR || symtab[stpt->ptr].type == UCCHAR)) {
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
 		if (InX)
   		outstr(",r26");
      else
      	outstr(",r30");
		} 
	else
   if (symtab[stpt->ptr].ident != POINTER && symtab[stpt->ptr].type == CLONG) {
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
      outstr(",r31");
		nl();
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
      outstr("+1,r30");
      nl();
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
      outstr("+2,r27");
		nl();
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
      outstr("+3,r26");
      }
   else
   if (stpt->ident == ARRAY) {
      if (stpt->type == CCHAR || stpt->type == UCCHAR) {
      	ot("st\tx,r30");
         }
      else {
      	ol("st\t-x,r30");
         ot("st\t-x,r31");
         }
      }
   else {
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
      if (InX)
      	outstr(",r27\n");
      else
      	outstr(",r31\n");
		ot("sts\t");
		NamePrefix();
		outstr(ttt);
      if (InX)
      	outstr("+1,r26");
      else
      	outstr("+1,r30");
		}
	nl();
}


// Store a register variable

void putreg(STATE *stpt) {
	int reg;

	reg = symtab[stpt->ptr].reg & ~CONSTANT;
   if (stpt->ident == POINTER || stpt->type == CINT || stpt->type == UCINT) {
      ot("mov\tr");
      onum(reg);
      if (InX)
      	outstr(",r27\n");
      else
      	outstr(",r31\n");
      ot("mov\tr");
      onum(reg - 1);
      if (InX)
      	outstr(",r26\n");
      else
      	outstr(",r30\n");
      }
   else
	if (stpt->type == CCHAR || stpt->type == UCCHAR) {
     	ot("mov\tr");
     	onum(reg);
     	outstr(",r30\n");
      }
   else
   if (stpt->type == CLONG) {
      ot("mov\tr");
      onum(reg);
      outstr(",r31");
      nl();
      ot("mov\tr");
      onum(reg - 1);
      outstr(",r30");
      nl();
      ot("mov\tr");
      onum(reg - 2);
      outstr(",r27");
      nl();
      ot("mov\tr");
      onum(reg - 3);
      outstr(",r26");
      nl();
      }
}


// load a register variable into primary

void getreg(STATE *stpt) {
	int reg;

	reg = symtab[stpt->ptr].reg & ~CONSTANT;

   if (stpt->cast == 0) {
		if (stpt->ident == POINTER || stpt->type == CINT || stpt->type == UCINT) {
	      ot("mov\tr31,r");
	      onum(reg);
	      nl();
	      ot("mov\tr30,r");
	      onum(reg - 1);
	      nl();
         InX = 0;
	      }
	   else
		if (stpt->type == CCHAR || stpt->type == UCCHAR) {
	      ot("mov\tr30,r");
	      onum(reg);
	      nl();
         if (IfFlag || Indexing || CallFunction)
         	sign_extend_int(stpt);
	      }
	   else
	   if (stpt->type == CLONG) {
	      ot("mov\tr31,r");
	      onum(reg);
	      nl();
	      ot("mov\tr30,r");
	      onum(reg - 1);
	      nl();
	      ot("mov\tr27,r");
	      onum(reg - 2);
	      nl();
	      ot("mov\tr26,r");
	      onum(reg - 3);
	      nl();
	     	}
      }
 	else
   if (stpt->ident == POINTER)
     	error("Cannot cast a pointer");
   else {
     	if (stpt->cast == CLONG) {
        	if (stpt->type == CCHAR) {
         	ot("mov\tr26,r");
            onum(reg);
            nl();
            gcall("charlong_ext", CINT);
            }
         else
         if (stpt->type == CINT) {
         	ot("mov\tr26,r");
            onum(reg - 1);
            nl();
            ot("mov\tr27,r");
            onum(reg);
            nl();
            sign_extend_long(stpt);
            }
		   else
		   if (stpt->type == CLONG) {
		      ot("mov\tr31,r");
		      onum(reg);
		      nl();
		      ot("mov\tr30,r");
		      onum(reg - 1);
		      nl();
		      ot("mov\tr27,r");
		      onum(reg - 2);
		      nl();
		      ot("mov\tr26,r");
		      onum(reg - 3);
		      nl();
		     	}
        	stpt->type = CLONG;
         }
      else
      if (stpt->cast == CINT) {
       	if (stpt->type == CCHAR) {
				ot("mov\tr30,r");
            onum(reg);
            nl();
            sign_extend_int(stpt);
            }
         else
         if (stpt->type == CLONG) {
				ot("mov\tr30,r");
            onum(reg - 3);
            nl();
            ot("mov\tr31,r");
            onum(reg - 2);
            nl();
            }
         else
         if (stpt->type == CINT) {
         	ot("mov\tr31,r");
            onum(reg);
            nl();
            ot("mov\tr30,r");
            onum(reg - 1);
            nl();
            }
         stpt->type = CINT;
         }
      else
      if (stpt->cast == CCHAR) {
      	if (stpt->type == CINT || stpt->type == UCINT) {
         	ot("mov\tr30,r");
            onum(reg - 1);
            nl();
            }
         else
         if (stpt->type == CLONG) {
         	ot("mov\tr30,r");
         	onum(reg - 3);
         	nl();
            }
         else
        	if (stpt->type == CCHAR || stpt->type == UCCHAR) {
         	ot("mov\tr30,r");
            onum(reg);
            nl();
            }
         stpt->type = CCHAR;
         }
      stpt->cast = 0;
      }
 	InX = 0;
}


// Long variable sign extend

void long_sign_extend(STATE *stpt) {
   if (!InX) {
   	ol("mov\tr26,r30");
   	ol("mov\tr27,r31");
      }
	sign_extend_long(stpt);
}


// Int variable sign extend

void int_sign_extend(STATE *stpt) {
   sign_extend_int(stpt);
}


// Convert a long to int

void long2int(STATE *st2pt) {
   x2z();
}


void x2z(void) {
   ol("mov\tr30,r26");
   ol("mov\tr31,r27");
}


// store the specified object type in the primary register
// at the address on the top of the stack

void putstk(STATE *stpt, int flag) {

   if (stpt->ident == POINTER && !flag) {
      if (stkptr) {
      	ot("sts\t");
         outstr(stack[stkptr].name);
         if (InX)
         	outstr(",r27\n");
         else
         	outstr(",r31\n");
         ot("sts\t");
         outstr(stack[stkptr].name);
         if (InX)
         	outstr("+1,r26\n");
         else
         	outstr("+1,r30\n");
         stkptr--;
      	}
      else {
   		if (InX)
   			gcall("putstk_i_x", CINT);
			else
   			gcall("putstk_i_z", CINT);
   		stkp += INTSIZE;
         }
		}
   else
	if (stpt->type == CCHAR || stpt->type == UCCHAR) {
      if (stkptr) {
      	ot("sts\t");
         outstr(stack[stkptr].name);
         if (InX)
         	outstr(",r26\n");
         else
         	outstr(",r30\n");
         stkptr--;
      	}
      else {
      	if (InX) {
         	ol("mov\tr30,r26");
            if (symtab[osymptr].type == CINT)
            	ol("mov\tr31,r27");
            InX = 0;
            }
  			gpop(CINT);
//         if (stpt->funcpar)
//         	ol("adiw\tr26,1")
//			if (InX)
//				ol("st\tz,r26");
//			else
				ol("st\tx,r30");					// pchar code
         InX = 0;								// actual value is now in Z
         }
		}
	else
   if (stpt->type == CLONG) {
      if (stkptr) {
      	ot("sts\t");
         outstr(stack[stkptr].name);
        	outstr("+0,r31\n");
      	ot("sts\t");
         outstr(stack[stkptr].name);
        	outstr("+1,r30\n");
      	ot("sts\t");
         outstr(stack[stkptr].name);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区电影| 国产午夜精品美女毛片视频| 久久精品一级爱片| 亚洲成人av一区二区| 成人精品国产一区二区4080| 69堂成人精品免费视频| 中文字幕一区二区三区四区 | 欧美成人伊人久久综合网| 亚洲女同ⅹxx女同tv| 国产成人av电影免费在线观看| 欧美日韩你懂得| 18成人在线观看| 国产·精品毛片| 久久久天堂av| 久久se精品一区二区| 欧美日韩国产影片| 亚洲一区二区三区四区中文字幕| 懂色一区二区三区免费观看| 欧美电影免费观看高清完整版在线观看| 亚洲精品国产精品乱码不99| 粉嫩嫩av羞羞动漫久久久| 欧美精品一区二区三区视频| 日韩国产一二三区| 欧美日韩黄色影视| 亚洲情趣在线观看| 色综合久久久久| 综合色天天鬼久久鬼色| 粉嫩绯色av一区二区在线观看 | 欧美专区日韩专区| 亚洲激情图片一区| 99国内精品久久| 中文字幕av一区二区三区| 高清不卡在线观看av| 国产日韩影视精品| 国产精品18久久久久久久久| 精品国产免费人成在线观看| 久久99九九99精品| 欧美精品一区二区三| 久久国内精品视频| 精品伦理精品一区| 久久国产欧美日韩精品| 国产成人在线视频免费播放| 亚洲欧洲国产日韩| 色婷婷综合久久久久中文| 亚洲免费资源在线播放| 欧美精品九九99久久| 国产精品一区三区| 中文字幕一区二区三区四区不卡| 在线观看国产一区二区| 日韩不卡一二三区| 国产精品传媒在线| 久久精品一区二区三区不卡牛牛| 亚洲国产综合91精品麻豆| 色综合久久综合中文综合网| 亚洲综合久久久久| 欧美日韩国产综合草草| 美女被吸乳得到大胸91| 日韩欧美成人激情| 国产精品系列在线播放| 国产精品久久久久久久久免费丝袜 | 欧美日韩视频在线一区二区| 五月婷婷久久丁香| 制服丝袜国产精品| 国产精品自在在线| 欧美国产激情二区三区| 色哟哟日韩精品| 丝袜诱惑亚洲看片| 精品盗摄一区二区三区| 成人午夜伦理影院| 一区二区理论电影在线观看| 欧美女孩性生活视频| 另类小说图片综合网| 久久精品夜色噜噜亚洲aⅴ| 成人福利视频网站| 亚洲动漫第一页| www成人在线观看| 91亚洲国产成人精品一区二区三 | 国产欧美日韩中文久久| 91网站在线播放| 日韩vs国产vs欧美| 久久久精品免费网站| 91激情在线视频| 日本aⅴ亚洲精品中文乱码| 中文久久乱码一区二区| 欧美视频在线一区| 激情六月婷婷综合| 樱花影视一区二区| 精品国产一区二区三区av性色 | 国产中文字幕一区| 亚洲欧美另类小说| 精品伦理精品一区| 日本精品裸体写真集在线观看| 青青草97国产精品免费观看| 中文字幕一区av| 日韩限制级电影在线观看| 成+人+亚洲+综合天堂| 喷水一区二区三区| 一区在线中文字幕| 欧美电视剧免费全集观看| 91麻豆国产在线观看| 国产在线精品一区二区不卡了| 久热成人在线视频| 亚洲精品成人悠悠色影视| 亚洲国产毛片aaaaa无费看| 免费成人在线影院| 成人免费视频一区二区| 色系网站成人免费| 欧美一级欧美三级| 久久久久国产精品厨房| 国产精品免费aⅴ片在线观看| 国产精品污污网站在线观看 | 中文字幕一区二区在线播放| 欧美精选一区二区| 成人99免费视频| 麻豆成人免费电影| 岛国av在线一区| 日日噜噜夜夜狠狠视频欧美人| 欧美激情中文字幕| 欧美大片拔萝卜| 欧美亚洲国产怡红院影院| 国产91精品露脸国语对白| 免费成人av资源网| 亚洲国产精品一区二区www在线 | 日韩欧美一区二区免费| 91看片淫黄大片一级| 蜜臀av亚洲一区中文字幕| 一区二区三区日韩在线观看| 久久久久久电影| 精品噜噜噜噜久久久久久久久试看| 色狠狠色噜噜噜综合网| 成人永久免费视频| 国产一区二区美女诱惑| 日韩av成人高清| 亚洲成人黄色影院| 亚洲激情六月丁香| 亚洲婷婷在线视频| 久久青草欧美一区二区三区| 欧美一区二区三区免费在线看 | 国产精品18久久久久久久久久久久 | 久久久亚洲精品一区二区三区 | 91最新地址在线播放| 成人网在线免费视频| 久久se精品一区精品二区| 美女视频黄频大全不卡视频在线播放| 一区二区三区在线视频观看| 亚洲视频免费看| 亚洲三级在线播放| 亚洲女与黑人做爰| 日本一区二区三区四区| 国产一区二区伦理片| 亚洲一二三四在线| 在线亚洲人成电影网站色www| 国产精品嫩草99a| 成人av综合在线| 亚洲色图都市小说| 欧美综合色免费| 亚洲网友自拍偷拍| 91精品午夜视频| 毛片一区二区三区| 久久综合999| 91久久线看在观草草青青| 国内精品伊人久久久久影院对白| 亚洲自拍偷拍网站| 自拍偷在线精品自拍偷无码专区| 中文无字幕一区二区三区 | 99精品国产99久久久久久白柏| 日韩你懂的在线播放| 麻豆成人免费电影| 亚洲人成网站影音先锋播放| 色国产综合视频| 视频在线在亚洲| 久久精品日产第一区二区三区高清版| 一本久久精品一区二区| 不卡大黄网站免费看| 欧美色老头old∨ideo| 精品国产乱子伦一区| 一区二区三区高清| 国产麻豆视频精品| 国产一区二区三区四| 亚洲国产日韩综合久久精品| 精品日韩欧美一区二区| 国产99一区视频免费| 亚洲一区二区三区在线看| 亚洲精品精品亚洲| 久久99热这里只有精品| 精品一区二区三区免费视频| 久久99精品国产麻豆婷婷洗澡| 午夜av电影一区| 国产精品久久精品日日| 色噜噜狠狠成人网p站| 日本中文在线一区| 亚洲综合丝袜美腿| 久久综合狠狠综合久久综合88| 成人精品电影在线观看| 日韩国产欧美三级| 一区二区三区国产| 亚洲欧美日韩人成在线播放| 亚洲国产精品高清| 国产亚洲污的网站| 欧美色图第一页|