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

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

?? codeavr.c

?? Outputs messages to a 2line LCD
?? C
?? 第 1 頁 / 共 4 頁
字號:
        	outstr("+2,r27\n");
      	ot("sts\t");
         outstr(stack[stkptr].name);
        	outstr("+3,r26\n");
         stkptr--;
         }
//    	else
//      if (stpt->storage == PUBLIC) {
//      	ol("st\tx+,r31");
//         ol("st\tx+,r30");
//         ol("st\tx+,r27");
//         ol("st\tx+,r26");
//         }
      else {
   		gcall("putstk_l", CINT);
     		stkp += 2;
         }
      }
   else {
      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);
				stkp += INTSIZE;
            }
			else {
//         	if (stpt->storage == PUBLIC) {
//					ol("st\tx+,r31");
//               ol("st\tx+,r30");
//               }
//            else {
   				gcall("putstk_i_z", CINT);
  					stkp += INTSIZE;
//               }
            }
         }
		}
}


// Fetch the specified object type indirect through the primary
// register into the primary register. stpt-type is the type we
// are loading from, stpt->cast is the type we are loading to,
// or zero.

void indirect(STATE *stpt) {
	int type;

   if (!stpt->pointing && stpt->ident == POINTER) {
   	if (InX) {
      	ol("ld\tr31,x+");
         ol("ld\tr30,x+");
         }
      else {
			ol("ld\tr0,z+");
	   	ol("ld\tr30,z+");
			ol("mov\tr31,r0");
         }
      InX = 0;
      return;
      }

   if (stpt->cast)
   	type = stpt->cast;
   else
   	type = stpt->type;
	if (type == CCHAR || type == UCCHAR) {
      if (!(stpt->type == UCCHAR || stpt->type == CCHAR)) {
        	if (InX) {
      		if (stpt->type == CINT || stpt->type == UCINT)
         		ol("adiw\tr26,1");
         	else
      		if (stpt->type == CLONG)
      			ol("adiw\tr26,3");
            ol("ld\tr30,x");
            }
         else {
        		ot("ldd\tr30,z");
      		if (stpt->type == CINT || stpt->type == UCINT)
         		outstr("+1\n");
         	else
      		if (stpt->type == CLONG)
      			outstr("+3\n");
         	else
         		outstr("+0\n");
				}
         InX = 0;
       	}
      else {
      	if (InX) {
//				if (stpt->funcpar || (CallFunction && stpt->ident != POINTER))
//         		ol("adiw\tr26,1");
         	ol("ld\tr30,x");
            InX = 0;
            }
         else {
         	ol("ld\tr30,z");
//      		ot("ldd\tr30,z");
//				if (stpt->funcpar || (CallFunction && stpt->ident != POINTER))
//         		outstr("+1");
//            else
//            	outstr("+0");
//            nl();
            }
         }
      if (type == CCHAR)
      	sign_extend_int(stpt);
      else
         ol("clr\tr31");
		}
	else
   if (type == CINT || type == UCINT || type == VOID) {
      if (stpt->type == CLONG || stpt->type == CCHAR || stpt->type == UCCHAR) {
      	if (stpt->type == CLONG) {
				ol("ldd\tr0,z+3");
            ol("ldd\tr31,z+2");
				ol("mov\tr30,r0");
            }
         else
         if (stpt->type == CCHAR || stpt->type == UCCHAR) {
         	if (InX) {
         		ol("ld\tr30,x");
            	InX = 0;
               }
            else {
            	ol("ld\tr26,z");
               InX = 1;
               }
            }
         }
      else {
//			ol("ldd\tr0,z+1");
//         ol("ld\tr31,z");
//			ol("mov\tr30,r0");
			if (InX) {
         	ol("ld\tr31,x+");
            ol("ld\tr30,x+");
            InX = 0;
            }
        	else {
				ol("ld\tr27,z+");
         	ol("ld\tr26,z+");
         	InX = 1;
            }
         }
		}
   else {
	   if (stpt->type != CLONG) {
	     	if (stpt->type == CINT || stpt->type == UCINT) {
	        	if (InX) {
	           	ol("mov\tr31,r27");
	            ol("mov\tr30,r26");
	            }
				ol("ldd\tr0,z+1");
	        	ol("ld\tr31,z");
	         ol("mov\tr30,r0");
	         InX = 0;
	        	}
	      else
	      if (stpt->type == CCHAR || stpt->type == UCCHAR) {
	        	ol("ld\tr30,z");
	         }
	      }
	   else {
   	  	gcall("glpp", CINT);
     		}
	   }
}


