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

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

?? out-i386.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    optype1 = MEMOP;  else    optype1 = RNDOP;  /* Check for the cases that the operand constraints are not     supposed to allow to happen.  Abort if we get one,     because generating code for these cases is painful.  */  if (optype0 == RNDOP || optype1 == RNDOP)    abort ();  /* If one operand is decrementing and one is incrementing     decrement the former register explicitly     and change that operand into ordinary indexing.  */  if (optype0 == PUSHOP && optype1 == POPOP)    {      operands[0] = XEXP (XEXP (operands[0], 0), 0);      asm_add (-8, operands[0]);      operands[0] = gen_rtx (MEM, DImode, operands[0]);      optype0 = OFFSOP;    }  if (optype0 == POPOP && optype1 == PUSHOP)    {      operands[1] = XEXP (XEXP (operands[1], 0), 0);      asm_add (-8, operands[1]);      operands[1] = gen_rtx (MEM, DImode, operands[1]);      optype1 = OFFSOP;    }  /* If an operand is an unoffsettable memory ref, find a register     we can increment temporarily to make it refer to the second word.  */  if (optype0 == MEMOP)    addreg0 = find_addr_reg (XEXP (operands[0], 0));  if (optype1 == MEMOP)    addreg1 = find_addr_reg (XEXP (operands[1], 0));  /* Ok, we can do one word at a time.     Normally we do the low-numbered word first,     but if either operand is autodecrementing then we     do the high-numbered word first.     In either case, set up in LATEHALF the operands to use     for the high-numbered word and in some cases alter the     operands in OPERANDS to be suitable for the low-numbered word.  */  if (optype0 == REGOP)    latehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);  else if (optype0 == OFFSOP)    latehalf[0] = adj_offsettable_operand (operands[0], 4);  else    latehalf[0] = operands[0];  if (optype1 == REGOP)    latehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);  else if (optype1 == OFFSOP)    latehalf[1] = adj_offsettable_operand (operands[1], 4);  else if (optype1 == CNSTOP)    {      if (CONSTANT_P (operands[1]))	latehalf[1] = const0_rtx;      else if (GET_CODE (operands[1]) == CONST_DOUBLE)	{	  latehalf[1] = gen_rtx (CONST_INT, VOIDmode,				 CONST_DOUBLE_HIGH (operands[1]));	  operands[1] = gen_rtx (CONST_INT, VOIDmode,				 CONST_DOUBLE_LOW (operands[1]));	}    }  else    latehalf[1] = operands[1];  /* If insn is effectively movd N (sp),-(sp) then we will do the     high word first.  We should use the adjusted operand 1 (which is N+4 (sp))     for the low word as well, to compensate for the first decrement of sp.  */  if (optype0 == PUSHOP      && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM      && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))    operands[1] = latehalf[1];  /* If one or both operands autodecrementing,     do the two words, high-numbered first.  */  /* Likewise,  the first move would clobber the source of the second one,     do them in the other order.  This happens only for registers;     such overlap can't happen in memory unless the user explicitly     sets it up, and that is an undefined circumstance.  */  if (optype0 == PUSHOP || optype1 == PUSHOP      || (optype0 == REGOP && optype1 == REGOP	  && REGNO (operands[0]) == REGNO (latehalf[1])))    {      /* Make any unoffsettable addresses point at high-numbered word.  */      if (addreg0)	asm_add (4, addreg0);      if (addreg1)	asm_add (4, addreg1);      /* Do that word.  */      output_asm_insn (singlemove_string (latehalf), latehalf);      /* Undo the adds we just did.  */      if (addreg0)         asm_add (-4, addreg0);      if (addreg1)	asm_add (-4, addreg1);      /* Do low-numbered word.  */      return singlemove_string (operands);    }  /* Normal case: do the two words, low-numbered first.  */  output_asm_insn (singlemove_string (operands), operands);  /* Make any unoffsettable addresses point at high-numbered word.  */  if (addreg0)    asm_add (4, addreg0);  if (addreg1)    asm_add (4, addreg1);  /* Do that word.  */  output_asm_insn (singlemove_string (latehalf), latehalf);  /* Undo the adds we just did.  */  if (addreg0)    asm_add (-4, addreg0);  if (addreg1)    asm_add (-4, addreg1);  return "";}intstandard_80387_constant_p (x)     rtx x;{  union { double d; int i[2];} u;  register double d;  u.i[0] = XINT (x, 0);  u.i[1] = XINT (x, 1);  d = u.d;  if (d == 0)    return 1;  if (d == 1)    return 2;  /* Note that on the 80387, other constants, such as pi,     are much slower to load as standard constants     than to load from doubles in memory!  */  return 0;}static char *output_move_const_double (operands)     rtx *operands;{  if (FP_REG_P (operands[0]))    {      int conval = standard_80387_constant_p (operands[1]);      /* fp_pop_level++; */      if (conval == 1)	return "fldz";      if (conval == 2)	return "fld1";      /* fp_pop_level--; */    }  output_move_double (operands);}static char *output_move_const_single (operands)     rtx *operands;{  if (FP_REG_P (operands[0]))    {      int conval = standard_80387_constant_p (operands[1]);      /* fp_pop_level++; */      if (conval == 1)	return "fldz";      if (conval == 2)	return "fld1";      /* fp_pop_level--; */    }  if (GET_CODE (operands[1]) == CONST_DOUBLE)    {      union { int i[2]; double d;} u1;      union { int i; float f;} u2;      u1.i[0] = CONST_DOUBLE_LOW (operands[1]);      u1.i[1] = CONST_DOUBLE_HIGH (operands[1]);      u2.f = u1.d;      operands[1] = gen_rtx (CONST_INT, VOIDmode, u2.i);    }  return singlemove_string (operands);}/* Output an insn to move an SF value from FROM to TO.   The kinds of operands are not restricted   except that they may not both be in memory.  */voidoutput_movsf (to, from)     rtx from, to;{  rtx xops[2];  xops[0] = to;  xops[1] = from;  if (FP_REG_P (from) || FP_REG_P (to))    {      from = xops[1];    }  if (FP_REG_P (from))    {#if 0	{	  if (REGNO (from) != REGNO (to))	    {	      output_asm_insn ("fld%S0 %1 \n\tfstp%S0 %0", xops);	    }	}      else#endif      if (! FP_REG_P (to))	fp_pop_sf (to);    }  else if (FP_REG_P (to))    fp_push_sf (from);  else    output_asm_insn (singlemove_string (xops), xops);}/* Output an insn to move a DF value from FROM to TO.   The kinds of operands are not restricted   except that they may not both be in memory.  */voidoutput_movdf (to, from)     rtx from, to;{  rtx xops[2];  xops[0] = to;  xops[1] = from;  if (FP_REG_P (from) || FP_REG_P (to))    {      from = xops[1];      to = xops[0];    }  if (FP_REG_P (from))    {#if 0	{	  if (REGNO (from) != REGNO (to))	    abort ();/*	    output_asm_insn ("fld%Q0 %1 \n\t fstp%Q0 %0", xops);*/	}      else	{#endif      if (! FP_REG_P (to))	fp_pop_df (to);    }  else if (FP_REG_P (to))    fp_push_df (from);  else    output_asm_insn (output_move_double (xops), xops);}/* does move of FROM to TO where the mode is the minimum of thetwo */static voidoutput_movf (to, from)     rtx to, from;{  if (GET_MODE (from) == SFmode || GET_MODE (to) == SFmode)    output_movsf (to, from);  else    output_movdf (to, from);}/* Return the best assembler insn template   for moving operands[1] into operands[0] as a fullword.  */voidfunction_prologue (file, size)     FILE *file;     int size;{  register int regno;  int nregs, limit;  rtx xops[4];  extern int frame_pointer_needed;  /* fp_pop_level = 0; */  xops[0] = stack_pointer_rtx;  xops[1] = frame_pointer_rtx;  xops[2] = gen_rtx (CONST_INT, VOIDmode, size);  if (frame_pointer_needed)    {      output_asm_insn ("push%L0 %1", xops);      output_asm_insn (AS2 (mov%L0,%0,%1), xops);      if (size)	output_asm_insn (AS2 (sub%L0,%2,%0), xops);    }  /* Note If use enter it is NOT reversed args.     This one is not reversed from intel!!     I think enter is slower.  Also sdb doesn't like it.     But if you want it the code is:     {     xops[3] = const0_rtx;     output_asm_insn ("enter %2,%3", xops);     }     */  nregs = 0;  limit = (frame_pointer_needed ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM);  for (regno = limit - 1; regno >= 0; regno--)    if (regs_ever_live[regno] && ! call_used_regs[regno])      {	fprintf (file, "\tpush%s %se%s\n", L_SIZE, RP, hi_reg_name[regno]);      }}voidfunction_epilogue (file, size)     FILE *file;     int size;{  register int regno;  register int nregs, limit;  int assure_sp_pos;  int return_struct_adjust;  extern int frame_pointer_needed;  extern int current_function_pops_args;  extern int current_function_args_size;  extern int flag_pcc_struct_return;  limit = (frame_pointer_needed ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM);  nregs = 0;  return_struct_adjust =    (current_function_returns_struct#ifdef STRUCT_RETURN_CALLER_POP     && !flag_pcc_struct_return#endif     ? 4 : 0);  for (regno = (limit -1); regno >= 0; regno--)    if (regs_ever_live[regno] && ! call_used_regs[regno])      nregs++;  /* sp is often  unreliable so we must go off the frame pointer,   */  if (nregs && frame_pointer_needed)    {      rtx xops[2];      xops[0] = adj_offsettable_operand (AT_BP (Pmode),					 -size -(nregs*(UNITS_PER_WORD)));      xops[1] = stack_pointer_rtx;      output_asm_insn (AS2 (lea%L0,%0,%1), xops);    }  for (regno = 0; regno < limit; regno++)    {      if (regs_ever_live[regno] && ! call_used_regs[regno])	{	  fprintf (file, "\tpop%s ", L_SIZE);	  fprintf (file, "%se%s\n", RP, hi_reg_name[regno]);	}    }  if (frame_pointer_needed)    fprintf (file, "\tleave\n");  if (current_function_pops_args && current_function_args_size)    fprintf (file, "\tret %s%d\n", IP,	     (current_function_args_size + return_struct_adjust));  else if (return_struct_adjust)    fprintf (file, "\tret %s%d\n", IP, return_struct_adjust);  else    fprintf (file, "\tret\n");}inthard_regno_mode_ok (regno, mode)     int regno;     enum machine_mode mode;{  return    (regno < 2 ? 1     /* Used to reject floating modes here */     : regno < 4 ? 1     : regno >= 8 ? mode == DFmode || mode == SFmode     : mode != QImode);}/* Print the name of a register based on its machine mode and number.   If CODE is 'w', pretend the mode is HImode.   If CODE is 'b', pretend the mode is QImode.   If CODE is 'k', pretend the mode is SImode.  */#define PRINT_REG(X, CODE, FILE) \  do { fprintf (FILE, "%s", RP);			\       switch ((CODE == 'w' ? 2 			\		: CODE == 'b' ? 1			\		: CODE == 'k' ? 4			\		: GET_MODE_SIZE (GET_MODE (X))))	\	 {						\	 case 4:					\	 case 8:					\	   if (!FP_REG_P (X)) fputs ("e", FILE);	\	 case 2:					\	   fputs (hi_reg_name[REGNO (X)], FILE);	\	   break;					\	 case 1:					\	   fputs (qi_reg_name[REGNO (X)], FILE);	\	   break;					\	 }						\     } while (0)/* Meaning of CODE:   f -- float insn (print a CONST_DOUBLE as a float rather than in hex).   L,W,B,Q,S -- print the opcode suffix for specified size of operand.   R -- print the prefix for register names.   z -- print the opcode suffix for the size of the current operand.   * -- print a star (in certain assembler syntax)   w -- print the operand as if it's a "word" (HImode) even if it isn't.   c -- don't print special prefixes before constant operands.*/voidprint_operand (file, x, code)     FILE *file;     rtx x;     int code;{  if (code)    {      switch (code)	{	case '*':	  if (USE_STAR)	    putc ('*', file);	  return;	case 'L':	  PUT_OP_SIZE (code, 'l', file);	  return;	case 'W':	  PUT_OP_SIZE (code, 'w', file);	  return;	case 'B':	  PUT_OP_SIZE (code, 'b', file);	  return;	case 'Q':	  PUT_OP_SIZE (code, 'l', file);	  return;	case 'S':	  PUT_OP_SIZE (code, 's', file);	  return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产揄拍国内精品对白| aa级大片欧美| 亚洲欧洲精品成人久久奇米网| 欧美三级三级三级| 国产91精品入口| 天天综合天天做天天综合| 日本一区二区视频在线| 日韩午夜激情av| 欧美三级乱人伦电影| 成人免费高清视频| 久久99热这里只有精品| 午夜电影一区二区三区| 亚洲人成精品久久久久| 久久久国产午夜精品 | 国产美女av一区二区三区| 亚洲一本大道在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美成人女星排行榜| 欧美日韩久久久| 91国产丝袜在线播放| 99久久精品国产一区二区三区| 国产一区二区不卡在线| 免费在线一区观看| 午夜a成v人精品| 亚洲美女免费视频| 亚洲欧洲av在线| 中文字幕av资源一区| 欧美mv和日韩mv国产网站| 在线播放91灌醉迷j高跟美女| 在线一区二区三区| 色欧美乱欧美15图片| 一本久久精品一区二区| 99久久综合精品| 99视频精品全部免费在线| eeuss鲁片一区二区三区在线看| 国产成a人亚洲精| 国产成人精品免费视频网站| 国产精品亚洲人在线观看| 国产在线精品一区二区不卡了 | 日韩欧美区一区二| 91精品国产品国语在线不卡| 91精品国产综合久久福利软件| 欧美日韩国产一级| 91精品国产综合久久福利| 日韩一区二区在线看片| 欧美tickling网站挠脚心| 精品剧情v国产在线观看在线| 日韩女优av电影| 久久久亚洲综合| 中文字幕精品三区| 亚洲柠檬福利资源导航| 一区二区久久久久久| 亚洲国产人成综合网站| 午夜精品123| 国产在线精品一区二区三区不卡| 粉嫩av一区二区三区粉嫩| 99国产一区二区三精品乱码| 欧美自拍丝袜亚洲| 制服丝袜中文字幕一区| 精品国产露脸精彩对白| 中文字幕国产精品一区二区| 亚洲精品你懂的| 日产国产欧美视频一区精品| 国产一区二区三区在线观看免费| av福利精品导航| 欧美日韩高清在线| 久久久午夜电影| 亚洲激情自拍视频| 人妖欧美一区二区| 懂色中文一区二区在线播放| 色网站国产精品| 日韩亚洲欧美在线| 中文字幕精品在线不卡| 丝袜亚洲另类丝袜在线| 国产a区久久久| 欧美中文字幕不卡| 精品国产91洋老外米糕| 亚洲视频一区二区在线| 麻豆精品新av中文字幕| 成人av影院在线| 欧美高清视频在线高清观看mv色露露十八 | 色视频成人在线观看免| 日韩免费视频线观看| 国产精品久久久久久久第一福利| 亚洲成a人v欧美综合天堂| 国产美女精品在线| 欧美精品第1页| 日韩一区在线免费观看| 久久99精品久久久久久久久久久久| av在线不卡免费看| 欧美不卡一区二区| 亚洲尤物在线视频观看| 国模一区二区三区白浆| 欧美色老头old∨ideo| 久久久久国产精品麻豆ai换脸| 亚洲午夜在线电影| 懂色av中文字幕一区二区三区| 91精品国产美女浴室洗澡无遮挡| 国产精品高潮久久久久无| 久久成人麻豆午夜电影| 欧美中文字幕一区二区三区| 国产精品国产自产拍高清av | 国产+成+人+亚洲欧洲自线| 欧美日韩国产另类一区| 亚洲色图清纯唯美| 国产不卡免费视频| 欧美xingq一区二区| 亚洲福利一二三区| 99久久免费视频.com| 久久你懂得1024| 男女男精品视频| 3d动漫精品啪啪一区二区竹菊 | 视频一区二区三区中文字幕| 99精品视频免费在线观看| 国产亚洲精品久| 韩日av一区二区| 欧美一二三在线| 日韩国产欧美在线视频| 色婷婷精品久久二区二区蜜臂av| 中文字幕va一区二区三区| 国产精品影音先锋| 欧美成人在线直播| 日本欧美一区二区| 7777精品久久久大香线蕉| 夜夜精品浪潮av一区二区三区| a4yy欧美一区二区三区| 国产精品伦理一区二区| 成人免费视频播放| 欧美高清在线视频| 成人美女视频在线看| 久久精品一二三| 韩国视频一区二区| 久久色中文字幕| 国产精品一区一区| 国产欧美一区二区在线观看| 国产精品18久久久久久久久| 久久久电影一区二区三区| 国产麻豆一精品一av一免费| 久久久久久久综合日本| 国产成人综合亚洲网站| 国产日本亚洲高清| www.色精品| 夜夜亚洲天天久久| 欧美精品在线视频| 蜜乳av一区二区| 久久综合九色欧美综合狠狠| 国产精品一区二区在线播放| 国产精品毛片久久久久久久| av不卡免费在线观看| 一卡二卡欧美日韩| 日韩一区二区中文字幕| 国产精品一区二区在线观看不卡 | 久久亚洲欧美国产精品乐播 | 懂色中文一区二区在线播放| 中文字幕一区二区三区在线不卡 | 欧美不卡激情三级在线观看| 黑人巨大精品欧美黑白配亚洲| 国产欧美一区二区精品久导航| 99精品桃花视频在线观看| 亚洲午夜电影网| 日韩欧美国产精品一区| 成人福利视频网站| 亚洲国产欧美日韩另类综合| 日韩欧美一二区| proumb性欧美在线观看| 亚洲午夜在线视频| 久久久久青草大香线综合精品| 99久久婷婷国产综合精品电影| 同产精品九九九| 国产日韩三级在线| 欧洲日韩一区二区三区| 另类小说图片综合网| 最新国产の精品合集bt伙计| 91精品国产综合久久精品麻豆| 国产一区二区在线电影| 一区二区三区在线视频播放| 欧美一区二区黄| 成+人+亚洲+综合天堂| 五月激情综合婷婷| 日本一区二区成人| 欧美日韩电影在线播放| 成人黄色大片在线观看| 日韩国产精品久久| 亚洲欧美另类久久久精品| 日韩西西人体444www| 99re热视频精品| 国内久久婷婷综合| 一二三四区精品视频| 国产偷国产偷亚洲高清人白洁| 欧美综合色免费| www.亚洲色图.com| 国产麻豆午夜三级精品| 午夜久久久影院| 中文字幕一区二区三区在线播放| 精品欧美一区二区久久 | 国产精品视频你懂的| 宅男在线国产精品| 色欧美片视频在线观看| 成人免费毛片嘿嘿连载视频| 男人的天堂亚洲一区|