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

📄 alpha.h

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
   then copy it into a register, thus actually letting the address be   cse'ed.  */#define NO_FUNCTION_CSE/* Define this to be nonzero if shift instructions ignore all but the low-order   few bits.  */#define SHIFT_COUNT_TRUNCATED 1/* Control the assembler format that we output.  *//* Output to assembler file text saying following lines   may contain character constants, extra white space, comments, etc.  */#define ASM_APP_ON (TARGET_EXPLICIT_RELOCS ? "\t.set\tmacro\n" : "")/* Output to assembler file text saying following lines   no longer contain unusual constructs.  */#define ASM_APP_OFF (TARGET_EXPLICIT_RELOCS ? "\t.set\tnomacro\n" : "")#define TEXT_SECTION_ASM_OP "\t.text"/* Output before read-only data.  */#define READONLY_DATA_SECTION_ASM_OP "\t.rdata"/* Output before writable data.  */#define DATA_SECTION_ASM_OP "\t.data"/* How to refer to registers in assembler output.   This sequence is indexed by compiler's hard-register-number (see above).  */#define REGISTER_NAMES						\{"$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",		\ "$9", "$10", "$11", "$12", "$13", "$14", "$15",		\ "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23",	\ "$24", "$25", "$26", "$27", "$28", "$29", "$30", "AP",		\ "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", "$f8",	\ "$f9", "$f10", "$f11", "$f12", "$f13", "$f14", "$f15",		\ "$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23",\ "$f24", "$f25", "$f26", "$f27", "$f28", "$f29", "$f30", "FP"}/* Strip name encoding when emitting labels.  */#define ASM_OUTPUT_LABELREF(STREAM, NAME)	\do {						\  const char *name_ = NAME;			\  if (*name_ == '@' || *name_ == '%')		\    name_ += 2;					\  if (*name_ == '*')				\    name_++;					\  else						\    fputs (user_label_prefix, STREAM);		\  fputs (name_, STREAM);			\} while (0)/* Globalizing directive for a label.  */#define GLOBAL_ASM_OP "\t.globl "/* The prefix to add to user-visible assembler symbols.  */#define USER_LABEL_PREFIX ""/* This is how to output a label for a jump table.  Arguments are the same as   for (*targetm.asm_out.internal_label), except the insn for the jump table is   passed.  */#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLEINSN)	\{ ASM_OUTPUT_ALIGN (FILE, 2); (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM); }/* This is how to store into the string LABEL   the symbol_ref name of an internal numbered label where   PREFIX is the class of label and NUM is the number within the class.   This is suitable for output with `assemble_name'.  */#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM)	\  sprintf ((LABEL), "*$%s%ld", (PREFIX), (long)(NUM))/* We use the default ASCII-output routine, except that we don't write more   than 50 characters since the assembler doesn't support very long lines.  */#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \  do {									      \    FILE *_hide_asm_out_file = (MYFILE);				      \    const unsigned char *_hide_p = (const unsigned char *) (MYSTRING);	      \    int _hide_thissize = (MYLENGTH);					      \    int _size_so_far = 0;						      \    {									      \      FILE *asm_out_file = _hide_asm_out_file;				      \      const unsigned char *p = _hide_p;					      \      int thissize = _hide_thissize;					      \      int i;								      \      fprintf (asm_out_file, "\t.ascii \"");				      \									      \      for (i = 0; i < thissize; i++)					      \	{								      \	  register int c = p[i];					      \									      \	  if (_size_so_far ++ > 50 && i < thissize - 4)			      \	    _size_so_far = 0, fprintf (asm_out_file, "\"\n\t.ascii \"");      \									      \	  if (c == '\"' || c == '\\')					      \	    putc ('\\', asm_out_file);					      \	  if (c >= ' ' && c < 0177)					      \	    putc (c, asm_out_file);					      \	  else								      \	    {								      \	      fprintf (asm_out_file, "\\%o", c);			      \	      /* After an octal-escape, if a digit follows,		      \		 terminate one string constant and start another.	      \		 The VAX assembler fails to stop reading the escape	      \		 after three digits, so this is the only way we		      \		 can get it to parse the data properly.  */		      \	      if (i < thissize - 1 && ISDIGIT (p[i + 1]))		      \		_size_so_far = 0, fprintf (asm_out_file, "\"\n\t.ascii \"");  \	  }								      \	}								      \      fprintf (asm_out_file, "\"\n");					      \    }									      \  }									      \  while (0)/* This is how to output an element of a case-vector that is absolute.   (Alpha does not use such vectors, but we must define this macro anyway.)  */#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) abort ()/* This is how to output an element of a case-vector that is relative.  */#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \  fprintf (FILE, "\t.%s $L%d\n", TARGET_ABI_WINDOWS_NT ? "long" : "gprel32", \	   (VALUE))/* This is how to output an assembler line   that says to advance the location counter   to a multiple of 2**LOG bytes.  */#define ASM_OUTPUT_ALIGN(FILE,LOG)	\  if ((LOG) != 0)			\    fprintf (FILE, "\t.align %d\n", LOG);/* This is how to advance the location counter by SIZE bytes.  */#define ASM_OUTPUT_SKIP(FILE,SIZE)  \  fprintf (FILE, "\t.space "HOST_WIDE_INT_PRINT_UNSIGNED"\n", (SIZE))/* This says how to output an assembler line   to define a global common symbol.  */#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \( fputs ("\t.comm ", (FILE)),			\  assemble_name ((FILE), (NAME)),		\  fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED"\n", (SIZE)))/* This says how to output an assembler line   to define a local common symbol.  */#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED)	\( fputs ("\t.lcomm ", (FILE)),				\  assemble_name ((FILE), (NAME)),			\  fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED"\n", (SIZE)))/* Print operand X (an rtx) in assembler syntax to file FILE.   CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.   For `%' followed by punctuation, CODE is the punctuation and X is null.  */#define PRINT_OPERAND(FILE, X, CODE)  print_operand (FILE, X, CODE)/* Determine which codes are valid without a following integer.  These must   not be alphabetic.   ~    Generates the name of the current function.   /	Generates the instruction suffix.  The TRAP_SUFFIX and ROUND_SUFFIX	attributes are examined to determine what is appropriate.   ,    Generates single precision suffix for floating point	instructions (s for IEEE, f for VAX)   -	Generates double precision suffix for floating point	instructions (t for IEEE, g for VAX)   +	Generates a nop instruction after a noreturn call at the very end	of the function   */#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \  ((CODE) == '/' || (CODE) == ',' || (CODE) == '-' || (CODE) == '~' \   || (CODE) == '#' || (CODE) == '*' || (CODE) == '&' || (CODE) == '+')/* Print a memory address as an operand to reference that memory location.  */#define PRINT_OPERAND_ADDRESS(FILE, ADDR) \  print_operand_address((FILE), (ADDR))/* Implement `va_start' for varargs and stdarg.  */#define EXPAND_BUILTIN_VA_START(valist, nextarg) \  alpha_va_start (valist, nextarg)/* Tell collect that the object format is ECOFF.  */#define OBJECT_FORMAT_COFF#define EXTENDED_COFF/* If we use NM, pass -g to it so it only lists globals.  */#define NM_FLAGS "-pg"/* Definitions for debugging.  */#define SDB_DEBUGGING_INFO 1		/* generate info for mips-tfile */#define DBX_DEBUGGING_INFO 1		/* generate embedded stabs */#define MIPS_DEBUGGING_INFO 1		/* MIPS specific debugging info */#ifndef PREFERRED_DEBUGGING_TYPE	/* assume SDB_DEBUGGING_INFO */#define PREFERRED_DEBUGGING_TYPE  SDB_DEBUG#endif/* Correct the offset of automatic variables and arguments.  Note that   the Alpha debug format wants all automatic variables and arguments   to be in terms of two different offsets from the virtual frame pointer,   which is the stack pointer before any adjustment in the function.   The offset for the argument pointer is fixed for the native compiler,   it is either zero (for the no arguments case) or large enough to hold   all argument registers.   The offset for the auto pointer is the fourth argument to the .frame   directive (local_offset).   To stay compatible with the native tools we use the same offsets   from the virtual frame pointer and adjust the debugger arg/auto offsets   accordingly. These debugger offsets are set up in output_prolog.  */extern long alpha_arg_offset;extern long alpha_auto_offset;#define DEBUGGER_AUTO_OFFSET(X) \  ((GET_CODE (X) == PLUS ? INTVAL (XEXP (X, 1)) : 0) + alpha_auto_offset)#define DEBUGGER_ARG_OFFSET(OFFSET, X) (OFFSET + alpha_arg_offset)/* mips-tfile doesn't understand .stabd directives.  */#define DBX_OUTPUT_SOURCE_LINE(STREAM, LINE, COUNTER) do {	\  dbxout_begin_stabn_sline (LINE);				\  dbxout_stab_value_internal_label ("LM", &COUNTER);		\} while (0)/* We want to use MIPS-style .loc directives for SDB line numbers.  */extern int num_source_filenames;#define SDB_OUTPUT_SOURCE_LINE(STREAM, LINE)	\  fprintf (STREAM, "\t.loc\t%d %d\n", num_source_filenames, LINE)#define ASM_OUTPUT_SOURCE_FILENAME(STREAM, NAME)			\  alpha_output_filename (STREAM, NAME)/* mips-tfile.c limits us to strings of one page.  We must underestimate this   number, because the real length runs past this up to the next   continuation point.  This is really a dbxout.c bug.  */#define DBX_CONTIN_LENGTH 3000/* By default, turn on GDB extensions.  */#define DEFAULT_GDB_EXTENSIONS 1/* Stabs-in-ECOFF can't handle dbxout_function_end().  */#define NO_DBX_FUNCTION_END 1/* If we are smuggling stabs through the ALPHA ECOFF object   format, put a comment in front of the .stab<x> operation so   that the ALPHA assembler does not choke.  The mips-tfile program   will correctly put the stab into the object file.  */#define ASM_STABS_OP	((TARGET_GAS) ? "\t.stabs\t" : " #.stabs\t")#define ASM_STABN_OP	((TARGET_GAS) ? "\t.stabn\t" : " #.stabn\t")#define ASM_STABD_OP	((TARGET_GAS) ? "\t.stabd\t" : " #.stabd\t")/* Forward references to tags are allowed.  */#define SDB_ALLOW_FORWARD_REFERENCES/* Unknown tags are also allowed.  */#define SDB_ALLOW_UNKNOWN_REFERENCES#define PUT_SDB_DEF(a)					\do {							\  fprintf (asm_out_file, "\t%s.def\t",			\	   (TARGET_GAS) ? "" : "#");			\  ASM_OUTPUT_LABELREF (asm_out_file, a); 		\  fputc (';', asm_out_file);				\} while (0)#define PUT_SDB_PLAIN_DEF(a)				\do {							\  fprintf (asm_out_file, "\t%s.def\t.%s;",		\	   (TARGET_GAS) ? "" : "#", (a));		\} while (0)#define PUT_SDB_TYPE(a)					\do {							\  fprintf (asm_out_file, "\t.type\t0x%x;", (a));	\} while (0)/* For block start and end, we create labels, so that   later we can figure out where the correct offset is.   The normal .ent/.end serve well enough for functions,   so those are just commented out.  */extern int sdb_label_count;		/* block start/end next label # */#define PUT_SDB_BLOCK_START(LINE)			\do {							\  fprintf (asm_out_file,				\	   "$Lb%d:\n\t%s.begin\t$Lb%d\t%d\n",		\	   sdb_label_count,				\	   (TARGET_GAS) ? "" : "#",			\	   sdb_label_count,				\	   (LINE));					\  sdb_label_count++;					\} while (0)#define PUT_SDB_BLOCK_END(LINE)				\do {							\  fprintf (asm_out_file,				\	   "$Le%d:\n\t%s.bend\t$Le%d\t%d\n",		\	   sdb_label_count,				\	   (TARGET_GAS) ? "" : "#",			\	   sdb_label_count,				\	   (LINE));					\  sdb_label_count++;					\} while (0)#define PUT_SDB_FUNCTION_START(LINE)#define PUT_SDB_FUNCTION_END(LINE)#define PUT_SDB_EPILOGUE_END(NAME) ((void)(NAME))/* Macros for mips-tfile.c to encapsulate stabs in ECOFF, and for   mips-tdump.c to print them out.   These must match the corresponding definitions in gdb/mipsread.c.   Unfortunately, gcc and gdb do not currently share any directories.  */#define CODE_MASK 0x8F300#define MIPS_IS_STAB(sym) (((sym)->index & 0xFFF00) == CODE_MASK)#define MIPS_MARK_STAB(code) ((code)+CODE_MASK)#define MIPS_UNMARK_STAB(code) ((code)-CODE_MASK)/* Override some mips-tfile definitions.  */#define SHASH_SIZE 511#define THASH_SIZE 55/* Align ecoff symbol tables to avoid OSF1/1.3 nm complaints.  */#define ALIGN_SYMTABLE_OFFSET(OFFSET) (((OFFSET) + 7) & ~7)/* The system headers under Alpha systems are generally C++-aware.  */#define NO_IMPLICIT_EXTERN_C

⌨️ 快捷键说明

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