// Fetch the specified CONSTANT object type indirect through the
// primary register into the primary register

void ld_constant(STATE *stpt) {
	int type;

   if (stpt->cast)
   	type = stpt->cast;
   else
   	type = stpt->type;
	if (type == CCHAR || type == UCCHAR) {
      if (InX) {
      	ol("mov\tr31,r27");
         ol("mov\tr30,r26");
         }
		ol("lpm");
		ol("mov\tr30,r0");
      ol("clr\tr31");
      InX = 0;
		}
	else
   if (type == CINT || type == UCINT)
		gcall("loadc_i", CINT);
   else
   if (type == CLONG)
   	gcall("loadc_l", CINT);
}


// swap the primary and secondary registers

void swap(void) {
   ol("st\t-y,r26");			// push secondary
   ol("st\t-y,r27");
   gpush(CINT);				// push primary
   gpop(CINT);					// pop secondary
	ol("ld\tr31,y+");			// pop primary
	ol("ld\tr30,y+");
}


// Push the primary register onto the stack.
// MSB always goes to the lowest address.

int gpush(int type) {
//   if (stkptr == 1 && stack[stkptr].storage == PUBLIC)
//   	return;
	CINTpushPending = 0;
   if (type == CLONG) {
   	gcall("push_l", CINT);
		stkp -= 4;
      return 4;
      }
//   else
//   if (type == UCCHAR) {
//   	if (InX)
//   		ol("st\t-y,r26");
//      else
//      	ol("st\t-y,r30");
//      stkp -= 1;
//      return (1);
//      }
   else {
   	if (InX) {
			ol("st\t-y,r26");
			ol("st\t-y,r27");
      	}
     	else {
			ol("st\t-y,r30");
			ol("st\t-y,r31");
         }
		stkp -= INTSIZE;
      return INTSIZE;
      }
}


// pop the top of the stack into the secondary register

void gpop(int type) {
   if (type == CLONG) {
   	gcall("pop_l", CINT);
      stkp += 4;
      }
   else {
//   if (type == CINT || type == CCHAR || type == VOID) {
		if (InX) {
			ol("ld\tr31,y+");
			ol("ld\tr30,y+");
         InX = 0;
         }
      else {
			ol("ld\tr27,y+");
			ol("ld\tr26,y+");
         InX = 1;
         }
//		if (!(type == ARRAY || type == POINTER))
			stkp += INTSIZE;
//      }
//   else {
//   	ol("ld\tr26,y+");
//      stkp += 1;
      }
}


// swap the primary register and the top of the stack

void swapstk(void) {
	gpop(CINT);
	gpush(CINT);
   x2z();
}


// call the specified subroutine name

void gcall(char *sname, int type) {
	char lname[200];

   strcpy(lname, sname);
	if (type == CLONG)
	 	strcat(lname,"_l");
	if (!CheckExtFun(sname)) {
	  	ot("extern\t");
  		internal_prefix();
	  	outstr(lname);
	  	nl();
      }
	ot("rcall\t");
	internal_prefix();
	outstr(lname);
	nl();
}


// Call the specified user subroutine name

void ucall(char *sname) {
	ot("rcall\t");
	LabPrefix();
	outstr(sname);
	nl();
}


// return from subroutine

void gret(void) {
	ol("ret");
}


// perform subroutine call to value on top of stack

void callstk(void) {
   if (InX) {
   	ol("mov\tr31,r27");
      ol("mov\tr30,r26");
      }
	ol("icall");
//	stkp = stkp + INTSIZE;  // need to check this for ALL push/pops
}


// jump to specified internal label number

void jump(int label) {
	ot("rjmp\t");
	printlabel(label);
	nl();
   LabelCount[label]++;
}


// test the primary register and jump as required to label

void testjump(int label, int ft, int type) {
//	if (type == CCHAR) {
//		if (InX)
//   		ol("or\tr26,r26");
//		else
//   		ol("or\tr30,r30");
//      }
//   else {
   	if (InX)
			ol("or\tr27,r26");
		else
			ol("or\tr31,r30");
//      }

	if (type == CLONG) {
		ol("or\tr31,r27");
      ol("or\tr31,r26");
      }

	if (ft)
   	ol("breq\t$+4");
	else
   	ol("brne\t$+4");
}


void testgt0(int label, int ft, int type) {
	// Check if it is negative
	if (type == CLONG) {
   	ol("tst\tr31");
  		ol("brmi\t$+10");
      }
   else
   if (type == CINT) {
		if (InX)
	  		ol("tst\tr27");
		else
	  		ol("tst\tr31");
  		ol("brmi\t$+6");
      }
 	else
   if (type == CCHAR) {
		if (InX)
	  		ol("tst\tr26");
		else
	  		ol("tst\tr30");
  		ol("brmi\t$+6");
      }

	// Check if it is zero
	if (type == CLONG) {
   	ol("or\tr27,r26");
      ol("or\tr31,r30");
      ol("or\tr31,r27");
      }
   else
   if (type == CINT) {
		if (InX)
	  		ol("or\tr27,r26");
		else
	  		ol("or\tr31,r30");
      }
 	else
   if (type == CCHAR) {
		if (InX)
	  		ol("tst\tr26");
		else
	  		ol("tst\tr30");
      }
  	ol("brne\t$+4");
}



void testlt0(int label, int ft, int type) {
	// If it is negative...
	if (type == CLONG)
   	ol("tst\tr31");
   else
   if (type == CINT) {
		if (InX)
	  		ol("tst\tr27");
		else
	  		ol("tst\tr31");
      }
 	else
   if (type == CCHAR) {
		if (InX)
	  		ol("tst\tr26");
		else
	  		ol("tst\tr30");
      }

  	ol("brmi\t$+4");
}



void testgteq0(int label, int ft, int type) {
	// As long as it is not negative
	if (type == CLONG)
   	ol("tst\tr31");
   else
   if (type == CINT) {
		if (InX)
	  		ol("tst\tr27");
		else
	  		ol("tst\tr31");
      }
 	else
   if (type == CCHAR) {
		if (InX)
	  		ol("tst\tr26");
		else
	  		ol("tst\tr30");
      }

  	ol("brpl\t$+4");
}



void testlteq0(int label, int ft, int type) {
	// Check if it is negative
	if (type == CLONG) {
   	ol("tst\tr31");
  		ol("brmi\t$+12");
      }
   else
   if (type == CINT) {
		if (InX)
	  		ol("tst\tr27");
		else
	  		ol("tst\tr31");
  		ol("brmi\t$+8");
      }
 	else
   if (type == CCHAR) {
		if (InX)
	  		ol("tst\tr26");
		else
	  		ol("tst\tr30");
  		ol("brmi\t$+8");
      }

	// Check if it is zero
	if (type == CLONG) {
   	ol("or\tr27,r26");
      ol("or\tr31,r30");
      ol("or\tr31,r27");
      }
   else
   if (type == CINT) {
		if (InX)
	  		ol("or\tr27,r26");
		else
	  		ol("or\tr31,r30");
      }
 	else
   if (type == CCHAR) {
		if (InX)
	  		ol("tst\tr26");
		else
	  		ol("tst\tr30");
      }
  	ol("breq\t$+4");
}



// print pseudo-op to define a byte

void defbyte(void) {
	ot("db\t");
}


