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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? codeavr.c

?? Outputs messages to a 2line LCD
?? C
?? 第 1 頁 / 共 4 頁
字號:
}


// divide the primary register by INTSIZE

void gasrint(void) {
	ol("lsr\tr31");
	ol("ror\tr30");
}


// Case jump instruction

void gjcase(void) {
//	addglb("_case", 0, 0, 0, 0, 0);
//	ptr = findglb("_case");
//   symtab[ptr].used = 1;
	if (!CheckExtFun("_case"))
	  	ol("extern\t_case");
	ot("rjmp\t_case");
	nl();
}


// Add the primary and secondary registers

void gadd(int type) {
//	if (stkptr == 0) {
//   	if (type < 0)
//			gpop(CINT);
//		else
			gpop(type);
//    	}
   if (type == CLONG) {
   	gcall("add_l", CINT);
      }
   else {
		ol("add\tr26,r30");
//      if (type < 0 || type == CINT)
			ol("adc\tr27,r31");
      InX = 1;
      }
}


// Subtract the primary register from the secondary.
// Move answer to primary.

void gsub(int type) {
	gpop(type);
   if (type == CLONG)
   	gcall("sub_l", CINT);
   else {
   	if (InX) {
			ol("sub\tr26,r30");
     		ol("sbc\tr27,r31");
         }
      else {
      	ol("sub\tr30,r26");
         ol("sbc\tr31,r27");
         }
      }
}


// Multiply the primary and secondary registers.
// For INTs, result in primary, overflow in secondary.

void gmult(int type) {
	gpop(type);
	gcall("mul", type);
}


void umult(int type) {
	gpop(type);
	gcall("umul", type);
}

// divide the secondary register by the primary
// (quotient in primary, remainder in secondary)

void gdiv(int type) {
	gpop(type);
	gcall("div", type);
}


void udiv(int type) {
	gpop(type);
	gcall("udiv", type);
}

// compute the remainder (mod) of the secondary register
// divided by the primary register
// (remainder in primary, quotient in secondary)

void gmod(int type) {
	gdiv(type);
   if (type == CINT)
   	x2z();
   else
   	x2zL();
}


void umod(int type) {
	udiv(type);
   if (type == CINT)
   	x2z();
   else
   	x2zL();
}


void x2zL(void) {
	ol("mov\tr31,r25");
   ol("mov\tr30,r24");
   ol("mov\tr27,r23");
   ol("mov\tr26,r22");
}


// inclusive 'or' the primary and secondary registers

void gor(int type) {
	gpop(type);
   if (type == CLONG)
		gcall("or", type);
   else {
   	ol("or\tr30,r26");
      ol("or\tr31,r27");
      InX = 0;
      }
}


// exclusive 'or' the primary and secondary registers

void gxor(int type) {
	gpop(type);
   if (type == CLONG)
		gcall("xor", type);
	else {
   	ol("eor\tr30,r26");
      ol("eor\tr31,r27");
      InX = 0;
      }
}


// 'and' the primary and secondary registers

void gand(int type) {
	gpop(type);
   if (type == CLONG)
		gcall("and", type);
   else {
   	ol("and\tr30,r26");
      ol("and\tr31,r27");
      InX = 0;
      }
}


// arithmetic shift right the secondary register the number of
// times in the primary register
// (results in primary register)

void gasr(int type) {
	if (type == CLONG) {
   	ol("mov\tr25,r31");
      ol("mov\tr24,r30");
		ol("rcall\t_pop_l_p");
      ol("rcall\t_lsr_l");
      }
   else {
		gpop(type);
		gcall("lsr", type);
   	x2z();
   	InX = 0;
      }
}


// arithmetic shift left the secondary register the number of
// times in the primary register
// (results in primary register)

