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

📄 vms.h

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 H
📖 第 1 页 / 共 2 页
字号:
#define ASM_FILE_START(FILE)					\{								\  alpha_write_verstamp (FILE);					\  fprintf (FILE, "\t.set noreorder\n");				\  fprintf (FILE, "\t.set volatile\n");				\  ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename);	\}#undef ASM_OUTPUT_FLOAT#define ASM_OUTPUT_FLOAT(FILE,VALUE)					\  {									\    if (REAL_VALUE_ISINF (VALUE)					\        || REAL_VALUE_ISNAN (VALUE)					\	|| REAL_VALUE_MINUS_ZERO (VALUE))				\      {									\	long t;								\	REAL_VALUE_TO_TARGET_SINGLE ((VALUE), t);			\	fprintf (FILE, "\t.long 0x%lx\n", t & 0xffffffff);		\      }									\    else								\      {									\	char str[30];							\	REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", str);			\	fprintf (FILE, "\t.%c_floating %s\n", (TARGET_FLOAT_VAX)?'f':'s', str);	\      }									\  }#define LINK_SECTION_ASM_OP ".link"#define READONLY_SECTION_ASM_OP ".rdata"#define LITERALS_SECTION_ASM_OP ".literals"#define CTORS_SECTION_ASM_OP ".ctors"#define DTORS_SECTION_ASM_OP ".dtors"#undef EXTRA_SECTIONS#define EXTRA_SECTIONS	in_link, in_rdata, in_literals, in_ctors, in_dtors#undef EXTRA_SECTION_FUNCTIONS#define EXTRA_SECTION_FUNCTIONS					\void								\readonly_section ()						\{								\  if (in_section != in_rdata)				\    {								\      fprintf (asm_out_file, "%s\n", READONLY_SECTION_ASM_OP);	\      in_section = in_rdata;				\    }								\}								\void								\link_section ()							\{								\  if (in_section != in_link)					\    {								\      fprintf (asm_out_file, "%s\n", LINK_SECTION_ASM_OP); 	\      in_section = in_link;					\    }								\}                                                               \void								\literals_section ()						\{								\  if (in_section != in_literals)				\    {								\      fprintf (asm_out_file, "%s\n", LITERALS_SECTION_ASM_OP); 	\      in_section = in_literals;					\    }								\}								\void								\ctors_section ()						\{								\  if (in_section != in_ctors)					\    {								\      fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP);	\      in_section = in_ctors;					\    }								\}								\void								\dtors_section ()						\{								\  if (in_section != in_dtors)					\    {								\      fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP);	\      in_section = in_dtors;					\    }								\}#undef ASM_OUTPUT_ADDR_DIFF_ELT#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) abort ()#undef ASM_OUTPUT_ADDR_VEC_ELT#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \  fprintf (FILE, "\t.quad $L%d\n", (VALUE))#undef READONLY_DATA_SECTION#define READONLY_DATA_SECTION readonly_section#define ASM_FILE_END(FILE) alpha_write_linkage (FILE);#undef CASE_VECTOR_MODE#define CASE_VECTOR_MODE DImode#undef CASE_VECTOR_PC_RELATIVE#undef ASM_OUTPUT_CASE_LABEL#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLEINSN)	\{ ASM_OUTPUT_ALIGN (FILE, 3); ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM); }/* This says how to output assembler code to declare an                   uninitialized external linkage data object.  */ #define COMMON_ASM_OP ".comm"#undef ASM_OUTPUT_ALIGNED_COMMON#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\do {									\  fprintf ((FILE), "\t%s\t", COMMON_ASM_OP);				\  assemble_name ((FILE), (NAME));					\  fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\} while (0)#define NO_MD_PROTOTYPES/* Output assembler code for a block containing the constant parts   of a trampoline, leaving space for the variable parts.   The trampoline should set the static chain pointer to value placed   into the trampoline and should branch to the specified routine.     Note that $27 has been set to the address of the trampoline, so we can   use it for addressability of the two data items.  Trampolines are always   aligned to FUNCTION_BOUNDARY, which is 64 bits.  */#undef TRAMPOLINE_TEMPLATE#define TRAMPOLINE_TEMPLATE(FILE)		\{						\  fprintf (FILE, "\t.quad 0\n");		\  fprintf (FILE, "\t.linkage __tramp\n");	\  fprintf (FILE, "\t.quad 0\n");		\}/* Length in units of the trampoline for entering a nested function.  */#undef TRAMPOLINE_SIZE#define TRAMPOLINE_SIZE    32/* Emit RTL insns to initialize the variable parts of a trampoline.   FNADDR is an RTX for the address of the function's pure code.   CXT is an RTX for the static chain value for the function.  */#undef INITIALIZE_TRAMPOLINE#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \  alpha_initialize_trampoline (TRAMP, FNADDR, CXT, 16, 24, -1)/* A C statement (sans semicolon) to output an element in the table of   global constructors.  */#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)		\  do {							\    ctors_section ();					\    fprintf (FILE, "\t.quad "); 			\    assemble_name (FILE, NAME); 			\    fprintf (FILE, "\n");				\  } while (0)/* A C statement (sans semicolon) to output an element in the table of   global destructors.	*/#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)		\  do {							\    dtors_section ();					\    fprintf (FILE, "\t.quad "); 			\    assemble_name (FILE, NAME); 			\    fprintf (FILE, "\n");				\  } while (0)#define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, NAME, ARGS) \  (vms_valid_decl_attribute_p (DECL, ATTRIBUTES, NAME, ARGS))extern int vms_valid_decl_attribute_p ();#undef SDB_DEBUGGING_INFO#undef MIPS_DEBUGGING_INFO#undef DBX_DEBUGGING_INFO#define DWARF2_DEBUGGING_INFO/* This is how to output an assembler line   that says to advance the location counter   to a multiple of 2**LOG bytes.  */#undef ASM_OUTPUT_ALIGN#define ASM_OUTPUT_ALIGN(FILE,LOG)	\    fprintf (FILE, "\t.align %d\n", LOG);#define ASM_OUTPUT_SECTION(FILE,SECTION)			\   (strcmp (SECTION, ".text") == 0)				\     ? text_section ()						\     : named_section (NULL_TREE, SECTION, 0),			\       ASM_OUTPUT_ALIGN (FILE, 0)				\#define ASM_OUTPUT_SECTION_NAME(FILE,DECL,NAME,RELOC)		\  do								\    {								\      char *flags;					 	\      int ovr = 0;						\      if (DECL && DECL_MACHINE_ATTRIBUTES (DECL)		\	  && lookup_attribute					\	      ("overlaid", DECL_MACHINE_ATTRIBUTES (DECL)))	\	flags = ",OVR", ovr = 1;				\      else if (strncmp (NAME,".debug", 6) == 0)			\	flags = ",NOWRT";					\      else							\	flags = "";						\      fputc ('\n', (FILE));					\      fprintf (FILE, ".section\t%s%s\n", NAME, flags);		\      if (ovr)							\        (NAME) = "";						\    } while (0)#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)				\  do {	literals_section();                                             \	fprintf ((FILE), "\t");						\	assemble_name (FILE, LABEL1);					\	fprintf (FILE, " = ");						\	assemble_name (FILE, LABEL2);					\	fprintf (FILE, "\n");						\  } while (0)#undef PREFERRED_DEBUGGING_TYPE#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG#undef ASM_FORMAT_PRIVATE_NAME#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO)	\( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 12),	\  sprintf ((OUTPUT), "%s___%d", (NAME), (LABELNO)))/* ??? VMS uses different linkage.  */#undef ASM_OUTPUT_MI_THUNK#undef ASM_SPEC#undef ASM_FINAL_SPEC#undef LINK_SPEC#undef STARTFILE_SPEC#define ASM_SPEC "-nocpp %{pg}"#define LINK_SPEC "%{g3:-g3} %{g0:-g0} %{shared:-shared} %{v:-v}"/* Define the names of the division and modulus functions.  */#define DIVSI3_LIBCALL "OTS$DIV_I"#define DIVDI3_LIBCALL "OTS$DIV_L"#define UDIVSI3_LIBCALL "OTS$DIV_UI"#define UDIVDI3_LIBCALL "OTS$DIV_UL"#define MODSI3_LIBCALL "OTS$REM_I"#define MODDI3_LIBCALL "OTS$REM_L"#define UMODSI3_LIBCALL "OTS$REM_UI"#define UMODDI3_LIBCALL "OTS$REM_UL"#define DIR_SEPARATOR ']'#define PREFIX "GNU_ROOT:"

⌨️ 快捷键说明

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