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

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

?? genoutput.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Generate code from to output assembler insns as recognized from rtl.   Copyright (C) 1987, 1988 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  *//* This program reads the machine description for the compiler target machine   and produces a file containing three things:   1, An array of strings `insn_template' which is indexed by insn code number   and contains the template for output of that insn,   2. An array of ints `insn_n_operands' which is indexed by insn code number   and contains the number of distinct operands in the pattern for that insn,   3. An array of ints `insn_n_dups' which is indexed by insn code number   and contains the number of match_dup's that appear in the insn's pattern.   This says how many elements of `recog_dup_loc' are significant   after an insn has been recognized.   4. An array of arrays of operand constraint strings,   `insn_operand_constraint',   indexed first by insn code number and second by operand number,   containing the constraint for that operand.   This array is generated only if register constraints appear in    match_operand rtx's.   5. An array of arrays of chars which indicate which operands of   which insn patterns appear within ADDRESS rtx's.  This array is   called `insn_operand_address_p' and is generated only if there   are *no* register constraints in the match_operand rtx's.   6. An array of arrays of machine modes, `insn_operand_mode',   indexed first by insn code number and second by operand number,   containing the machine mode that that operand is supposed to have.   Also `insn_operand_strict_low', which is nonzero for operands   contained in a STRICT_LOW_PART.   7. An array of arrays of int-valued functions, `insn_operand_predicate',   indexed first by insn code number and second by operand number,   containing the match_operand predicate for this operand.   8. An array of functions `insn_gen_function' which, indexed   by insn code number, gives the function to generate a body   for that patter, given operands as arguments.   9. A function `output_insn_hairy' which is called with two arguments   (an insn code number and a vector of operand value rtx's)   and returns a template to use for output of that insn.   This is used only in the cases where the template is not constant.   These cases are specified by a * at the beginning of the template string   in the machine description.  They are identified for the sake of   other parts of the compiler by a zero element in `insn_template'.     10. An array of structures, `insn_machine_info', that gives machine-specific   information about the insn.   11. An array of ints, `insn_n_alternatives', that gives the number   of alternatives in the constraints of each pattern.The code number of an insn is simply its position in the machine description;code numbers are assigned sequentially to entries in the description,starting with code number 0.Thus, the following entry in the machine description    (define_insn "clrdf"      [(set (match_operand:DF 0 "general_operand" "")	    (const_int 0))]      ""      "clrd %0")assuming it is the 25th entry present, would causeinsn_template[24] to be "clrd %0", and insn_n_operands[24] to be 1.It would not make an case in output_insn_hairy because the templategiven in the entry is a constant (it does not start with `*').  */#include <stdio.h>#include "config.h"#include "rtl.h"#include "obstack.h"/* No instruction can have more operands than this.   Sorry for this arbitrary limit, but what machine will   have an instruction with this many operands?  */#define MAX_MAX_OPERANDS 40struct obstack obstack;struct obstack *rtl_obstack = &obstack;#define obstack_chunk_alloc xmalloc#define obstack_chunk_free freeextern int xmalloc ();extern void free ();void fatal ();void fancy_abort ();void error ();void mybcopy ();void mybzero ();/* insns in the machine description are assigned sequential code numbers   that are used by insn-recog.c (produced by genrecog) to communicate   to insn-output.c (produced by this program).  */int next_code_number;/* Record in this chain all information that we will output,   associated with the code number of the insn.  */struct data{  int code_number;  char *name;  char *template;		/* string such as "movl %1,%0" */  int n_operands;		/* Number of operands this insn recognizes */  int n_dups;			/* Number times match_dup appears in pattern */  int n_alternatives;		/* Number of alternatives in each constraint */  struct data *next;  char *constraints[MAX_MAX_OPERANDS];  /* Number of alternatives in constraints of operand N.  */  int op_n_alternatives[MAX_MAX_OPERANDS];  char *predicates[MAX_MAX_OPERANDS];  char address_p[MAX_MAX_OPERANDS];  enum machine_mode modes[MAX_MAX_OPERANDS];  char strict_low[MAX_MAX_OPERANDS];  char outfun;			/* Nonzero means this has an output function */  char *machine_info;		/* machine-specific info string. */};/* This variable points to the first link in the chain.  */struct data *insn_data;/* Pointer to the last link in the chain, so new elements   can be added at the end.  */struct data *end_of_insn_data;/* Nonzero if any match_operand has a constraint string;   implies that REGISTER_CONSTRAINTS will be defined   for this machine description.  */int have_constraints;voidoutput_prologue (){  printf ("/* Generated automatically by the program `genoutput'\n\from the machine description file `md'.  */\n\n");  printf ("#include \"config.h\"\n");  printf ("#include \"rtl.h\"\n");  printf ("#include \"regs.h\"\n");  printf ("#include \"hard-reg-set.h\"\n");  printf ("#include \"real.h\"\n");  printf ("#include \"conditions.h\"\n");  printf ("#include \"insn-flags.h\"\n");  printf ("#include \"insn-config.h\"\n\n");  printf ("#ifndef __STDC__\n");  printf ("#define const\n");  printf ("#endif\n\n");  printf ("#include \"output.h\"\n");  printf ("#include \"aux-output.c\"\n\n");  /* Make sure there is at least a dummy definition of INSN_MACHINE_INFO.  */  printf ("#ifndef INSN_MACHINE_INFO\n");  printf ("#define INSN_MACHINE_INFO struct dummy1 {int i;}\n");  printf ("#endif\n\n");}voidoutput_epilogue (){  register struct data *d;  printf ("\nchar * const insn_template[] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      if (d->template)	printf ("    \"%s\",\n", d->template);      else	printf ("    0,\n");    }  printf ("  };\n");  printf ("\nchar *(*const insn_outfun[])() =\n  {\n");  for (d = insn_data; d; d = d->next)    {      if (d->outfun)	printf ("    output_%d,\n", d->code_number);      else	printf ("    0,\n");    }  printf ("  };\n");  printf ("\nrtx (*const insn_gen_function[]) () =\n  {\n");  for (d = insn_data; d; d = d->next)    {      if (d->name)	printf ("    gen_%s,\n", d->name);      else	printf ("    0,\n");    }  printf ("  };\n");  printf ("\nconst int insn_n_operands[] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      printf ("    %d,\n", d->n_operands);    }  printf ("  };\n");  printf ("\nconst int insn_n_dups[] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      printf ("    %d,\n", d->n_dups);    }  printf ("  };\n");  if (have_constraints)    {      printf ("\nchar *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =\n  {\n");      for (d = insn_data; d; d = d->next)	{	  register int i, n = 0, start;	  printf ("    {");	  /* Make sure all the operands have the same number of	     alternatives in their constraints.	     Let N be that number.  */	  for (start = 0; start < d->n_operands; start++)	    if (d->op_n_alternatives[start] > 0)	      {		if (n == 0)		  n = d->op_n_alternatives[start];		else if (n != d->op_n_alternatives[start])		  error ("wrong number of alternatives in operand %d of insn number %d",			 start, d->code_number);	      }	  /* Record the insn's overall number of alternatives.  */	  d->n_alternatives = n;	  for (i = 0; i < d->n_operands; i++)	    {	      if (d->constraints[i] == 0)		printf (" \"\",");	      else		printf (" \"%s\",", d->constraints[i]);	    }	  if (d->n_operands == 0)	    printf (" 0");	  printf (" },\n");	}      printf ("  };\n");    }  else    {      printf ("\nconst char insn_operand_address_p[][MAX_RECOG_OPERANDS] =\n  {\n");      for (d = insn_data; d; d = d->next)	{	  register int i;	  printf ("    {");	  for (i = 0; i < d->n_operands; i++)	    printf (" %d,", d->address_p[i]);	  if (d->n_operands == 0)	    printf (" 0");	  printf (" },\n");	}      printf ("  };\n");    }  printf ("\nconst enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      register int i;      printf ("    {");      for (i = 0; i < d->n_operands; i++)	printf (" %smode,", GET_MODE_NAME (d->modes[i]));      if (d->n_operands == 0)	printf (" VOIDmode");      printf (" },\n");    }  printf ("  };\n");  printf ("\nconst char insn_operand_strict_low[][MAX_RECOG_OPERANDS] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      register int i;      printf ("    {");      for (i = 0; i < d->n_operands; i++)	printf (" %d,", d->strict_low[i]);      if (d->n_operands == 0)	printf (" 0");      printf (" },\n");    }  printf ("  };\n");  printf ("\nint (*const insn_operand_predicate[][MAX_RECOG_OPERANDS])() =\n  {\n");  for (d = insn_data; d; d = d->next)    {      register int i;      printf ("    {");      for (i = 0; i < d->n_operands; i++)	printf (" %s,", ((d->predicates[i] && d->predicates[i][0])			 ? d->predicates[i] : "0"));      if (d->n_operands == 0)	printf (" 0");      printf (" },\n");    }  printf ("  };\n");  printf ("\n#ifndef DEFAULT_MACHINE_INFO\n#define DEFAULT_MACHINE_INFO 0\n");  printf ("#endif\n\nconst INSN_MACHINE_INFO insn_machine_info[] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      if (d->machine_info)	printf ("    {%s},\n", d->machine_info);      else	printf("     { DEFAULT_MACHINE_INFO },\n");    }  printf("  };\n");  printf ("\nconst int insn_n_alternatives[] =\n  {\n");  for (d = insn_data; d; d = d->next)    {      if (d->n_alternatives)	printf ("    %d,\n", d->n_alternatives);      else	printf("     0,\n");    }  printf("  };\n");}/* scan_operands (X) stores in max_opno the largest operand   number present in X, if that is larger than the previous   value of max_opno.  It stores all the constraints in `constraints'   and all the machine modes in `modes'.   THIS_ADDRESS_P is nonzero if the containing rtx was an ADDRESS.   THIS_STRICT_LOW is nonzero if the containing rtx was a STRICT_LOW_PART.  */int max_opno;int num_dups;char *constraints[MAX_MAX_OPERANDS];int op_n_alternatives[MAX_MAX_OPERANDS];char *predicates[MAX_MAX_OPERANDS];char address_p[MAX_MAX_OPERANDS];enum machine_mode modes[MAX_MAX_OPERANDS];char strict_low[MAX_MAX_OPERANDS];voidscan_operands (part, this_address_p, this_strict_low)     rtx part;     int this_address_p;     int this_strict_low;{  register int i, j;  register RTX_CODE code;  register char *format_ptr;  if (part == 0)    return;  code = GET_CODE (part);  if (code == MATCH_OPERAND)    {      int opno = XINT (part, 0);      if (opno > max_opno)	max_opno = opno;      if (max_opno >= MAX_MAX_OPERANDS)	error ("Too many operands (%d) in one instruction pattern.\n",	       max_opno + 1);      modes[opno] = GET_MODE (part);      strict_low[opno] = this_strict_low;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲人成网站| 99久久久久免费精品国产 | 国产成人免费xxxxxxxx| 欧美日本视频在线| 亚洲综合色自拍一区| 色综合一个色综合| 日本系列欧美系列| 欧美日韩久久不卡| 一区二区三区四区精品在线视频| 成人丝袜视频网| 自拍偷拍欧美激情| 在线免费观看日本一区| 五月婷婷欧美视频| 精品久久久久久久久久久久包黑料| 日本一道高清亚洲日美韩| 91麻豆精品国产91久久久久久久久 | 天天综合网 天天综合色| 欧美日韩精品一区二区三区四区| 亚洲一区二区欧美日韩| 91精品欧美久久久久久动漫| 九九九久久久精品| 国产精品成人免费| 日韩一区二区免费在线观看| 欧美日韩一区二区三区不卡| 亚洲国产成人tv| 久久奇米777| 欧美性受xxxx| 国产一区二区三区四区五区美女 | 日本不卡一区二区三区| 久久一区二区三区四区| 色综合色综合色综合色综合色综合| 亚洲国产成人高清精品| 国产精品久久午夜| 欧美成人伊人久久综合网| av高清久久久| 国产99久久久久| 日本视频一区二区| 午夜精品福利视频网站| 国产精品第一页第二页第三页| 日韩欧美资源站| 欧美亚洲动漫精品| 欧美变态口味重另类| 91蜜桃婷婷狠狠久久综合9色| 看片网站欧美日韩| 蜜臀精品一区二区三区在线观看| 亚洲视频电影在线| 最近日韩中文字幕| 国产精品美女一区二区在线观看| 日韩美女视频在线| 日韩欧美国产三级电影视频| 欧美亚洲国产怡红院影院| 色婷婷综合激情| 在线免费观看日本欧美| 欧美午夜视频网站| 欧美日韩精品一区二区| 欧美亚洲国产一卡| 欧美绝品在线观看成人午夜影视| 91免费在线看| 欧美无砖专区一中文字| 欧美精选一区二区| 欧美一卡2卡三卡4卡5免费| 国产欧美一区二区三区沐欲 | 日本一区二区三区四区| 日本一区二区综合亚洲| 中文字幕一区二区在线播放| 亚洲精品国产一区二区三区四区在线| 亚洲人成在线播放网站岛国 | 欧美成人女星排行榜| 久久久亚洲精华液精华液精华液| 国产精品久久久久婷婷二区次| 亚洲色图在线播放| 美女精品一区二区| 成人av电影在线网| 日韩欧美国产综合一区| 最新高清无码专区| 另类小说视频一区二区| 不卡欧美aaaaa| 日韩午夜在线播放| 伊人婷婷欧美激情| 国产乱国产乱300精品| 欧美伊人久久久久久午夜久久久久| 久久综合狠狠综合| 亚洲小说欧美激情另类| 国产精品一区二区三区四区| 欧美优质美女网站| 欧美激情综合网| 蜜桃视频一区二区| 欧美剧在线免费观看网站| 日韩美女视频一区二区 | 亚洲欧美日韩成人高清在线一区| 国内成+人亚洲+欧美+综合在线| 99久久久精品免费观看国产蜜| 欧美精品一区二区三区一线天视频 | 成人丝袜视频网| 久久青草欧美一区二区三区| 蜜臀va亚洲va欧美va天堂| 欧美亚洲日本国产| 一区二区在线看| 一本色道久久综合亚洲aⅴ蜜桃| 久久久三级国产网站| 久久91精品国产91久久小草| 日韩精品专区在线影院重磅| 老司机精品视频线观看86| 欧美一区二区高清| 黄一区二区三区| 久久蜜桃一区二区| 国产成人一区在线| 欧美国产日产图区| 色综合天天性综合| 一区二区三区国产| 欧美军同video69gay| 久久精品国产一区二区| 久久久久久电影| 成人久久视频在线观看| 成人欧美一区二区三区1314| 色哟哟国产精品免费观看| 一区二区三区中文字幕在线观看| 色嗨嗨av一区二区三区| 免费观看在线综合| 中文在线免费一区三区高中清不卡| 国产成人精品三级| 国产成人鲁色资源国产91色综| 国产精品久久99| 播五月开心婷婷综合| 欧美日本高清视频在线观看| 亚洲第一精品在线| 91在线视频播放地址| 欧美经典一区二区| 免费看欧美美女黄的网站| youjizz久久| 九九视频精品免费| 国产精品久久久久永久免费观看 | 精品日韩一区二区三区免费视频| 99久久精品国产毛片| 美女mm1313爽爽久久久蜜臀| 一区二区三区免费观看| 欧美精品乱码久久久久久| 亚洲一区电影777| 精品国产成人在线影院| 欧美裸体一区二区三区| 91视频91自| 成人免费视频caoporn| 久久国产精品99精品国产 | 国产精品视频看| 精品伦理精品一区| 欧美成人女星排行榜| 欧美一级欧美三级在线观看| 在线观看视频一区| 在线观看亚洲精品视频| 色综合视频在线观看| 99精品欧美一区二区蜜桃免费| 丰满放荡岳乱妇91ww| 国产一区二区电影| 国产精品69毛片高清亚洲| 国产精品自产自拍| 丰满亚洲少妇av| 日本道免费精品一区二区三区| 91猫先生在线| 91精品久久久久久久久99蜜臂| 欧美日韩高清一区二区不卡| 日韩亚洲电影在线| 欧美韩国日本综合| 亚洲伦理在线精品| 日产精品久久久久久久性色| 日本v片在线高清不卡在线观看| 麻豆精品在线视频| 国产福利一区二区三区视频在线 | 精品欧美一区二区久久| 久久噜噜亚洲综合| 一区二区视频免费在线观看| 午夜欧美视频在线观看| 国内精品国产成人国产三级粉色 | 91麻豆精品国产91久久久 | 久久综合一区二区| 亚洲丝袜精品丝袜在线| 九色porny丨国产精品| 91丨porny丨中文| 日韩午夜激情视频| 一区二区三区国产精华| 盗摄精品av一区二区三区| 欧美精品久久天天躁| 国产精品麻豆一区二区| 日本大胆欧美人术艺术动态| 9色porny自拍视频一区二区| 欧美变态tickle挠乳网站| 亚洲午夜精品17c| 色偷偷一区二区三区| 久久久www成人免费无遮挡大片| 天天综合日日夜夜精品| 在线亚洲免费视频| 亚洲欧美经典视频| 成人avav在线| 国产精品福利影院| 99视频超级精品| 国产精品私房写真福利视频| 精品一区二区三区免费| 精品国精品国产| 国产乱码精品一区二区三区忘忧草| 日韩欧美久久久| 国产露脸91国语对白|