void gasl(int type) {
	if (type == CLONG) {
   	ol("mov\tr25,r31");
      ol("mov\tr24,r30");
		ol("rcall\t_pop_l_p");
      ol("rcall\t_lsl_l");
      }
   else {
		gpop(type);
		gcall("lsl", type);
	   x2z();
	   InX = 0;
      }
}


// two's complement of primary register

void gneg(int type) {
	if (type == CLONG)
		gcall("neg", type);
	else {
		ol("com\tr30");
   	ol("com\tr31");
	   ol("adiw\tr30,1");
	   InX = 0;
      }
}


// logical complement of primary register

void glneg(int type) {
	if (InX) {
   	ol("mov\tr31,r27");
      ol("mov\tr30,r26");
      }
	gcall("bool", type);
   InX = 0;
}


// one's complement of primary register

void gcom(int type) {
	if (type == CLONG)
		gcall("com", type);
   else {
   	if (InX) {
      	ol("com\tr26");
         ol("com\tr27");
         }
      else {
   		ol("com\tr30");
      	ol("com\tr31");
         }
      }
}


// Convert primary value into logical value (0 if 0, 1 otherwise)

void gbool(int type) {
	gcall("bool", type);
}


// Increment the primary register by 1 if not a POINTER, otherwise
// by the pointer size.

void ginc(STATE *stpt) {

//   IncPending = 0;
   if (symtab[stpt->ptr].ident == POINTER) {
   	if (stpt->type == CLONG) {
      	if (InX)
         	ol("adiw\tr26,4");
         else
         	ol("adiw\tr30,4");
         }
      else
		if (stpt->type == CINT || stpt->type == UCINT) {
      	if (InX)
         	ol("adiw\tr26,2");
         else
				ol("adiw\tr30,2");
        	}
		else
      if (stpt->type == CCHAR || stpt->type == UCCHAR) {
      	if (InX)
         	ol("adiw\tr26,1");
         else
				ol("adiw\tr30,1");
         }
      else
      if (stpt->type == CSTRUCT) {
         if (InX)
         	ot("adiw\tr30,");
         else
         	ot("adiw\tr30,");
         onum(symtab[symtab[stpt->ptr].pntrpntr].PerEntry);
         nl();
         }
      else
      if (stpt->type == STRUCTINST) {
      	if (InX)
         	ot("adiw\tr26,");
         else
         	ot("adiw\tr30,");
         onum(symtab[symtab[stpt->ptr].pntrpntr].offset);
         nl();
         }
      }
   else {
   	if (symtab[stpt->ptr].type == CLONG) {
      	ol("adiw\tr26,1");
         ol("brcc\t$+4");
         ol("adiw\tr30,1");
         }
      else {
      	if (InX)
         	ol("adiw\tr26,1");
         else
				ol("adiw\tr30,1");
         }
      }
}


// decrement the primary register by one if char, INTSIZE if int

void gdec(STATE *stpt) {

//	DecPending = 0;
   if (symtab[stpt->ptr].ident == POINTER) {
   	if (stpt->type == CLONG) {
      	if (InX)
         	ol("sbiw\tr30,4");
         else
         	ol("sbiw\tr30,4");
         }
      else
		if (stpt->type == CINT) {
      	if (InX)
         	ol("sbiw\tr26,2");
         else
				ol("sbiw\tr30,2");
         }
		else {
      	if (InX)
         	ol("sbiw\tr26,1");
         else
				ol("sbiw\tr30,1");
         }
      }
   else {
		if (symtab[stpt->ptr].type == CLONG) {
			ol("sbiw\tr26,1");
         ol("sbci\tr30,0");
         ol("sbci\tr31,0");
			}
		else {
      	if (InX)
         	ol("sbiw\tr26,1");
         else
				ol("sbiw\tr30,1");
         }
      }
}


// Following are the conditional operators.
// They compare the secondary register against the primary register
// and will branch if the condition tested for is TRUE.

// equal

void geq(int type) {
	gpop(type);
   if (type == CLONG)
		ol("rcall\t_cmp_l");
   else {
		ol("sub\tr30,r26");
	  	ol("sbc\tr31,r27");
      }
	ol("breq\t$+4");
   InX = 0;
}


// not equal

void gne(int type) {
	gpop(type);
   if (type == CLONG)
		ol("rcall\t_cmp_l");
   else {
   	ol("sub\tr30,r26");
      ol("sbc\tr31,r27");
      }
  	ol("brne\t$+4");
   InX = 0;
}


// less than (signed)

void glt(int type) {
	gpop(type);
   if (type == CLONG)
		ol("rcall\t_cmp_l");
   else {
   	ol("sub\tr26,r30");
      ol("sbc\tr27,r31");
      }
	ol("brlo\t$+4");
   InX = 1;
}


// less than or equal (signed)

void gle(int type) {
	gpop(type);
   if (type == CLONG)
		ol("rcall\t_cmp_l");
   else {
   	ol("sub\tr30,r26");
      ol("sbc\tr31,r27");
      }
   ol("brge\t$+4");
   InX = 0;
}


// greater than (signed)

void ggt(int type) {
	gpop(type);
   if (type == CLONG)
 		ol("rcall\t_cmp_l");
   else {
		ol("sub\tr30,r26");
      ol("sbc\tr31,r27");
      }
	ol("brlo\t$+4");
}


// greater than or equal (signed)

void gge(int type) {
	gpop(type);
	if (type == CLONG)
		ol("rcall\t_cmp_l");
   else {
		ol("sub\tr26,r30");
      ol("sbc\tr27,r31");
      }
   ol("brge\t$+4");
}


//********************************************************

// less than (unsigned)

void gult(int type) {
	gpop(type);
//	gcall("ult", type);
	ol("sub\tr26,r30");
   if (type == UCINT)
   	ol("sbc\tr27,r31");
   ol("brlo\t$+4");
}


// less than or equal (unsigned)

void gule(int type) {
	gpop(type);
//	gcall("ule", type);
	ol("sub\tr30,r26");
   if (type == UCINT)
   	ol("sbc\tr31,r27");
   ol("brge\t$+4");
}


// greater than (unsigned)

void gugt(int type) {
	gpop(type);
//	gcall("ugt", type);
	ol("sub\tr26,r30");
   if (type == UCINT)
   	ol("sbc\tr27,r31");
   ol("brlo\t$+4");
}


// greater than or equal (unsigned)

void guge(int type) {
	gpop(type);
//	gcall("uge", type);
	ol("sub\tr26,r30");
   if (type == UCINT)
   	ol("sbc\tr27,r31");
   ol("brsh\t$+4");
}



//*******************************************************

static char *incp;

char *GetIncs(char *name) {
	static char *p;
	char *q;

	if (incp == NULL) 
	{
		incp = (char *)getenv(name);
		if (incp)
		{
			if (*incp == ';')
      		incp++;
			p = q = incp;
		}
		else
			return NULL;
	}
  	else 
	{
      if (*p == ';')
      	p++;
   	q = p;
   }

  	while (*p && *p != ';')
    	p++;
	strncpy(line, q, p-q);
	line[p-q] = '\0';
	if (p-q)
   	return line;
   else
   	return NULL;
}


// Squirrel away argument count in a register that modstk
// doesn't touch.

void gnargs(int d) 
{
}


// Run the assembler immediately after compiling

static char linkline[150];
static char buf[300];

int assemble(char *s) {
	char *p;

	if (strlen(linkline)) {
   	strcat(linkline, " ");
      strcat(linkline, module);
      }
   else
   	strcpy(linkline, module);
	sprintf(buf, "aa90 -r -L -v%d ", Vtype);
   incp = NULL;
   while (p = GetIncs("INCLUDE")) {
   	strcat(buf, "-I");
      strcat(buf, p);
      strcat(buf, " ");
		}
	strcat(buf, module);
	strcat(buf, " -o ");
	strcat(buf, module);
   printf("%s\n", buf);
	return (system(buf));
}


