⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gencodes.c

📁 这是完整的gcc源代码
💻 C
字号:
/* Generate from machine description:   - some macros CODE_FOR_... giving the insn_code_number value   for each of the defined standard insn names.   Copyright (C) 1987 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.  */#include <stdio.h>#include "config.h"#include "rtl.h"#include "obstack.h"struct 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 ();int insn_code_number;voidgen_insn (insn)     rtx insn;{  /* Don't mention instructions whose names are the null string.     They are in the machine description just to be recognized.  */  if (strlen (XSTR (insn, 0)) != 0)    printf ("  CODE_FOR_%s = %d,\n", XSTR (insn, 0),	    insn_code_number);}intxmalloc (size){  register int val = malloc (size);  if (val == 0)    fatal ("virtual memory exhausted");  return val;}intxrealloc (ptr, size)     char *ptr;     int size;{  int result = realloc (ptr, size);  if (!result)    fatal ("virtual memory exhausted");  return result;}voidfatal (s, a1, a2)     char *s;{  fprintf (stderr, "gencodes: ");  fprintf (stderr, s, a1, a2);  fprintf (stderr, "\n");  exit (FATAL_EXIT_CODE);}/* More 'friendly' abort that prints the line and file.   config.h can #define abort fancy_abort if you like that sort of thing.  */voidfancy_abort (){  fatal ("Internal gcc abort.");}intmain (argc, argv)     int argc;     char **argv;{  rtx desc;  FILE *infile;  extern rtx read_rtx ();  register int c;  obstack_init (rtl_obstack);  if (argc <= 1)    fatal ("No input file name.");  infile = fopen (argv[1], "r");  if (infile == 0)    {      perror (argv[1]);      exit (FATAL_EXIT_CODE);    }  init_rtl ();  printf ("/* Generated automatically by the program `gencodes'\n\from the machine description file `md'.  */\n\n");  printf ("#ifndef MAX_INSN_CODE\n\n");  /* Read the machine description.  */  insn_code_number = 0;  printf ("enum insn_code {\n");  while (1)    {      c = read_skip_spaces (infile);      if (c == EOF)	break;      ungetc (c, infile);      desc = read_rtx (infile);      if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)	{	  gen_insn (desc);	  insn_code_number++;	}      if (GET_CODE (desc) == DEFINE_PEEPHOLE)	{	  insn_code_number++;	}    }  printf ("  CODE_FOR_nothing };\n");  printf ("\n#define MAX_INSN_CODE ((int) CODE_FOR_nothing)\n");  printf ("#endif /* MAX_INSN_CODE */\n");  fflush (stdout);  exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -