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

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

?? avr.c

?? Mac OS X 10.4.9 for x86 Source Code gcc 實(shí)現(xiàn)源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	cur_seq = 0;      if (regs_ever_live[REG_Y+1])	{	  ++live_seq;	  ++cur_seq;	}      else	cur_seq = 0;    }  else    {      cur_seq += 2;      live_seq += 2;    }  return (cur_seq == live_seq) ? live_seq : 0;}/* Output to FILE the asm instructions to adjust the frame pointer by   ADJ (r29:r28 -= ADJ;) which can be positive (prologue) or negative   (epilogue).  Returns the number of instructions generated.  */static intout_adj_frame_ptr (FILE *file, int adj){  int size = 0;  if (adj)    {      if (TARGET_TINY_STACK)	{	  if (adj < -63 || adj > 63)	    warning ("large frame pointer change (%d) with -mtiny-stack", adj);	  /* The high byte (r29) doesn't change - prefer "subi" (1 cycle)	     over "sbiw" (2 cycles, same size).  */	  fprintf (file, (AS2 (subi, r28, %d) CR_TAB), adj);	  size++;	}      else if (adj < -63 || adj > 63)	{	  fprintf (file, (AS2 (subi, r28, lo8(%d)) CR_TAB			  AS2 (sbci, r29, hi8(%d)) CR_TAB),		   adj, adj);	  size += 2;	}      else if (adj < 0)	{	  fprintf (file, (AS2 (adiw, r28, %d) CR_TAB), -adj);	  size++;	}      else	{	  fprintf (file, (AS2 (sbiw, r28, %d) CR_TAB), adj);	  size++;	}    }  return size;}/* Output to FILE the asm instructions to copy r29:r28 to SPH:SPL,   handling various cases of interrupt enable flag state BEFORE and AFTER   (0=disabled, 1=enabled, -1=unknown/unchanged) and target_flags.   Returns the number of instructions generated.  */static intout_set_stack_ptr (FILE *file, int before, int after){  int do_sph, do_cli, do_save, do_sei, lock_sph, size;  /* The logic here is so that -mno-interrupts actually means     "it is safe to write SPH in one instruction, then SPL in the     next instruction, without disabling interrupts first".     The after != -1 case (interrupt/signal) is not affected.  */  do_sph = !TARGET_TINY_STACK;  lock_sph = do_sph && !TARGET_NO_INTERRUPTS;  do_cli = (before != 0 && (after == 0 || lock_sph));  do_save = (do_cli && before == -1 && after == -1);  do_sei = ((do_cli || before != 1) && after == 1);  size = 1;  if (do_save)    {      fprintf (file, AS2 (in, __tmp_reg__, __SREG__) CR_TAB);      size++;    }  if (do_cli)    {      fprintf (file, "cli" CR_TAB);      size++;    }  /* Do SPH first - maybe this will disable interrupts for one instruction     someday (a suggestion has been sent to avr@atmel.com for consideration     in future devices - that would make -mno-interrupts always safe).  */  if (do_sph)    {      fprintf (file, AS2 (out, __SP_H__, r29) CR_TAB);      size++;    }  /* Set/restore the I flag now - interrupts will be really enabled only     after the next instruction.  This is not clearly documented, but     believed to be true for all AVR devices.  */  if (do_save)    {      fprintf (file, AS2 (out, __SREG__, __tmp_reg__) CR_TAB);      size++;    }  else if (do_sei)    {      fprintf (file, "sei" CR_TAB);      size++;    }  fprintf (file, AS2 (out, __SP_L__, r28) "\n");  return size;}/* Output function prologue.  */static voidavr_output_function_prologue (FILE *file, HOST_WIDE_INT size){  int reg;  int interrupt_func_p;  int signal_func_p;  int main_p;  int live_seq;  int minimize;  last_insn_address = 0;  jump_tables_size = 0;  prologue_size = 0;  fprintf (file, "/* prologue: frame size=" HOST_WIDE_INT_PRINT_DEC " */\n",	   size);  if (avr_naked_function_p (current_function_decl))    {      fputs ("/* prologue: naked */\n", file);      goto out;    }  interrupt_func_p = interrupt_function_p (current_function_decl);  signal_func_p = signal_function_p (current_function_decl);  main_p = MAIN_NAME_P (DECL_NAME (current_function_decl));  live_seq = sequent_regs_live ();  minimize = (TARGET_CALL_PROLOGUES	      && !interrupt_func_p && !signal_func_p && live_seq);  if (interrupt_func_p)    {      fprintf (file,"\tsei\n");      ++prologue_size;    }  if (interrupt_func_p || signal_func_p)    {      fprintf (file, "\t"               AS1 (push,__zero_reg__)   CR_TAB               AS1 (push,__tmp_reg__)    CR_TAB	       AS2 (in,__tmp_reg__,__SREG__) CR_TAB	       AS1 (push,__tmp_reg__)    CR_TAB	       AS1 (clr,__zero_reg__)    "\n");      prologue_size += 5;    }  if (main_p)    {      fprintf (file, ("\t" 		      AS1 (ldi,r28) ",lo8(%s - " HOST_WIDE_INT_PRINT_DEC ")" CR_TAB		      AS1 (ldi,r29) ",hi8(%s - " HOST_WIDE_INT_PRINT_DEC ")" CR_TAB		      AS2 (out,__SP_H__,r29)     CR_TAB		      AS2 (out,__SP_L__,r28) "\n"),	       avr_init_stack, size, avr_init_stack, size);            prologue_size += 4;    }  else if (minimize && (frame_pointer_needed || live_seq > 6))     {      fprintf (file, ("\t"		      AS1 (ldi, r26) ",lo8(" HOST_WIDE_INT_PRINT_DEC ")" CR_TAB		      AS1 (ldi, r27) ",hi8(" HOST_WIDE_INT_PRINT_DEC ")" CR_TAB), size, size);      fputs ((AS2 (ldi,r30,pm_lo8(1f)) CR_TAB	      AS2 (ldi,r31,pm_hi8(1f)) CR_TAB), file);            prologue_size += 4;            if (AVR_MEGA)	{	  fprintf (file, AS1 (jmp,__prologue_saves__+%d) "\n",		   (18 - live_seq) * 2);	  prologue_size += 2;	}      else	{	  fprintf (file, AS1 (rjmp,__prologue_saves__+%d) "\n",		   (18 - live_seq) * 2);	  ++prologue_size;	}      fputs ("1:\n", file);    }  else    {      HARD_REG_SET set;      prologue_size += avr_regs_to_save (&set);      for (reg = 0; reg < 32; ++reg)	{	  if (TEST_HARD_REG_BIT (set, reg))	    {	      fprintf (file, "\t" AS1 (push,%s) "\n", avr_regnames[reg]);	    }	}      if (frame_pointer_needed)	{	  fprintf (file, "\t"		   AS1 (push,r28) CR_TAB		   AS1 (push,r29) CR_TAB		   AS2 (in,r28,__SP_L__) CR_TAB		   AS2 (in,r29,__SP_H__) "\n");	  prologue_size += 4;	  if (size)	    {	      fputs ("\t", file);	      prologue_size += out_adj_frame_ptr (file, size);	      if (interrupt_func_p)		{		  prologue_size += out_set_stack_ptr (file, 1, 1);		}	      else if (signal_func_p)		{		  prologue_size += out_set_stack_ptr (file, 0, 0);		}	      else		{		  prologue_size += out_set_stack_ptr (file, -1, -1);		}	    }	}    } out:  fprintf (file, "/* prologue end (size=%d) */\n", prologue_size);}/* Output function epilogue.  */static voidavr_output_function_epilogue (FILE *file, HOST_WIDE_INT size){  int reg;  int interrupt_func_p;  int signal_func_p;  int main_p;  int function_size;  int live_seq;  int minimize;  rtx last = get_last_nonnote_insn ();  function_size = jump_tables_size;  if (last)    {      rtx first = get_first_nonnote_insn ();      function_size += (INSN_ADDRESSES (INSN_UID (last)) -			INSN_ADDRESSES (INSN_UID (first)));      function_size += get_attr_length (last);    }  fprintf (file, "/* epilogue: frame size=" HOST_WIDE_INT_PRINT_DEC " */\n", size);  epilogue_size = 0;  if (avr_naked_function_p (current_function_decl))    {      fputs ("/* epilogue: naked */\n", file);      goto out;    }  if (last && GET_CODE (last) == BARRIER)    {      fputs ("/* epilogue: noreturn */\n", file);      goto out;    }  interrupt_func_p = interrupt_function_p (current_function_decl);  signal_func_p = signal_function_p (current_function_decl);  main_p = MAIN_NAME_P (DECL_NAME (current_function_decl));  live_seq = sequent_regs_live ();  minimize = (TARGET_CALL_PROLOGUES	      && !interrupt_func_p && !signal_func_p && live_seq);    if (main_p)    {      /* Return value from main() is already in the correct registers	 (r25:r24) as the exit() argument.  */      if (AVR_MEGA)	{	  fputs ("\t" AS1 (jmp,exit) "\n", file);	  epilogue_size += 2;	}      else	{	  fputs ("\t" AS1 (rjmp,exit) "\n", file);	  ++epilogue_size;	}    }  else if (minimize && (frame_pointer_needed || live_seq > 4))    {      fprintf (file, ("\t" AS2 (ldi, r30, %d) CR_TAB), live_seq);      ++epilogue_size;      if (frame_pointer_needed)	{	  epilogue_size += out_adj_frame_ptr (file, -size);	}      else	{	  fprintf (file, (AS2 (in , r28, __SP_L__) CR_TAB			  AS2 (in , r29, __SP_H__) CR_TAB));	  epilogue_size += 2;	}            if (AVR_MEGA)	{	  fprintf (file, AS1 (jmp,__epilogue_restores__+%d) "\n",		   (18 - live_seq) * 2);	  epilogue_size += 2;	}      else	{	  fprintf (file, AS1 (rjmp,__epilogue_restores__+%d) "\n",		   (18 - live_seq) * 2);	  ++epilogue_size;	}    }  else    {      HARD_REG_SET set;      if (frame_pointer_needed)	{	  if (size)	    {	      fputs ("\t", file);	      epilogue_size += out_adj_frame_ptr (file, -size);	      if (interrupt_func_p || signal_func_p)		{		  epilogue_size += out_set_stack_ptr (file, -1, 0);		}	      else		{		  epilogue_size += out_set_stack_ptr (file, -1, -1);		}	    }	  fprintf (file, "\t"		   AS1 (pop,r29) CR_TAB		   AS1 (pop,r28) "\n");	  epilogue_size += 2;	}      epilogue_size += avr_regs_to_save (&set);      for (reg = 31; reg >= 0; --reg)	{	  if (TEST_HARD_REG_BIT (set, reg))	    {	      fprintf (file, "\t" AS1 (pop,%s) "\n", avr_regnames[reg]);	    }	}      if (interrupt_func_p || signal_func_p)	{	  fprintf (file, "\t"		   AS1 (pop,__tmp_reg__)      CR_TAB		   AS2 (out,__SREG__,__tmp_reg__) CR_TAB		   AS1 (pop,__tmp_reg__)      CR_TAB		   AS1 (pop,__zero_reg__)     "\n");	  epilogue_size += 4;	  fprintf (file, "\treti\n");	}      else	fprintf (file, "\tret\n");      ++epilogue_size;    } out:  fprintf (file, "/* epilogue end (size=%d) */\n", epilogue_size);  fprintf (file, "/* function %s size %d (%d) */\n", current_function_name (),	   prologue_size + function_size + epilogue_size, function_size);  commands_in_file += prologue_size + function_size + epilogue_size;  commands_in_prologues += prologue_size;  commands_in_epilogues += epilogue_size;}/* Return nonzero if X (an RTX) is a legitimate memory address on the target   machine for a memory operand of mode MODE.  */intlegitimate_address_p (enum machine_mode mode, rtx x, int strict){  enum reg_class r = NO_REGS;    if (TARGET_ALL_DEBUG)    {      fprintf (stderr, "mode: (%s) %s %s %s %s:",	       GET_MODE_NAME(mode),	       strict ? "(strict)": "",	       reload_completed ? "(reload_completed)": "",	       reload_in_progress ? "(reload_in_progress)": "",	       reg_renumber ? "(reg_renumber)" : "");      if (GET_CODE (x) == PLUS	  && REG_P (XEXP (x, 0))	  && GET_CODE (XEXP (x, 1)) == CONST_INT	  && INTVAL (XEXP (x, 1)) >= 0	  && INTVAL (XEXP (x, 1)) <= MAX_LD_OFFSET (mode)	  && reg_renumber	  )	fprintf (stderr, "(r%d ---> r%d)", REGNO (XEXP (x, 0)),		 true_regnum (XEXP (x, 0)));      debug_rtx (x);    }  if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x)                    : REG_OK_FOR_BASE_NOSTRICT_P (x)))    r = POINTER_REGS;  else if (CONSTANT_ADDRESS_P (x))    r = ALL_REGS;  else if (GET_CODE (x) == PLUS           && REG_P (XEXP (x, 0))	   && GET_CODE (XEXP (x, 1)) == CONST_INT	   && INTVAL (XEXP (x, 1)) >= 0)    {      int fit = INTVAL (XEXP (x, 1)) <= MAX_LD_OFFSET (mode);      if (fit)	{	  if (! strict	      || REGNO (XEXP (x,0)) == REG_Y	      || REGNO (XEXP (x,0)) == REG_Z)	    r = BASE_POINTER_REGS;	  if (XEXP (x,0) == frame_pointer_rtx	      || XEXP (x,0) == arg_pointer_rtx)	    r = BASE_POINTER_REGS;	}      else if (frame_pointer_needed && XEXP (x,0) == frame_pointer_rtx)	r = POINTER_Y_REGS;    }  else if ((GET_CODE (x) == PRE_DEC || GET_CODE (x) == POST_INC)           && REG_P (XEXP (x, 0))           && (strict ? REG_OK_FOR_BASE_STRICT_P (XEXP (x, 0))               : REG_OK_FOR_BASE_NOSTRICT_P (XEXP (x, 0))))    {      r = POINTER_REGS;    }  if (TARGET_ALL_DEBUG)    {      fprintf (stderr, "   ret = %c\n", r);    }  return r == NO_REGS ? 0 : (int)r;}/* Attempts to replace X with a valid   memory address for an operand of mode MODE  */rtxlegitimize_address (rtx x, rtx oldx, enum machine_mode mode){  x = oldx;  if (TARGET_ALL_DEBUG)    {      fprintf (stderr, "legitimize_address mode: %s", GET_MODE_NAME(mode));      debug_rtx (oldx);    }    if (GET_CODE (oldx) == PLUS      && REG_P (XEXP (oldx,0)))    {      if (REG_P (XEXP (oldx,1)))	x = force_reg (GET_MODE (oldx), oldx);      else if (GET_CODE (XEXP (oldx, 1)) == CONST_INT)	{	  int offs = INTVAL (XEXP (oldx,1));	  if (frame_pointer_rtx != XEXP (oldx,0))	    if (offs > MAX_LD_OFFSET (mode))	      {		if (TARGET_ALL_DEBUG)		  fprintf (stderr, "force_reg (big offset)\n");		x = force_reg (GET_MODE (oldx), oldx);	      }	}    }  return x;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜激情网站| 91精品国产综合久久香蕉麻豆 | 精品国产伦一区二区三区观看方式 | 中文字幕一区二区三区四区| 国产精品自在在线| 国产精品久久久久三级| 99久久久久免费精品国产 | 欧美一区二区三区婷婷月色| 天天影视网天天综合色在线播放| 日韩一区二区在线观看视频| 激情图区综合网| 国产精品国产三级国产普通话三级| 成人免费观看视频| 亚洲精品ww久久久久久p站| 欧美伊人久久大香线蕉综合69| 午夜精品久久久久久久久| 69av一区二区三区| 国产一区福利在线| 中文字幕亚洲在| 欧美日韩不卡一区二区| 国内精品视频一区二区三区八戒| 国产午夜亚洲精品午夜鲁丝片| www.综合网.com| 国产剧情一区二区| 亚洲人123区| 日韩三级高清在线| 99久久精品免费| 日韩电影免费在线看| 久久久精品日韩欧美| 日本韩国一区二区三区视频| 日本人妖一区二区| 国产精品少妇自拍| 欧美日本乱大交xxxxx| 国产激情视频一区二区在线观看| 亚洲免费在线播放| 久久久久国产精品人| 91麻豆免费观看| 久久99精品一区二区三区 | 欧美午夜不卡在线观看免费| 激情综合色综合久久| 亚洲美女屁股眼交3| 2021久久国产精品不只是精品| 日本高清无吗v一区| 国产成人在线视频网站| 丝袜诱惑亚洲看片 | 亚洲一区视频在线观看视频| 精品日韩欧美一区二区| 在线视频国内自拍亚洲视频| 国产二区国产一区在线观看| 亚洲国产一区二区三区青草影视| 亚洲国产成人自拍| 欧美精品一区二区三区很污很色的| 色爱区综合激月婷婷| 丰满亚洲少妇av| 国产一区二区三区黄视频 | 欧美日韩国产乱码电影| 波多野结衣在线一区| 狠狠色狠狠色综合| 日本中文在线一区| 亚洲成a人片在线观看中文| 亚洲三级免费电影| 国产日产欧美一区二区三区| 日韩欧美亚洲一区二区| 欧美精三区欧美精三区| 日本精品一区二区三区高清| 成人黄色小视频| 粉嫩欧美一区二区三区高清影视| 免费看欧美女人艹b| 亚洲国产sm捆绑调教视频 | 视频一区免费在线观看| 亚洲综合色网站| 日韩伦理电影网| 国产精品免费视频一区| 国产亚洲成aⅴ人片在线观看 | 国内精品在线播放| 国产一区二区看久久| 蜜桃av噜噜一区二区三区小说| 亚洲欧洲成人自拍| 亚洲女同女同女同女同女同69| 国产精品无码永久免费888| 欧美高清一级片在线观看| 久久久精品国产免大香伊| 久久亚洲精品小早川怜子| 久久影音资源网| 久久先锋影音av鲁色资源| 国产日韩欧美综合在线| 国产精品久久久久影院亚瑟| 亚洲精品日产精品乱码不卡| 夜夜精品视频一区二区| 亚洲成人在线网站| 亚洲丶国产丶欧美一区二区三区| 亚洲综合在线免费观看| 伊人一区二区三区| 五月天激情小说综合| 青草国产精品久久久久久| 久久国产精品区| 国产99精品在线观看| 99久久久免费精品国产一区二区| 色又黄又爽网站www久久| 欧美曰成人黄网| 这里只有精品电影| 中文字幕欧美激情一区| 亚洲一二三四久久| 久久99九九99精品| 色综合天天在线| 日韩天堂在线观看| 国产精品电影一区二区| 亚洲一区二区三区免费视频| 麻豆国产精品官网| 国产久卡久卡久卡久卡视频精品| 91女厕偷拍女厕偷拍高清| 欧美私人免费视频| 久久精品一区二区三区不卡| 亚洲人快播电影网| 美腿丝袜亚洲三区| 91蜜桃在线观看| 亚洲精品在线三区| 亚洲国产三级在线| 国产精品一区二区三区四区| 欧美天堂一区二区三区| 久久久久九九视频| 午夜婷婷国产麻豆精品| 成人性色生活片| 欧美大片拔萝卜| 亚洲一区二区三区在线| 国产馆精品极品| 欧美一区二区视频在线观看2022| 国产精品久久久久久亚洲伦| 日本中文字幕一区二区有限公司| av在线播放成人| 欧美大片在线观看一区二区| 亚洲四区在线观看| 国产中文字幕精品| 在线91免费看| 亚洲美女在线一区| 懂色中文一区二区在线播放| 欧美一区二区成人| 国产精品每日更新| 欧美在线不卡一区| 国产精品欧美一区二区三区| 毛片av一区二区| 欧美精选一区二区| 亚洲图片一区二区| 99久久99久久精品免费观看| 久久网站最新地址| 国内精品不卡在线| 日韩一区二区不卡| 午夜精品福利久久久| 在线免费不卡电影| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲啪啪综合av一区二区三区| 国产在线精品一区二区三区不卡 | 91精品欧美福利在线观看| 亚洲免费在线观看视频| 国产精品亚洲成人| 精品国产一区二区三区久久久蜜月 | 99久久99精品久久久久久| 国产日韩v精品一区二区| 久久成人精品无人区| 欧美日本在线一区| 午夜欧美大尺度福利影院在线看| 91精品福利视频| 亚洲一本大道在线| 欧美少妇一区二区| 亚洲激情av在线| 在线观看免费视频综合| 一区二区三区四区激情| 在线观看网站黄不卡| 亚洲欧美日韩中文播放| 91久久精品一区二区| 亚洲国产三级在线| 欧美一级在线视频| 美女mm1313爽爽久久久蜜臀| 日韩欧美激情在线| 国产麻豆视频一区| 亚洲欧洲日产国产综合网| 成+人+亚洲+综合天堂| 亚洲色图制服诱惑| 欧美日韩精品一区二区天天拍小说| 亚洲国产婷婷综合在线精品| 国产午夜亚洲精品羞羞网站| 成人激情视频网站| 一区二区免费视频| 欧美一区2区视频在线观看| 精品一区二区三区久久| 国产亚洲短视频| 一本久久a久久免费精品不卡| 亚洲精品亚洲人成人网| 欧美精品在欧美一区二区少妇| 日韩av网站免费在线| 国产亚洲精品7777| 色哟哟亚洲精品| 青娱乐精品在线视频| 中文字幕 久热精品 视频在线| 91免费在线播放| 日韩精品五月天| 国产精品久久久久久亚洲毛片 | 欧美丰满美乳xxx高潮www| 精品中文字幕一区二区小辣椒| 欧美激情艳妇裸体舞|