// Run the linker

int link(void) {
	char *p;

	strcpy(buf, "xlink crti libcavr ");
   strcat(buf, linkline);
   incp = NULL;
   while (p = GetIncs("LIB")) {
   	strcat(buf, " -I");
      strcat(buf, p);
		}
   strcat(buf, " -ca90 -Z(DATA)sdata=60 -Z(CODE)scode=0 -Fintel-standard -o ");
   strcat(buf, linkline);
   strcat(buf, ".hex -xsem -l map");
   printf("%s\n", buf);
	system(buf);

	strcpy(buf, "xlink crti libcavr ");
   strcat(buf, linkline);
   incp = NULL;
   while (p = GetIncs("LIB")) {
   	strcat(buf, " -I");
      strcat(buf, p);
		}
   strcat(buf, " -ca90 -r -Z(DATA)sdata=60 -Z(CODE)scode=0 -o debug");
   printf("%s\n", buf);
	return (system(buf));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久久久久国产越南 | 亚洲一区二区黄色| 麻豆一区二区99久久久久| 欧美精品一卡两卡| 尤物视频一区二区| 日韩免费高清av| 国产精品久久久久永久免费观看| 久久精品72免费观看| 欧美成人一区二区三区片免费| 日韩影院免费视频| 久久久久久一级片| 国产精品18久久久久久vr| 国产a级毛片一区| 午夜视黄欧洲亚洲| 中文字幕欧美三区| 99精品国产一区二区三区不卡| 国产精品精品国产色婷婷| 色94色欧美sute亚洲线路一久| 91一区二区三区在线观看| 精品久久国产97色综合| 高清视频一区二区| 国产一区不卡视频| 一区二区三区在线播| 久久人人97超碰com| 99精品一区二区三区| 久久国产精品99久久人人澡| 国产成人精品一区二 | 日韩激情一区二区| 日韩欧美你懂的| 日本高清成人免费播放| 久久精品免费看| 在线免费观看一区| 国产精品成人免费在线| 日韩亚洲欧美成人一区| 99精品国产热久久91蜜凸| 国产米奇在线777精品观看| 一级特黄大欧美久久久| 国产精品乱码妇女bbbb| 精品国产伦一区二区三区免费| 亚洲图片有声小说| 国产精品国产三级国产aⅴ原创| 国产一区二区三区免费看 | 国产成人精品影视| 中文字幕精品一区| 久久综合视频网| 日韩精品在线一区| 欧美一级专区免费大片| 69p69国产精品| 国产精品三级av在线播放| 国产999精品久久久久久绿帽| 久久国产精品99精品国产| 午夜电影久久久| 精品国精品自拍自在线| 在线电影院国产精品| 欧美日韩一区在线观看| 欧美剧在线免费观看网站| **性色生活片久久毛片| 欧美一区二区在线看| 日韩一级黄色大片| 久久午夜色播影院免费高清| 国产日产精品1区| 亚洲精品日日夜夜| 婷婷亚洲久悠悠色悠在线播放 | 国产精品欧美综合在线| 亚洲人午夜精品天堂一二香蕉| 在线精品视频免费播放| 欧美日韩视频一区二区| 精品国产乱码久久久久久蜜臀| 在线精品视频一区二区| 日韩精品一区二区三区老鸭窝| 国产精品久久久久影院色老大| 自拍偷拍亚洲激情| 午夜视频在线观看一区二区| 狠狠狠色丁香婷婷综合激情| 91一区一区三区| 欧美一区二区久久| 日韩码欧中文字| 国产免费观看久久| 亚洲成人激情自拍| 国产成人免费网站| 经典三级一区二区| 91国偷自产一区二区三区成为亚洲经典| 日韩片之四级片| 亚洲激情五月婷婷| 亚洲欧美日本韩国| 欧美色图免费看| 精品国产亚洲在线| 日韩—二三区免费观看av| 91精品国产色综合久久久蜜香臀| 欧美伊人久久大香线蕉综合69| 国产精品免费免费| 另类专区欧美蜜桃臀第一页| 欧美日韩性生活| 婷婷久久综合九色综合绿巨人 | 视频一区中文字幕| 亚洲国产成人va在线观看天堂| 成人夜色视频网站在线观看| 久久久亚洲欧洲日产国码αv| 极品美女销魂一区二区三区 | 精品精品国产高清a毛片牛牛| 日本怡春院一区二区| 欧美日韩aaa| 青娱乐精品视频| 久久夜色精品国产噜噜av| 欧美在线综合视频| 亚洲国产精品麻豆| 日韩欧美一区在线观看| 精品一区二区在线看| 综合色天天鬼久久鬼色| 精品福利二区三区| 国产成人综合在线播放| 亚洲人成人一区二区在线观看 | 极品少妇xxxx精品少妇| 亚洲第一狼人社区| 在线观看亚洲精品视频| 日韩在线一区二区| 久久久久久免费网| 色久优优欧美色久优优| 免费观看一级特黄欧美大片| 久久精品欧美日韩| 欧美视频三区在线播放| 激情图区综合网| 亚洲国产一区二区在线播放| 国产清纯白嫩初高生在线观看91| 亚洲黄色录像片| 波多野洁衣一区| 久久精品久久综合| 一区二区三区中文字幕| 欧美精品一区二区三区在线播放 | 色哦色哦哦色天天综合| 久久国产夜色精品鲁鲁99| 中文字幕日韩一区二区| 精品99久久久久久| 欧美精品丝袜久久久中文字幕| 成人激情综合网站| 捆绑调教美女网站视频一区| 一级精品视频在线观看宜春院| 欧美激情一区二区三区四区| 欧美va亚洲va| 日韩电影在线一区| 天天射综合影视| 亚洲国产日韩a在线播放| 亚洲欧美日韩国产成人精品影院| 中国色在线观看另类| 天堂va蜜桃一区二区三区| 精品国内二区三区| 欧美成人官网二区| 日韩欧美成人一区| 精品成人一区二区| 国产日韩综合av| 国产欧美1区2区3区| 中文av一区二区| 自拍偷自拍亚洲精品播放| 欧美一级一区二区| 精品日韩在线观看| 欧美国产乱子伦| 91浏览器打开| 欧美在线你懂得| 欧美一区二区美女| 国产日产精品1区| 亚洲精品成人在线| 午夜视频在线观看一区| 欧美日韩二区三区| 91啪九色porn原创视频在线观看| 欧美日韩黄色影视| 精品国产91久久久久久久妲己| 国产精品美日韩| 午夜欧美大尺度福利影院在线看| 久久精品国产亚洲5555| 不卡免费追剧大全电视剧网站| 欧美精品九九99久久| 久久久久国色av免费看影院| 亚洲午夜三级在线| 欧美天堂一区二区三区| 久久久久久久av麻豆果冻| 91精品国产高清一区二区三区蜜臀| 久久麻豆一区二区| 日韩av在线播放中文字幕| 成人中文字幕合集| 色婷婷亚洲婷婷| 国产日韩欧美不卡在线| 成人在线一区二区三区| 欧美精品乱码久久久久久按摩| 1区2区3区欧美| 激情欧美日韩一区二区| 欧洲精品中文字幕| 亚洲六月丁香色婷婷综合久久| 国产麻豆精品久久一二三| 欧美日韩一区二区三区在线| 在线一区二区视频| 国产精品福利一区二区三区| 国产一区二区久久| 久久午夜羞羞影院免费观看| 久久国产免费看| 久久人人超碰精品| 最好看的中文字幕久久| 91一区二区在线| 亚洲欧美成aⅴ人在线观看| 91日韩一区二区三区| 一区二区三区四区在线|