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

📄 crx.h

📁 linux下编程用 编译软件
💻 H
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************/#define STACK_GROWS_DOWNWARD#define STARTING_FRAME_OFFSET  0#define	STACK_POINTER_REGNUM	15#define	FRAME_POINTER_REGNUM	13#define	ARG_POINTER_REGNUM	12#define STATIC_CHAIN_REGNUM	1#define	RETURN_ADDRESS_REGNUM	14#define FIRST_PARM_OFFSET(FNDECL)  0#define FRAME_POINTER_REQUIRED (current_function_calls_alloca)#define ELIMINABLE_REGS \  { \    { ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM}, \    { ARG_POINTER_REGNUM,   FRAME_POINTER_REGNUM}, \    { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}  \  }#define CAN_ELIMINATE(FROM, TO) \ ((TO) == STACK_POINTER_REGNUM ? ! frame_pointer_needed : 1)#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)			\  do {									\    (OFFSET) = crx_initial_elimination_offset ((FROM), (TO));		\  } while (0)/*****************************************************************************//* PASSING FUNCTION ARGUMENTS						     *//*****************************************************************************/#define ACCUMULATE_OUTGOING_ARGS (TARGET_NO_PUSH_ARGS)#define PUSH_ARGS (!TARGET_NO_PUSH_ARGS)#define PUSH_ROUNDING(BYTES) (((BYTES) + 3) & ~3)#define RETURN_POPS_ARGS(FNDECL, FUNTYPE, SIZE)   0#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \  ((rtx) crx_function_arg(&(CUM), (MODE), (TYPE), (NAMED)))#ifndef CUMULATIVE_ARGSstruct cumulative_args{  int ints;};#define CUMULATIVE_ARGS struct cumulative_args#endif/* On the CRX architecture, Varargs routines should receive their parameters on * the stack.  */#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \  crx_init_cumulative_args(&(CUM), (FNTYPE), (LIBNAME))#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \  crx_function_arg_advance(&(CUM), (MODE), (TYPE), (NAMED))#define FUNCTION_ARG_REGNO_P(REGNO)  crx_function_arg_regno_p(REGNO)/*****************************************************************************//* RETURNING FUNCTION VALUE						     *//*****************************************************************************//* On the CRX, the return value is in R0 */#define FUNCTION_VALUE(VALTYPE, FUNC) \	gen_rtx_REG(TYPE_MODE (VALTYPE), 0)#define LIBCALL_VALUE(MODE)	gen_rtx_REG (MODE, 0)#define FUNCTION_VALUE_REGNO_P(N)	((N) == 0)#define CRX_STRUCT_VALUE_REGNUM  0/*****************************************************************************//* GENERATING CODE FOR PROFILING - NOT IMPLEMENTED			     *//*****************************************************************************/#undef  FUNCTION_PROFILER#define FUNCTION_PROFILER(STREAM, LABELNO)	\{						\    sorry ("Profiler support for CRX");		\}	/*****************************************************************************//* TRAMPOLINES FOR NESTED FUNCTIONS - NOT SUPPORTED      		     *//*****************************************************************************/#define TRAMPOLINE_SIZE	32#define INITIALIZE_TRAMPOLINE(addr, fnaddr, static_chain)	\{								\    sorry ("Trampoline support for CRX");			\}/*****************************************************************************//* ADDRESSING MODES							     *//*****************************************************************************/#define CONSTANT_ADDRESS_P(X)						\  (GET_CODE (X) == LABEL_REF						\   || GET_CODE (X) == SYMBOL_REF					\   || GET_CODE (X) == CONST						\   || GET_CODE (X) == CONST_INT)#define MAX_REGS_PER_ADDRESS 2#define HAVE_POST_INCREMENT  1#define HAVE_POST_DECREMENT  1#define HAVE_POST_MODIFY_DISP 1#define HAVE_POST_MODIFY_REG 0#ifdef REG_OK_STRICT#define REG_OK_FOR_BASE_P(X)	REGNO_OK_FOR_BASE_P (REGNO (X))#define REG_OK_FOR_INDEX_P(X)	REGNO_OK_FOR_INDEX_P (REGNO (X))#else#define REG_OK_FOR_BASE_P(X)	1#define REG_OK_FOR_INDEX_P(X)	1#endif /* REG_OK_STRICT */#ifdef REG_OK_STRICT#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL)			\{									\  if (crx_legitimate_address_p (MODE, X, 1))				\      goto LABEL;							\}#else#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL)			\{									\  if (crx_legitimate_address_p (MODE, X, 0))				\      goto LABEL;							\}#endif /* REG_OK_STRICT */#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)			\{									\  if (GET_CODE (ADDR) == POST_INC || GET_CODE (ADDR) == POST_DEC)	\    goto LABEL;								\}#define LEGITIMATE_CONSTANT_P(X)  1/*****************************************************************************//* CONDITION CODE STATUS						     *//*****************************************************************************//*****************************************************************************//* RELATIVE COSTS OF OPERATIONS						     *//*****************************************************************************/#define MEMORY_MOVE_COST(MODE, CLASS, IN) crx_memory_move_cost(MODE, CLASS, IN)/* Moving to processor register flushes pipeline - thus asymmetric */#define REGISTER_MOVE_COST(MODE, FROM, TO) ((TO != GENERAL_REGS) ? 8 : 2)/* Assume best case (branch predicted) */#define BRANCH_COST 2#define SLOW_BYTE_ACCESS  1/*****************************************************************************//* DIVIDING THE OUTPUT INTO SECTIONS					     *//*****************************************************************************/#define TEXT_SECTION_ASM_OP	"\t.section\t.text"#define DATA_SECTION_ASM_OP	"\t.section\t.data"#define BSS_SECTION_ASM_OP	"\t.section\t.bss"/*****************************************************************************//* POSITION INDEPENDENT CODE						     *//*****************************************************************************/#define PIC_OFFSET_TABLE_REGNUM  12#define LEGITIMATE_PIC_OPERAND_P(X)  1/*****************************************************************************//* ASSEMBLER FORMAT							     *//*****************************************************************************/#define GLOBAL_ASM_OP "\t.globl\t"#undef	USER_LABEL_PREFIX#define	USER_LABEL_PREFIX "_"#undef	ASM_OUTPUT_LABELREF#define ASM_OUTPUT_LABELREF(STREAM, NAME) \  asm_fprintf (STREAM, "%U%s", (*targetm.strip_name_encoding) (NAME));#undef	ASM_APP_ON#define ASM_APP_ON   "#APP\n"#undef	ASM_APP_OFF#define ASM_APP_OFF  "#NO_APP\n"/*****************************************************************************//* INSTRUCTION OUTPUT							     *//*****************************************************************************/#define REGISTER_NAMES \  { \    "r0",  "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7", \    "r8",  "r9",  "r10", "r11", "r12", "r13", "ra",  "sp", \    "lo",  "hi",  "cc" \  }#define PRINT_OPERAND(STREAM, X, CODE) \  crx_print_operand(STREAM, X, CODE)#define PRINT_OPERAND_ADDRESS(STREAM, ADDR) \  crx_print_operand_address(STREAM, ADDR)/*****************************************************************************//* OUTPUT OF DISPATCH TABLES						     *//*****************************************************************************/#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \  asm_fprintf ((STREAM), "\t.long\t.L%d\n", (VALUE))/*****************************************************************************//* ALIGNMENT IN ASSEMBLER FILE						     *//*****************************************************************************/#define ASM_OUTPUT_ALIGN(STREAM, POWER) \  asm_fprintf ((STREAM), "\t.align\t%d\n", 1 << (POWER))/*****************************************************************************//* MISCELLANEOUS PARAMETERS						     *//*****************************************************************************/#define CASE_VECTOR_MODE  Pmode#define MOVE_MAX 4#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC)  1#define STORE_FLAG_VALUE  1#define Pmode		SImode#define FUNCTION_MODE	QImode/*****************************************************************************//* EXTERNAL DECLARATIONS FOR VARIABLES DEFINED IN CRX.C			     *//*****************************************************************************/extern rtx crx_compare_op0;    /* operand 0 for comparisons */extern rtx crx_compare_op1;    /* operand 1 for comparisons */#endif /* ! GCC_CRX_H */

⌨️ 快捷键说明

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