// print pseudo-op to define storage

void defstorage(void) {
	ot("ds\t");
}


// print pseudo-op to define a word

void defword(void) {
	ot("dw\t");
}


//  Modify the stack pointer to the new value indicated

int modstk(int newstkp) {
	int k, n;

	k = n = galign(newstkp - stkp);
	if (k < 0)
   	n = -n;
	if (PendingJump)
		PendingJump = 0;		// can be ignored
	if (k == 0)
		return (newstkp);

	if (k < 0) {
		if (n > 63) {
			ot("subi\tr28,low(");
			onum(n);
			outstr(")");
			nl();
			ot("sbci\tr29,high(");
			onum(n);
			outstr(")");
			}
		else {
			ot("sbiw\tr28,");
			onum(abs(k));
			}
		}
	else {
		if (n > 63) {
			ot("subi\tr28,low(");
			onum(-k);
			outstr(")");
			nl();
			ot("sbci\tr29,high(");
			onum(-k);
			outstr(")");
			}
		else {
			ot("adiw\tr28,");
			onum(k);
			}
		}
	nl();
	return(newstkp);
}


// multiply the primary register by INTSIZE

void gaslint(void) {
   if (InX) {
		ol("lsl\tr26");
		ol("rol\tr27");
      }
   else {
		ol("lsl\tr30");
		ol("rol\tr31");
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合av一区二区国产馆| 91精品国产91久久综合桃花| 国内成人免费视频| 激情综合亚洲精品| 99久久综合精品| 国产精品久久久久久久久免费丝袜 | 欧美年轻男男videosbes| 亚洲电影在线免费观看| 69久久99精品久久久久婷婷| 久久精品国产在热久久| 2020国产成人综合网| 懂色av一区二区三区免费看| 中文字幕在线不卡| 国产a久久麻豆| 国产美女主播视频一区| 成人免费av资源| 99re这里只有精品视频首页| 久久se这里有精品| 亚洲私人影院在线观看| 日韩电影在线看| 在线精品视频免费观看| 欧美艳星brazzers| 99re热视频这里只精品| 亚洲人吸女人奶水| 一区二区三区日韩精品视频| 欧美日韩免费高清一区色橹橹 | 首页国产欧美久久| 欧美大片日本大片免费观看| 日本道色综合久久| 国产资源在线一区| 亚洲综合激情另类小说区| 777xxx欧美| ...xxx性欧美| 69av一区二区三区| 欧美亚洲动漫精品| 日韩欧美一卡二卡| 精品少妇一区二区三区在线播放 | 91浏览器在线视频| 国产一区二区中文字幕| 日韩精品1区2区3区| 激情综合色综合久久综合| 亚洲欧美区自拍先锋| 国产精品久久免费看| 亚洲一区二区三区四区不卡| 亚洲黄色性网站| 亚洲激情综合网| 国产精品美女一区二区三区 | 丁香六月久久综合狠狠色| 欧美三级电影一区| 美女视频免费一区| 日韩欧美国产午夜精品| 美女脱光内衣内裤视频久久网站| 欧美色图片你懂的| 日韩综合一区二区| 日韩精品一区在线观看| 一区二区免费在线| 欧美极品另类videosde| 91精品国产综合久久久久久久| hitomi一区二区三区精品| 久久成人免费网站| 亚洲va欧美va人人爽午夜| 成人欧美一区二区三区黑人麻豆| 久久久影视传媒| 欧美成人性战久久| 日韩一区二区免费在线观看| 欧洲精品在线观看| 国产精品网曝门| 欧美日产在线观看| 精品一区二区三区免费观看| 久久五月婷婷丁香社区| 精品国产成人在线影院| 欧美日本视频在线| 日韩国产欧美在线观看| 久久久久久久综合色一本| 首页国产丝袜综合| 国产综合色在线视频区| 久久久久久久久久美女| 国产精品麻豆久久久| 亚洲黄色av一区| 91麻豆精品国产| 亚洲欧美日韩在线| 亚洲人成精品久久久久| 国产精品成人一区二区艾草| 国产女人18水真多18精品一级做| 国产婷婷色一区二区三区在线| 精品国产乱码久久久久久牛牛| 日韩欧美国产不卡| 精品国产91乱码一区二区三区| 日韩欧美国产精品一区| 久久亚洲欧美国产精品乐播| 精品国产凹凸成av人网站| 欧美精品一区二区在线观看| 精品成a人在线观看| 久久天堂av综合合色蜜桃网| 久久网站热最新地址| 国产精品拍天天在线| 亚洲伦理在线免费看| 亚洲综合久久av| 日韩制服丝袜av| 久久99国产精品久久| 国产成人丝袜美腿| av福利精品导航| 欧美三级午夜理伦三级中视频| 在线综合亚洲欧美在线视频| xf在线a精品一区二区视频网站| 国产日产亚洲精品系列| 日韩毛片精品高清免费| 日韩黄色片在线观看| 极品美女销魂一区二区三区免费| 国产高清精品网站| 在线精品观看国产| 精品噜噜噜噜久久久久久久久试看| www成人在线观看| 国产精品第五页| 日本成人在线视频网站| 国产91丝袜在线18| 在线观看av不卡| 久久久久久久久久久久电影| 亚洲另类在线一区| 老司机精品视频线观看86| 粉嫩13p一区二区三区| 一本色道久久综合亚洲91| 91精品国产综合久久蜜臀| 国产日韩欧美精品一区| 亚洲成人资源在线| 国产福利一区在线| 欧美日韩国产一二三| 久久精品一区二区三区av| 亚洲已满18点击进入久久| 国产传媒久久文化传媒| 欧美精品 国产精品| 亚洲国产精品成人综合色在线婷婷| 亚洲一区二区三区美女| 国产激情一区二区三区桃花岛亚洲| 色婷婷综合激情| 2020日本不卡一区二区视频| 一区二区三区在线免费| 国产在线国偷精品产拍免费yy| 在线亚洲免费视频| 国产亚洲欧洲一区高清在线观看| 亚洲成人av福利| 成人av午夜电影| 久久综合精品国产一区二区三区| 亚洲自拍偷拍av| 成人一区二区三区视频在线观看| 欧美一区在线视频| 一区二区三区在线观看国产| 成人国产一区二区三区精品| 欧美videos中文字幕| 日韩高清欧美激情| 在线免费视频一区二区| 国产精品网站在线| 国产精品一区二区不卡| 欧美一二三在线| 午夜精品123| 欧美综合久久久| 日韩一区欧美一区| 成人h动漫精品一区二区| 欧美成人免费网站| 久久国产精品99久久人人澡| 在线电影一区二区三区| 亚洲午夜av在线| 欧美做爰猛烈大尺度电影无法无天| 国产精品视频在线看| 国产精品一区专区| 精品国产三级电影在线观看| 另类小说欧美激情| 日韩午夜三级在线| 麻豆久久久久久久| 日韩精品中文字幕一区| 久久精品国产久精国产| 日韩午夜在线影院| 另类综合日韩欧美亚洲| 欧美一级夜夜爽| 久久 天天综合| 精品国产sm最大网站免费看| 国产一区二三区| 欧美国产欧美综合| 成人教育av在线| 最近日韩中文字幕| 色嗨嗨av一区二区三区| 亚洲一二三级电影| 欧美一区二区三区人| 加勒比av一区二区| 国产精品另类一区| 色系网站成人免费| 婷婷综合五月天| 日韩免费高清视频| 处破女av一区二区| 亚洲一区二区三区四区在线免费观看 | 国产日韩欧美不卡在线| 中文字幕一区二区在线播放| 欧美日韩一区二区三区不卡| 国产成人av影院| 久久99精品久久久| 日本vs亚洲vs韩国一区三区二区| 国产精品乱码妇女bbbb| 中文字幕制服丝袜一区二区三区| 日韩三区在线观看| 日韩午夜精品电影|