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

📄 mips.h

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 H
📖 第 1 页 / 共 5 页
字号:
#define CONDITIONAL_REGISTER_USAGE					\do									\  {									\    if (!TARGET_HARD_FLOAT)						\      {									\	int regno;							\									\	for (regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)	\	  fixed_regs[regno] = call_used_regs[regno] = 1;		\	for (regno = ST_REG_FIRST; regno <= ST_REG_LAST; regno++)	\	  fixed_regs[regno] = call_used_regs[regno] = 1;		\      }									\    else if (mips_isa < 4)						\      {									\	int regno;							\									\	/* We only have a single condition code register.  We		\           implement this by hiding all the condition code registers,	\           and generating RTL that refers directly to ST_REG_FIRST.  */	\	for (regno = ST_REG_FIRST; regno <= ST_REG_LAST; regno++)	\	  fixed_regs[regno] = call_used_regs[regno] = 1;		\      }									\    /* In mips16 mode, we permit the $t temporary registers to be used	\       for reload.  We prohibit the unused $s registers, since they	\       are caller saved, and saving them via a mips16 register would	\       probably waste more time than just reloading the value.  */	\    if (TARGET_MIPS16)							\      {									\	fixed_regs[18] = call_used_regs[18] = 1;                        \	fixed_regs[19] = call_used_regs[19] = 1;                        \	fixed_regs[20] = call_used_regs[20] = 1;                        \	fixed_regs[21] = call_used_regs[21] = 1;                        \	fixed_regs[22] = call_used_regs[22] = 1;                        \	fixed_regs[23] = call_used_regs[23] = 1;                        \	fixed_regs[26] = call_used_regs[26] = 1;                        \	fixed_regs[27] = call_used_regs[27] = 1;                        \	fixed_regs[30] = call_used_regs[30] = 1;                        \      }									\    SUBTARGET_CONDITIONAL_REGISTER_USAGE				\  }									\while (0)/* This is meant to be redefined in the host dependent files.  */#define SUBTARGET_CONDITIONAL_REGISTER_USAGE/* Show we can debug even without a frame pointer.  */#define CAN_DEBUG_WITHOUT_FP/* Complain about missing specs and predefines that should be defined in each   of the target tm files to override the defaults.  This is mostly a place-   holder until I can get each of the files updated [mm].  */#if defined(OSF_OS) \    || defined(DECSTATION) \    || defined(SGI_TARGET) \    || defined(MIPS_NEWS) \    || defined(MIPS_SYSV) \    || defined(MIPS_SVR4) \    || defined(MIPS_BSD43)#ifndef CPP_PREDEFINES	#error "Define CPP_PREDEFINES in the appropriate tm.h file"#endif#ifndef LIB_SPEC	#error "Define LIB_SPEC in the appropriate tm.h file"#endif#ifndef STARTFILE_SPEC	#error "Define STARTFILE_SPEC in the appropriate tm.h file"#endif#ifndef MACHINE_TYPE	#error "Define MACHINE_TYPE in the appropriate tm.h file"#endif#endif/* Tell collect what flags to pass to nm.  */#ifndef NM_FLAGS#define NM_FLAGS "-Bn"#endif/* Names to predefine in the preprocessor for this target machine.  */#ifndef CPP_PREDEFINES#define CPP_PREDEFINES "-Dmips -Dunix -Dhost_mips -DMIPSEB -DR3000 -DSYSTYPE_BSD43 \-D_mips -D_unix -D_host_mips -D_MIPSEB -D_R3000 -D_SYSTYPE_BSD43 \-Asystem(unix) -Asystem(bsd) -Acpu(mips) -Amachine(mips)"#endif/* Assembler specs.  *//* MIPS_AS_ASM_SPEC is passed when using the MIPS assembler rather   than gas.  */#define MIPS_AS_ASM_SPEC "\%{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} \%{pipe: %e-pipe is not supported.} \%{K} %(subtarget_mips_as_asm_spec)"/* SUBTARGET_MIPS_AS_ASM_SPEC is passed when using the MIPS assembler   rather than gas.  It may be overridden by subtargets.  */#ifndef SUBTARGET_MIPS_AS_ASM_SPEC#define SUBTARGET_MIPS_AS_ASM_SPEC "%{v}"#endif/* GAS_ASM_SPEC is passed when using gas, rather than the MIPS   assembler.  */#define GAS_ASM_SPEC "%{mcpu=*} %{m4650} %{mmad:-m4650} %{m3900} %{v}"/* TARGET_ASM_SPEC is used to select either MIPS_AS_ASM_SPEC or   GAS_ASM_SPEC as the default, depending upon the value of   TARGET_DEFAULT.  */#if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GAS) != 0/* GAS */#define TARGET_ASM_SPEC "\%{mmips-as: %(mips_as_asm_spec)} \%{!mmips-as: %(gas_asm_spec)}"#else /* not GAS */#define TARGET_ASM_SPEC "\%{!mgas: %(mips_as_asm_spec)} \%{mgas: %(gas_asm_spec)}"#endif /* not GAS *//* SUBTARGET_ASM_OPTIMIZING_SPEC handles passing optimization options   to the assembler.  It may be overridden by subtargets.  */#ifndef SUBTARGET_ASM_OPTIMIZING_SPEC#define SUBTARGET_ASM_OPTIMIZING_SPEC "\%{noasmopt:-O0} \%{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}}"#endif/* SUBTARGET_ASM_DEBUGGING_SPEC handles passing debugging options to   the assembler.  It may be overridden by subtargets.  */#ifndef SUBTARGET_ASM_DEBUGGING_SPEC#define SUBTARGET_ASM_DEBUGGING_SPEC "\%{g} %{g0} %{g1} %{g2} %{g3} \%{ggdb:-g} %{ggdb0:-g0} %{ggdb1:-g1} %{ggdb2:-g2} %{ggdb3:-g3} \%{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \%{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3} \%{gcoff:-g} %{gcoff0:-g0} %{gcoff1:-g1} %{gcoff2:-g2} %{gcoff3:-g3}"#endif/* SUBTARGET_ASM_SPEC is always passed to the assembler.  It may be   overridden by subtargets.  */#ifndef SUBTARGET_ASM_SPEC#define SUBTARGET_ASM_SPEC ""#endif/* ASM_SPEC is the set of arguments to pass to the assembler.  */#define ASM_SPEC "\%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} \%(subtarget_asm_optimizing_spec) \%(subtarget_asm_debugging_spec) \%{membedded-pic} \%{mabi=32:-32}%{mabi=o32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} \%(target_asm_spec) \%(subtarget_asm_spec)"/* Specify to run a post-processor, mips-tfile after the assembler   has run to stuff the mips debug information into the object file.   This is needed because the $#!%^ MIPS assembler provides no way   of specifying such information in the assembly file.  If we are   cross compiling, disable mips-tfile unless the user specifies   -mmips-tfile.  */#ifndef ASM_FINAL_SPEC#if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GAS) != 0/* GAS */#define ASM_FINAL_SPEC "\%{mmips-as: %{!mno-mips-tfile: \	\n mips-tfile %{v*: -v} \		%{K: -I %b.o~} \		%{!K: %{save-temps: -I %b.o~}} \		%{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \		%{.s:%i} %{!.s:%g.s}}}"#else/* not GAS */#define ASM_FINAL_SPEC "\%{!mgas: %{!mno-mips-tfile: \	\n mips-tfile %{v*: -v} \		%{K: -I %b.o~} \		%{!K: %{save-temps: -I %b.o~}} \		%{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \		%{.s:%i} %{!.s:%g.s}}}"#endif#endif	/* ASM_FINAL_SPEC *//* Redefinition of libraries used.  Mips doesn't support normal   UNIX style profiling via calling _mcount.  It does offer   profiling that samples the PC, so do what we can... */#ifndef LIB_SPEC#define LIB_SPEC "%{pg:-lprof1} %{p:-lprof1} -lc"#endif/* Extra switches sometimes passed to the linker.  *//* ??? The bestGnum will never be passed to the linker, because the gcc driver  will interpret it as a -b option.  */#ifndef LINK_SPEC#define LINK_SPEC "\%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \%{bestGnum} %{shared} %{non_shared} \%(linker_endian_spec)"#endif	/* LINK_SPEC defined *//* Specs for the compiler proper *//* SUBTARGET_CC1_SPEC is passed to the compiler proper.  It may be   overridden by subtargets.  */#ifndef SUBTARGET_CC1_SPEC#define SUBTARGET_CC1_SPEC ""#endif/* CC1_SPEC is the set of arguments to pass to the compiler proper.  */#ifndef CC1_SPEC#define CC1_SPEC "\%{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \%{mips1:-mfp32 -mgp32} %{mips2:-mfp32 -mgp32}\%{mips3:%{!msingle-float:%{!m4650:-mfp64}} -mgp64} \%{mips4:%{!msingle-float:%{!m4650:-mfp64}} -mgp64} \%{mfp64:%{msingle-float:%emay not use both -mfp64 and -msingle-float}} \%{mfp64:%{m4650:%emay not use both -mfp64 and -m4650}} \%{mint64|mlong64|mlong32:-mexplicit-type-size }\%{m4650:-mcpu=r4650} \%{m3900:-mips1 -mcpu=r3900 -mfp32 -mgp32} \%{G*} %{EB:-meb} %{EL:-mel} %{EB:%{EL:%emay not use both -EB and -EL}} \%{pic-none:   -mno-half-pic} \%{pic-lib:    -mhalf-pic} \%{pic-extern: -mhalf-pic} \%{pic-calls:  -mhalf-pic} \%{save-temps: } \%(subtarget_cc1_spec) "#endif/* Preprocessor specs.  *//* SUBTARGET_CPP_SIZE_SPEC defines SIZE_TYPE and PTRDIFF_TYPE.  It may   be overridden by subtargets.  */#ifndef SUBTARGET_CPP_SIZE_SPEC#define SUBTARGET_CPP_SIZE_SPEC "\%{mlong64:%{!mips1:%{!mips2:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \%{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}"#endif/* SUBTARGET_CPP_SPEC is passed to the preprocessor.  It may be   overridden by subtargets.  */#ifndef SUBTARGET_CPP_SPEC#define SUBTARGET_CPP_SPEC ""#endif/* If we're using 64bit longs, then we have to define __LONG_MAX__   correctly.  Similarly for 64bit ints and __INT_MAX__.  */#ifndef LONG_MAX_SPEC#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_LONG64)#define LONG_MAX_SPEC "%{!mlong32:-D__LONG_MAX__=9223372036854775807L}"#else#define LONG_MAX_SPEC "%{mlong64:-D__LONG_MAX__=9223372036854775807L}"#endif#endif/* CPP_SPEC is the set of arguments to pass to the preprocessor.  */#ifndef CPP_SPEC#define CPP_SPEC "\%{.cc:	-D__LANGUAGE_C_PLUS_PLUS -D_LANGUAGE_C_PLUS_PLUS} \%{.cxx:	-D__LANGUAGE_C_PLUS_PLUS -D_LANGUAGE_C_PLUS_PLUS} \%{.C:	-D__LANGUAGE_C_PLUS_PLUS -D_LANGUAGE_C_PLUS_PLUS} \%{.m:	-D__LANGUAGE_OBJECTIVE_C -D_LANGUAGE_OBJECTIVE_C -D__LANGUAGE_C -D_LANGUAGE_C} \%{.S:	-D__LANGUAGE_ASSEMBLY -D_LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \%{.s:	-D__LANGUAGE_ASSEMBLY -D_LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \%{!.S: %{!.s: %{!.cc: %{!.cxx: %{!.C: %{!.m: -D__LANGUAGE_C -D_LANGUAGE_C %{!ansi:-DLANGUAGE_C}}}}}}} \%(subtarget_cpp_size_spec) \%{mips3:-U__mips -D__mips=3 -D__mips64} \%{mips4:-U__mips -D__mips=4 -D__mips64} \%{mgp32:-U__mips64} %{mgp64:-D__mips64} \%{msingle-float:%{!msoft-float:-D__mips_single_float}} \%{m4650:%{!msoft-float:-D__mips_single_float}} \%{msoft-float:-D__mips_soft_float} \%{mabi=eabi:-D__mips_eabi} \%{mips16:%{!mno-mips16:-D__mips16}} \%{EB:-UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__ -D_MIPSEB -D__MIPSEB -D__MIPSEB__ %{!ansi:-DMIPSEB}} \%{EL:-UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__ -D_MIPSEL -D__MIPSEL -D__MIPSEL__ %{!ansi:-DMIPSEL}} \%(long_max_spec) \%(subtarget_cpp_spec) "#endif/* This macro defines names of additional specifications to put in the specs   that can be used in various specifications like CC1_SPEC.  Its definition   is an initializer with a subgrouping for each command option.   Each subgrouping contains a string constant, that defines the   specification name, and a string constant that used by the GNU CC driver   program.   Do not define this macro if it does not need to do anything.  */#define EXTRA_SPECS							\  { "subtarget_cc1_spec", SUBTARGET_CC1_SPEC },				\  { "subtarget_cpp_spec", SUBTARGET_CPP_SPEC },				\  { "subtarget_cpp_size_spec", SUBTARGET_CPP_SIZE_SPEC },		\  { "long_max_spec", LONG_MAX_SPEC },					\  { "mips_as_asm_spec", MIPS_AS_ASM_SPEC },				\  { "gas_asm_spec", GAS_ASM_SPEC },					\  { "target_asm_spec", TARGET_ASM_SPEC },				\  { "subtarget_mips_as_asm_spec", SUBTARGET_MIPS_AS_ASM_SPEC }, 	\  { "subtarget_asm_optimizing_spec", SUBTARGET_ASM_OPTIMIZING_SPEC },	\  { "subtarget_asm_debugging_spec", SUBTARGET_ASM_DEBUGGING_SPEC },	\  { "subtarget_asm_spec", SUBTARGET_ASM_SPEC },				\  { "linker_endian_spec", LINKER_ENDIAN_SPEC },				\  SUBTARGET_EXTRA_SPECS#ifndef SUBTARGET_EXTRA_SPECS#define SUBTARGET_EXTRA_SPECS#endif/* If defined, this macro is an additional prefix to try after   `STANDARD_EXEC_PREFIX'.  */#ifndef MD_EXEC_PREFIX#define MD_EXEC_PREFIX "/usr/lib/cmplrs/cc/"#endif#ifndef MD_STARTFILE_PREFIX#define MD_STARTFILE_PREFIX "/usr/lib/cmplrs/cc/"#endif/* Print subsidiary information on the compiler version in use.  */#define MIPS_VERSION "[AL 1.1, MM 40]"#ifndef MACHINE_TYPE#define MACHINE_TYPE "BSD Mips"#endif#ifndef TARGET_VERSION_INTERNAL#define TARGET_VERSION_INTERNAL(STREAM)					\  fprintf (STREAM, " %s %s", MIPS_VERSION, MACHINE_TYPE)#endif

⌨️ 快捷键说明

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