������ ����� ����������

6. Target Description Macros

� ���������� � ����� 'MACHINE.md', �������� �������� �������� ���� �-���������, �������� ����������� ���� ��� 'MACHINE.h'. ���� ���� ��������� ���������� �������������� ������������, ������� �������� ���������� ������������ ������� ������, �� ������������� � ����� ����� `.md'. ���� 'tm.h' ������ ���� ������ � 'MACHINE.h'. ���� ��������� 'config.h' �������� 'tm.h' � ����������� �������� ������ ����������� ��� �� �������� 'config.h'.

6.1 ���������� ��������� ���������� " gcc "

�� ������ ��������� ��������� ����������.

" SWITCH_TAKES_ARG (CHAR) "

��������� C, ������� ����������, ����� �� ����� " -CHAR " ���������. �������� ������ ���� ������ ���������� �����, � �����, ���� ����� ���������.

�� ��������� ��� ������������ ������������, ����� ��������� ������������ ����������� �����. �� �� ������ ���������� ��, ���� �� �� ����������� ��������� �������������� �����, ������� ����� ���������.

" WORD_SWITCH_TAKES_ARG (NAME) "

��������� C, ������� ����������, ����� �� ����� " -NAME " ���������. �������� ������ ���� ������ ���������� �����, � �����, ���� ����� ���������. ��� ������������ ������, ��� " SWITCH_TAKES_ARG ", ������������ ��� ��������������� ���� �����.

�� ���������, ��� ������������ ���������� ��� " DEFAULT_WORD_SWITCH_TAKES_ARG ", ������� ��������� ������������ ����������� �����. �� �� ������ �� ���������� " WORD_SWITCH_TAKES_ARG ", ���� �� �� ����������� ��������� �������������� �����, ������� ����� ���������. ������ ��������������� ������ �������� " DEFAULT_WORD_SWITCH_TAKES_ARG " � ����� ��������� �������������� �����.

" SWITCHES_NEED_SPACES "

��������� ��������� C, ������� �������� ��������, ���� ������������ ��������� ������ ����� ������ " -L " ��� " -o " � �� ����������.

���� ��� ������������ �� ����������, �������� �� ��������� - 0.

" CPP_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC ����� ��� �������� CPP. ��� ����� ����� ���������, ��� ������������� �����, ������� �� ������ GNU CC, � ����� GNU CC ��� �������� CPP.

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" NO_BUILTIN_SIZE_TYPE "

���� ��� ������������ ����������, ������������ �� ����� ���������� ���������� ������������ " __SIZE_TYPE__ ". ������������ " __SIZE_TYPE__ " ����� ���������� ������ ����� " CPP_SPEC ".

��� ������ ���� ����������, ���� " SIZE_TYPE " ������� �� �������-��������� ������, ������� �� �������� ��� �������������. �����, ��� �� ������ ���� ����������.

" NO_BUILTIN_PTRDIFF_TYPE "

���� ��� ������������ ����������, ������������ �� ����� ���������� ���������� ������������ " __PTRDIFF_TYPE__ ". ������������ " __PTRDIFF_TYPE__ " ����� ���������� ������ ����� " CPP_SPEC ".

��� ������ ���� ����������, ���� " PTRDIFF_TYPE " ������� �� �������-��������� ������, ������� �� �������� ��� �������������. �����, ��� �� ������ ���� ����������.

" SIGNED_CHAR_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC ����� ��� �������� CPP. �� ��������� ��� ������������ ����������, ����� �������� ����� " -D__CHAR_UNSIGNED__ " CPP, ���� " char " ����� �������������� " cc1 " ��� " unsigned char ".

�� ����������� ��� ������������, ���� ��� �� ����� ����������� ����������� �� ���������.

" CC1_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC ����� ��� �������� " cc1 ". ��� ����� ����� ����������, ��� ������������� �����, ������� �� ������ GNU CC, � ����� ��� GNU CC ��� �������� " cc1 ".

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" CC1PLUS_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC ����� ��� �������� " cc1plus ". ��� ����� ����� ����������, ��� ������������� �����, ������� �� ������ GNU CC, � ����� ��� GNU CC ��� �������� " cc1plus ".

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" ASM_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC ����� ��� �������� ����������. ��� ����� ����� ����������, ��� ������������� ������� �� ������ GNU CC, � ����� ��� GNU CC ��� �������� ����������. ��� ������� ��. ���� " sun3.h ".

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" ASM_FINAL_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC, ��� ��������� ���������, ������� ���������� ������ ����� ����������� ����������. ������ ��� �� �������� �����������. ��� ������� ��. ���� " mips.h ".

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" LINK_SPEC "

��������� ��������� C, ������� �������� ��������� �������� GNU CC ����� ��� �������� ������������. ��� ����� ����� ����������, ��� ������������� �����, ������� �� ������ GNU CC, � ����� ��� GNU CC ��� �������� ������������.

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" LIB_SPEC "

������ ��������� ��������� C, ������������ ������� " LINK_SPEC ". �������� ����������� � ���, ��� " LIB_SPEC " ������������ � ����� �������, ���������� ������������.

���� ��� ������������ �� ����������, �������� �� ��������� - ��, ��� �������, ��� �������� �������� C ���������� �� �������� �����. ��. " gcc.c ".

" LIBGCC_SPEC "

������ ��������� ��������� C, ������� �������� ��������� �������� GNU CC, ��� � ����� �������� ������ �� " libgcc.a " � ��������� ������ ������������. ��� ��������� ���������� � ��, � ����� �������� " LIB_SPEC ".

���� ��� ������������ �� ����������, ������� GNU CC �� ��������� �������� ������ " -lgcc " ������������, ���� ����� " -shared " �� ����������.

" STARTFILE_SPEC "

������ ��������� ��������� C, ������������ ������� " LINK_SPEC ". �������� ����������� � ���, ��� " STARTFILE_SPEC " ������������ � ����� ������ �������, ���������� ������������.

���� ��� ������������ �� ����������, �� ��������� ����������� ���� ������� C ����������� �� �������� �����. ��. " gcc.c ".

" ENDFILE_SPEC "

������ ��������� ��������� C, ������������ ������� " LINK_SPEC ". �������� ����������� � ���, ��� " ENDFILE_SPEC " ������������ � ����� ����� �������, ���������� ������������.

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

" LINK_LIBGCC_SPECIAL "

���������� ��� ������������, ���� ��������� �������� ���� ������ ������ ���������� " libgcc.a " � �� ������ ���������� ����� " -L " ������������. ���� �� �� ����������� ��� ������������, ��������� �������� �������� �������� " -lgcc ", ����� ����������� �������� ����� � �������� ��� ����� " -L ".

" LINK_LIBGCC_SPECIAL_1 "

���������� ��� ������������, ���� ��������� �������� ���� ������ ������ ���������� " libgcc.a ". ���� �� �� ����������� ��� ������������, ��������� �������� �������� �������� " -lgcc ", ����� ����������� �������� �����. ��� ������������ ������� " LINK_LIBGCC_SPECIAL ", �� ����������� ����, ��� ��� �� ������������ �� " -L " �����.

" MULTILIB_DEFAULTS "

���������� ��� ������������ ��� ��������� C ��� �������������� ������� �����, ����� �������� ��������� ��������, ����� ����� �������� ���������� �� ��������� � ������ �������� �, ����� �������, �� ��������� � ����������� ��������� ��� ������������� " MULTILIB_OPTIONS ".

�� ����������� ��� ������������, ���� " MULTILIB_OPTIONS " �� ��������� �� ��������� makefile �������� ��� ���� �� ���� �� �����, ������������� � " MULTILIB_OPTIONS ", �� ����� �������� �� ���������. * ��.: �������� ��������::.

" RELATIVE_PREFIX_NOT_LINKDIR "

���������� ��� ������������, ����� �������� " gcc " ��� �� ������ ������������� ������� " -B " � ����� " -L " ������������, ���� ������� ��������� ���������� ��� �����.

" STANDARD_EXEC_PREFIX "

���������� ��� ������������ ��� ��������� ��������� C, ���� �� ������ �������� ����������� ����� " /usr/local/lib/gcc-lib/ " ��� ������� �� ��������� ��� ������ ����������� ������ �����������.

" MD_EXEC_PREFIX "

���� ����������, ��� ������������ - �������������� ������� ����� " STANDARD_EXEC_PREFIX ". " MD_EXEC_PREFIX " �� ������, ���� ������������ ����� " -b " ��� ���������� �������� ��� ������������.

" STANDARD_STARTFILE_PREFIX "

���������� ��� ������������ ��� ��������� ��������� C, ���� �� ������ �������� ����������� ����� " /usr/local/lib/ " ��� ������� �� ���������, ����� ��� ������ ������ ������� ���� " crt0.o ".

" MD_STARTFILE_PREFIX "

���� ����������, ��� ������������ ������������ �������������� ������� ����� ����������� ���������. " MD_EXEC_PREFIX " �� ������, ���� ������������ ����� " -b " ��� ���������� �������� ��� ������������.

" MD_STARTFILE_PREFIX_1 "

���� ����������, ��� ������������ ������������ ��� ���� ������� ����� ����������� ���������. ��� �� ������, ���� ������������ ����� " -b " ��� ���������� �������� ��� ������������ (�����-����������).

" INIT_ENVIRONMENT "

���������� ��� ������������ ��� ��������� ��������� C, ���� �� ������ ���������� ���������� ����� ��� ��������, ���������� ���������, �����, ��� ��������� � ���������. ������� �������� �������� ���� ������������ " putenv ", ����� ���������������� ����������� ���������� �����.

" LOCAL_INCLUDE_DIR "

���������� ��� ������������ ��� ��������� ��������� C, ���� �� ������ �������� ����������� ����� " /usr/local/include " ��� ������� �� ��������� ��� ������ ��������� ������ ���������. " LOCAL_INCLUDE_DIR " ���� ����� " SYSTEM_INCLUDE_DIR " � ������� ������.

������������ ����������� �� ���������� ��� ������������ � �� ���� " /usr/local/include " ��� ��� ������.

" SYSTEM_INCLUDE_DIR "

���������� ��� ������������ ��� ��������� ��������� C, ���� �� ������ ������� ���� ������� ��� ������ ������ ��������� ����� ����������� ���������. " SYSTEM_INCLUDE_DIR " ���� ����� " STANDARD_INCLUDE_DIR " � ������� ������.

������������ ����������� �� ���������� ��� ������������ � �� ���� ��������� �������.

" STANDARD_INCLUDE_DIR "

���������� ��� ������������ ��� ��������� ��������� C, ���� �� ������ �������� ����������� ����� " /usr/include " ��� ������� �� ��������� ��� ������ ������ ���������.

������������ ����������� �� ���������� ��� ������������ � �� ���� " /usr/include " ��� ��� ������.

" INCLUDE_DEFAULTS "

���������� ��� ������������, ���� �� ������ ��������� �������� �������� �� ��������� ���� ������ ���������� ������. �������� �� ��������� ���� ������ �������� " GCC_INCLUDE_DIR ", " LOCAL_INCLUDE_DIR ", " SYSTEM_INCLUDE_DIR ", " GPLUSPLUS_INCLUDE_DIR ", � " STANDARD_INCLUDE_DIR ". ����� ����, " GPLUSPLUS_INCLUDE_DIR " � " GCC_INCLUDE_DIR " ������������ ������������� " Makefile " � ��������� ������� ������� ������ ��� GCC. ������� " GPLUSPLUS_INCLUDE_DIR " ������������ ������ ��� C++ ��������.

����������� ������ ���� ��������������� ��� ������� ��������. ������ ������� ������� ������ ����� ��� ��������: ��� �������� ( ��������� ���������) � ����; ��� C ++ - ������ ��������. ������ ������ ������������� ������� ���������. ���, ��������, �����������, ������������ ��� VMS:

           #define INCLUDE_DEFAULTS \
           {                                       \
             { "GNU_GXX_INCLUDE:", 1},             \
             { "GNU_CC_INCLUDE:", 0},              \
             { "SYS$SYSROOT:[SYSLIB.]", 0},        \
             { ".", 0},                            \
             { 0, 0}                               \
           }
��� ������� ��������� ��� ����������� ������:
  1. ����� ��������, ������������ ������������� � " -B ".
  2. ���������� " GCC_EXEC_PREFIX ", ���� ����.
  3. ��������, ��������� � ���������� ����� " COMPILER_PATH ".
  4. ������������ " STANDARD_EXEC_PREFIX ".
  5. " /usr/lib/gcc/ ".
  6. ������������ " MD_EXEC_PREFIX ", ���� ����.
��� ������� ��������� ��� ��������� ������:
  1. ����� ��������, ������������ ������������� � " -B ".
  2. ��������� ���������� " GCC_EXEC_PREFIX ", ���� ����.
  3. ��������, ��������� � ���������� ����� " LIBRARY_PATH " (������ "�������", �����-����������� �� ���������� ��).
  4. ������������ " STANDARD_EXEC_PREFIX ".
  5. " /usr/lib/gcc/ ".
  6. ������������ " MD_EXEC_PREFIX ", ���� ����.
  7. ������������ " MD_STARTFILE_PREFIX ", ���� ����.
  8. ������������ " STANDARD_STARTFILE_PREFIX ".
  9. " /lib/ ".
  10. " /usr/lib/ ".

6.2 ������� ������������ ������� ����������

��� ������� ������������ ������� ����������.

" CPP_PREDEFINES "

���������� �� ��������� ����������, ���������� " -D " ����� ��� ����������� ���������������� �����������, ������� �������������� ��� ������ � ��� �������. ��� ������������ ����� �����������������, ���� �� ������� ����� " -ansi ".

����� ����, ������������� ������������ ����� �����������, ��� ����� ���������� ����������� " __ " � ������ � � �����. ��� " __ " ������������ ����������� ANSI ����������, ��� ��� ��� �������������� ���������� �� ����, ������� �� " -ansi ".

��������, �� Sun ����� ������������ ��������� ��������:

           " -Dmc68000 -Dsun -Dunix "
��������� ������ ���������� ������������ " __ mc68000 __ ", " __ sun __ " � " __ unix __ " � ����� ������, � ������������ " mc68000 ", " sun " � " unix ", ���� �� ������� " -ansi ".

" extern int target_flags; "

��� ���������� ������ ��������������.

" TARGET_ ... "

���� ����� ����������� ������������ ��� ����, ����� ��������� ���������� ������ ����������� �������� ��� ��������� ������������� ������������ ������������ ������� ������. ��������, ���� �������� �������� ������ � ��� 68000, � ��� 68020; �������� ������� �������� �����������, ������������ �� ��� �������, ��������� ������ �� 68020 ��� ���. ���� �������� ������� �������� ����������� ������������ " TARGET_68020 " ������� ��������� ��� � " target_flags ".

���������� ������������ " TARGET_FEATURENAME " ��� ������ ����� �����. �� ����������� ������ ��������� ��� � " target_flags "; ��������:

           *define TARGET_68020 (target_flags & 1)
����� �� ����, ��� ������������ ��� ������������, �������� �������� ��������� �������� ������. ��������, ��� ����� " TARGET_68020 " ���������� � ����� ��������� �������� 68000, " m68k.md ". ������ ����� �� ������������� - ��� ����������� ������ ����������� � �����" MACHINE.h ".

" TARGET_SWITCHES "

��� ������������ ���������� ����� ����� �������, ����� ������������� � ������� ���� � " target_flags ". ����������� - ������������� � ��������������� ��� ������ ����� �������.

������ �������������� �������� ��������� ���������, ������� ���������� ��� �����, � �����, ������� �������� ���� ��� ��������� � " target_flags ". ������������� ����� ��������� �� ������� �����; ��������������� ��� ����� ���������, ����� ���� �������. ����������� ��� ����� ���������� ����������� " -m " � ���������� �����.

���� �� �������������� ������ ����� ������ ������. ����� � ���� ����������� - �������� �� ��������� ��� " target_flags ". ����� �������� ����� ���������� � ���� ���������.

��� ������, ������� ���������� " -m68000 " � " -m68020 " � ���������������� ���������� � �������� ��������� ��� �������� �� ���������:

           #define TARGET_SWITCHES \
             { { "68020", 1},      \
               { "68000", -1},     \
               { "", 1}}
" TARGET_OPTIONS "

��� ������������ ���������� " TARGET_SWITCHES ", �� ���������� ����� ����� �������, ������� ����� ��������. �� ����������� - ������������� � ��������������� ��� ������ ����� �������.

������ �������������� �������� ��������� ���������, ������� ���������� ������������� ����� ����� ����� � ����� ����������. ���������� ���� " char * " ��������������� �� ���������� ����� ������ �����, ���� ������������� ����� �������������. ����������� ��� ����� ���������� ����������� " -m " � ���������� �����.

��� ������, ������� ���������� " -mshort-data-NUMBER ". ���� ������ ����� - " -mshort-data-512 ", ���������� " m88k_short_data " ����� ����������� �� ������ " "512" ".

           extern char *m88k_short_data;
           #define TARGET_OPTIONS \
            { { "short-data-", &m88k_short_data } }
" TARGET_VERSION "

��� ������������ - �������� C, ��������� �� " stderr " ������, ����������� ���������� ����� ��������� ��������. ������ �������� �������� ������ ���������� " TARGET_VERSION ". ��������:

           #ifdef MOTOROLA
           #define TARGET_VERSION \
             fprintf (stderr, " (68k, Motorola syntax)");
           #else
           #define TARGET_VERSION \
             fprintf (stderr, " (68k, MIT syntax)");
           #endif
" OVERRIDE_OPTIONS "

������ ��������� ���������� ����� ������� �� ����� ������ �� ���������� ������� ������. �� ������ ���������� ������������ " OVERRIDE_OPTIONS ", ����� ������� ��� �� ��������. ��� ������������, ���� ��� ����������, ����������� ������ ������� - ����� ����� ����, ��� ��� ����� ������� ����� ����������������.

�� ����������� ��� ������������, ����� �������� ��������� �������������� ����������� ��� " -O ". ��� ����� ���� " OPTIMIZATION_OPTIONS ".

" OPTIMIZATION_OPTIONS (LEVEL) "

��������� ������ ����� ������ �������� ��, ����� ����������� ����������� ��� ��������� ������� �����������. ��� ������������, ���� ��� ����������, ����������� ������� - ����� ����� ����, ��� ������� ����������� ��������� � ����� ���, ��� ������� ����� ������� ����������������. ����� �������� � ���� ������������ ������������ �� ��������� ��� ������ ����� ��������� ������.

LEVEL - �������� ������� �����������; 2, ���� ������� " -O2 ", 1, ���� ������� " -O " , � 0, ���� ������ �� �������.

�� �� ������ ������������ ��� ������������, ��� ��������� �����, ������� �� �������� �������-��������������. ��� ������ ��������� �������� �� ������ ����������� �� ���� ������������� �������. ����������� ��� ������������ ��� ���������� �������-������������� �����������.

* �� ����������� " write_symbols " � ���� ������������! * ��������������, ��� ���������� ����� �� �������� ��������������� ���.

" CAN_DEBUG_WITHOUT_FP "

���������� ��� ������������, ���� ������� ����� ����������� ���� ��� ��������� �����. ���� ��� ������������ ����������, GNU CC ����� �������� ����� " -fomit-frame-pointer " ������ ���, ����� ������� " -O ".

6.3 ������������� ������

�������� ��������, ��� ����������� ����������� � ���� �������, ������� �������� ��������� ��� ��������������, ����������� � �����, �� ������� ���� �����������. ��� ��� ����� ���� ��������� C, ������� ��������� �� ����������� ����������, ����� ��� "target_flags ". ��.: ������� ������� ����������::.

" BITS_BIG_ENDIAN "

������� ����� ������� �������� 1, ���� ������� ��� � ����� ����� ���������� �����; ����� ������� ��� �������� 0. ��� ��������, ��� ��������� ������� ����������� ���� �� ��������. ���� ������ �� ����� ��������� �������, �� �������� ����� ������� �� ������ ����. ���� ������ �� ������ ���� ����������.

���� ������ �� ������������ �� ������ �������� ����� ��������, ������� ��� �������; ���� ��������� " BYTES_BIG_ENDIAN ".

" BYTES_BIG_ENDIAN "

������� ����� ������� �������� 1, ���� ������� ���� � ����� ����� ������� �����. ���� ������ �� ������ ���� ����������.

" WORDS_BIG_ENDIAN "

������� ����� ������� �������� 1 ���� � ������� �� ���������� ���� ������� ����� ����� ���������� �����. ��� ����������� � � ������� ������, � � ���������; GNU CC ������ �������,��� ������� ���� � ������ ����� ��, ��� � � ���������. ���� ������ �� ������ ���� ����������.

" LIBGCC2_WORDS_BIG_ENDIAN "

���������� ��� ������������, ���� WORDS_BIG_ENDIAN - �� ���������. ��� ������ ���� ���������� �������� � ��� �� ����� ���������, ��� � WORDS_BIG_ENDIAN, ������� ����� �������������� ������ ��� ���������� libgcc2.c. ������ �������� ���������������, ����������� �� ������������ �������������.

" FLOAT_WORDS_BIG_ENDIAN "

������� ����� ������� �������� 1, ���� ����� � ��������� ������ " DFmode ", " XFmode " ��� " TFmode " ����������� � ������ �� ������, ���������� �������� ������ �� ����������� ������; ����� ������� ��� �������� 0. ���� ������ �� ������ ���� ����������.

�� �� ������ ���������� ���� ������, ���� ������������ ����� ��, ��� ��� ����� ����� �� ���������� ����.

" BITS_PER_UNIT "

������� ����� ������� ��������, ������ ����� ����� � ����������� ���������� ������ ������ (�����); ������ 8.

" BITS_PER_WORD "

����� ����� � �����; ������ 32.

" MAX_BITS_PER_WORD "

������������ ����� ����� � �����. ���� ��� ������������, �������� �� ��������� - " BITS_PER_WORD ". �����, ��� - ���������, ������ ����������� ��������, ������� ����� ����� " BITS_PER_WORD " �� ����� ����������.

" UNITS_PER_WORD "

����� ������ � �����; ������ 4.

" MIN_UNITS_PER_WORD "

����������� ����� ������ � �����. ���� ��� ������������, �������� �� ��������� - " UNITS_PER_WORD ". �����, ��� - ���������, ������ ����������� ��������, ������� ����� ����� " UNITS_PER_WORD " �� ����� ����������.

" POINTER_SIZE "

����� ��������� � �����. �� �� ������ ��������� ��������, �������, ��� ����� " Pmode ". ���� ��� �� ����� ������ " Pmode ", �� ������ ���������� " POINTERS_EXTEND_UNSIGNED ".

" POINTERS_EXTEND_UNSIGNED "

��������� C, ��� �������� ������� �� ����, ���� ���������, ������� ������ ���� ��������� �� ����� " POINTER_SIZE " �� ����� " Pmode ", ������� ��������� ������, � ����, ���� �� ������� ��������� �����.

�� �� ������ ���������� ��� ������������, ���� " POINTER_SIZE " ����� ����� " Pmode ".

" PROMOTE_MODE (M, UNSIGNEDP, TYPE) "

������������ ��� ����������� M � UNSIGNEDP, ����� ������, ��� ��� - TYPE � ������� ����� ��������� ��� � ����������, ������ ���� �������� � ��������. ��� ������������ ���������� ������ �����, ����� TYPE - ��������� ���.

�� ����������� RISC �����, ������� ����� �������� ��� ����������� ������ ������� ����������, ���������� ��� ������������, ����� ���������� M � " word_mode ", ���� M - ������������� ���, ����� �����, ��� " BITS_PER_WORD ". � ����������� ������� ����������� ������ ������ ������������� ����, ������ ��� ������� �������� ������� �������� � ��������� ������ ������ ������, ��� ��� �� ����� ����� ��������.

��� ����������� ����� ���������������� �� �������� UNSIGNEDP. ������ ��������� ������ ����� �������, ������� ��������������� ������������ ��������� ��� ��������, ��� � ����������� ����. ��������, �� DEC Alpha 32-������ ������� �������� �� ������ � 32-������ ������� �������� ����������� ������ �� 64 ���. �� ����� ������� �������������� UNSIGNEDP � ����������� �� ����, ����� ��� ���������� ����� ����������.

�� ����������� ��� ������������, ���� ��� �� ������ �������� M.

" PROMOTE_FUNCTION_ARGS "

���������� ��� ������������, ���� �����������, ��������� " PROMOTE_MODE ", ������ ���� ����� ������� ��� ��������� ���������� �������.

" PROMOTE_FUNCTION_RETURN "

���������� ��� ������������, ���� �����������, ��������� " PROMOTE_MODE ", ������ ���� ����� ������� ��� ������������ �������� �������.

���� ��� ������������ ����������, " FUNCTION_VALUE " ������ ��������� �� �� ����� �����������, ��� � ��������� " PROMOTE_MODE ".

" PROMOTE_FOR_CALL_ONLY "

���������� ��� ������������, ���� �����������, ��������� " PROMOTE_MODE " ������ ���� ��������� *������* ��� ��������� ���������� ������� ��� ������������ �������� ��������, ��� ������� " PROMOTE_FUNCTION_ARGS " � " PROMOTE_FUNCTION_RETURN ", ��������������.

" PARM_BOUNDARY "

���������� ������������, ��������� ��� ���������� ������� � �����, � �����. ��� ��������� ����� �������� �� ������� ���� ��� ������������ ���������� �� ���� ������. �� ����������� ����� ��� ��������� � �������� ������ �����.

" STACK_BOUNDARY "

���������� ��� ������������, ���� �� ������ ��������� ��������� ������������ ��� ��������� �����. ����������� - ��������� C ��� ��������� ������������ (���������� � �����).

���� " PUSH_ROUNDING " �� ����������, ���� ����� ������ ������������� �� ��������� �������. ���� " PUSH_ROUNDING " ���������� � ���������� ����� ������� ������������, ��� " STACK_BOUNDARY ", ������������ ����� ���� �������� �� �������� ����� ��� ������ ���������� � ����.

" FUNCTION_BOUNDARY "

������������, ��������� ��� ����� ����� � �������, � �����.

" BIGGEST_ALIGNMENT "

����� ������� ������������, ������� ����� ������������� ������-���� ���� ������ �� ���� ������, � �����.

" BIGGEST_FIELD_ALIGNMENT "

����� ������� ������������, ������� ����� ������������� ������-���� ���� ��������� �� ���� ������, � �����. ���� ����������, ��� �������� " BIGGEST_ALIGNMENT " ��� ����� ��������.

" MAX_OFILE_ALIGNMENT "

����� ������� ������������, �������������� �������� ���������� ����� �� ���� ������. ����������� ��� ������������, ����� ���������� ������������, ������� ����� ���� ���������� � �������������� ����������� " __ attribute __ ((aligned (N))) ". ���� �� ����������, ��������� �� ��������� �������� " BIGGEST_ALIGNMENT ".

" DATA_ALIGNMENT (TYPE, BASIC-ALIGN) "

���� ����������, ��������� C, ����� ��������� ������������ ��� ����������� ����������. TYPE - ��� ������, � BASIC-ALIGN - ������������, ������� ������ ���� �� ��� ���� ������������. �������� ���� ������������ ������������ ������ ����� ������������ ��� ������������ �������.

���� ��� ������������ �� ����������, �� ������������ BASIC-ALIGN.

���� �� ���������� ���� ������������ ����������� � ���������� ������������ ������ �������� �������, ����� ��� ��� ����������� �� ������� ���������� ����� ����. ������ - ����������� ���������� ������� �� ������� �����, ����� ������ " strcpy ", ���������� ��������� � ���������� �������, ����� ���� ������� �����������.

" CONSTANT_ALIGNMENT (CONSTANT, BASIC-ALIGN) "

���� ����������, ��������� C ��� ���������� ������������ ��� ���������, ������� ���������� � ������. CONSTANT - ���������, � BASIC-ALIGN - ������������, ������� ������ ���� �� ��� ���� ������������. �������� ���� ������������ ������������ ������ ����� ������������ ��� ������������ �������.

���� ��� ������������ �� ����������, �� ������������ BASIC-ALIGN.

�������� �������������� ���� ������������ �������� ���������� ������������ ��� ��������� ��������� �� ������������ �� ������� �����, ���, ����� ������ " strcpy ", ���������� ��������� � ���������� �������, ����� ���� ������� �����������.

" EMPTY_FIELD_BOUNDARY "

������������ � �����, ���������� �������� ���� ���������, ������� ������� �� ������ �����, ���� " int: 0; ".

�������� ��������, ��� " PCC_BITFIELD_TYPE_MATTERS " ����� ������������ �� ������������, ������� ���������� ����� ������� ����.

" STRUCTURE_SIZE_BOUNDARY "

����� �����, ������� ������ ���� ������� ������ ����� ��������� ��� �����������. ������ ������ ��������� � ����������� ����������� ����� �� ��� ��������.

���� �� �� ����������� ��� ������������, �������� �� ��������� ��������� � " BITS_PER_UNIT ".

" STRICT_ALIGNMENT "

������� ����� ������� �������� 1, ���� ������� �� ����� ��������, � ������ ���� �������� ������ �� ����� ����� ������������ ������������. ���� ������� � ���� ������ ������ ����� �������� ���������, ������� ����� ������� �������� 0.

" PCC_BITFIELD_TYPE_MATTERS "

���������� ���, ���� �� ������ ����������� ������ ������ ������ ������������ C ��������� ������������ ������� ����� � ��������, ������� �������� ��.

��������� ������� � ���, ��� ���, �������� ��� �������� ���� (" int ", " short " ��� ������ ������������� ���) �������� ������������ ��� ���� ���������, ��� ����� ��������� ������������� �������� ������� ���� ����� ����. ����� ����, ������� ���� ���������� ������ ��������� ���, ����� ��� ����������� �� ������ ������ ����, �� ��������� ��� �������.

����� �������, �� ����������� ����� ������� ����, ��� ��� ������ ��� " int " �� ����� ���������� ������� ������� ����, � ������� ������������ �� ������� ������� ���� ��� ����� ���������. (������������ ������������ ����� ���� �� ������ �����; ���� ��������� ������ ��������� ������������.)

���� ������������ ����������, ����������� ������ ���� ���������� C; �������� ���������, �������� �� ����, ��������� ����� ���������.

�������� ��������, ���, ���� ��� ������������ �� ����������, ��� �� �������� - ����, ��������� ������� ���� ����� ���������� ����� ��� ���� ������� ������������. ���������� ����� ������������ ����� ������, ���� ������� insns " insv ", " extv " � " extzv ", ������� ����� ��������������� ��������� �� ������.

������ ��������� ������ ������ � �������� ������ ������� � ���, ����� ���������� " STRUCTURE_SIZE_BOUNDARY " ������ �������, ��� " BIGGEST_ALIGNMENT ". ����� � ������ ��������� ����� ����� ���������� ������� �������.

���� ������ �� ����� ������ ��� ������ � �������� ������ ��� ���� �� ����������� " STRUCTURE_SIZE_BOUNDARY " ���� �����, �� ������ ������ " PCC_BITFIELD_TYPE_MATTERS " ��������, �������� �� ����.

���� ���� ���� ������� � ���, ����� ��������� GNU CC ������������ �� �� ����� ���������� ��� ������������ ������� �����, ������� ������������ ������ ������������, ��� ��� ����������� ��, ��� ������ ������ ����������. ������������� � ��������� ��� ��� ���������:

           struct foo1
           {
             char x;
             char :0;
             char y;
           };
 
           struct foo2
           {
             char x;
             int :0;
             char y;
           };
 
           main ()
           {
             printf ("Size of foo1 is %d\n",
                     sizeof (struct foo1));
             printf ("Size of foo2 is %d\n",
                     sizeof (struct foo2));
             exit (0);
           }
���� ��� ���������� 2 � 5, �� ���������� ����� ���� ��� ��, ��� �� �������� ��, ��������� " PCC_BITFIELD_TYPE_MATTERS ".

" BITFIELD_NBYTES_LIMITED "

������� PCC_BITFIELD_TYPE_MATTERS, �� ����������� ����, ��� ������ �������������� ������������� ������� ����� ������ ���������.

" ROUND_TYPE_SIZE (STRUCT, SIZE, ALIGN) "

���������� ��� ������������ ��� ��������� ��� ������� ������� ��������� (���������� STRUCT ��� ���� ������), ���� ����������� ������ ����� - SIZE, � ������������ - ALIGN.

�������� �� ��������� - ���������� SIZE ����� �� �����, �������� ALIGN.

" ROUND_TYPE_ALIGN (STRUCT, COMPUTED, SPECIFIED) "

���������� ��� ������������ ��� ��������� ��� ������������ ��������� (���������� STRUCT ��� ���� ������), ���� ������������, ����������� ������� ����� - COMPUTED, � ������������, ���� ��������� - SPECIFIED.

��������� �� ��������� �������� SPECIFIED, ���� ��� ������; ����� ������������ ������� �� COMPUTED � " BIGGEST_ALIGNMENT "

" MAX_FIXED_MODE_SIZE "

������������� ��������� ��� ������� � ����� ������ �������� ������ ����� ��������� ����, ������� ������ ���������� ��������������. ��� ������������� �������� ���� ����� ������� ��� ������ ����� �������������� ��� �������� � ����������� � ���������������� ���������. ���� ��� ������������ �� ����������, �������������� " GET_MODE_BITSIZE (DImode) ".

" CHECK_FLOAT_VALUE (MODE, VALUE, OVERFLOW) "

�������� C ��� �������� ������������ �������� VALUE (���� " double ") ��� ���� MODE. ��� ��������, ��� �� ����������, ������ �� VALUE � �������� ��������� �������� ��� ���� MODE �� ���� ������� ������. ����� MODE - ������ ��� ������ " MODE_FLOAT ". OVERFLOW ������� �� ����, ���� �������� ����������� ��� ���������.

���� VALUE ����������� ��� ���� OVERFLOW ������� �� ����, �� ������ ���������� OVERFLOW � 1 � ����� ��������� �����-������ ���������� �������� VALUE. ����������� ������������� �������� ����� ���������� ����� ���������� ������������ ��� ����������, ������� ����� ���� ������� ������ ����������� Unix.

��� ������������ �� ������� ������������, ���� � ��� ��� �����������.

" TARGET_FLOAT_FORMAT "

���, ���������� ������ � ��������� ������ �� ������� ������. ������� ��� ������������ ��������:

" IEEE_FLOAT_FORMAT "

���� ��� ��������� ������ � ��������� ������ IEEE. ��� - �������� �� ���������; ��� ������������� ���������� ��� ������������, ���� ������ - IEEE.

" VAX_FLOAT_FORMAT "

���� ��� ��������� ������������� ������, ������������ �� Vax.

" UNKNOWN_FLOAT_FORMAT "

���� ��� ��������� ����� ������ ������.

�������� ���� ������������ ������������ � " HOST_FLOAT_FORMAT " (* ��.: ������������::.), ����� ����������, ����� �� ������� ������ ��� �� ����� ������, ��� � ������� ������. ���� �� �������������� ������� ���������� ������������ �����-�� ������ �������, ��� ��� ������ ���� ���������� ����� ����.

������� ����, ������������ �������� � ��������� �������, ���������� � ������, ����������� " FLOAT_WORDS_BIG_ENDIAN " ��� ������� ������ � " HOST_FLOAT_WORDS_BIG_ENDIAN " ��� ������� ���.

6.4 ������ �������� ����� ������ �����

��� ������������ ���������� ������� � ������ �������������� ����������� �������� ����� ������, ������������ � ������������� ����������. � ������� �� ����������� ����������� �������, ��� ���������� ������ � ������������� ������������ C � ����������� ������, ��� � ��������������� �������� ������� �������� ������.

" INT_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " int " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - ���� �����.

" MAX_INT_TYPE_SIZE "

������������ ����� ��� ������� � ����� ���� " int " �� ������� ������. ���� ��� �� ����������, �������� �� ��������� - " INT_TYPE_SIZE ". �����, ��� - ���������� ��������, ������� �������� ����� ������� ���������, ����� " INT_TYPE_SIZE " ����� ����� �� ����� ���������� ���������. ��� ������������ � " cpp ".

" SHORT_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " short " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - �������� �����. (���� ��� ������, ��� ���� ���������� ������� ������, �� ��� ����������� ����� �� �� �������.)

" LONG_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " long " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - ���� �����.

" MAX_LONG_TYPE_SIZE "

������������ ����� ��� ������� � ����� ���� " long " �� ������� ������. ���� ��� �� ����������, �������� �� ��������� - " LONG_TYPE_SIZE ". �����, ��� - ���������� ��������, ������� �������� ����� ������� ���������, ����� " LONG_TYPE_SIZE " ����� ����� �� ����� ���������� ���������. ��� ������������ � " cpp ".

" LONG_LONG_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " long long " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - ��� �����. ���� �� ������ ������������ GNU Ada �� ����� ������, ��� �������� ������ ���� �� ������� ���� 64.

" CHAR_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " char " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - �������� �����. (���� ��� ������, ��� ���� ���������� ������� ������, �� ��� ����������� ����� �� �� �������.)

" MAX_CHAR_TYPE_SIZE "

������������ ����� ��� ������� � ����� ���� " char " �� ������� ������. ���� ��� �� ����������, �������� �� ��������� - " CHAR_TYPE_SIZE ". �����, ��� - ���������� ��������, ������� �������� ����� ������� ���������, ����� " CHAR_TYPE_SIZE " ����� ����� �� ����� ���������� ���������. ��� ������������ � " cpp ".

" FLOAT_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " float " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - ���� �����.

" DOUBLE_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " double " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - ��� �����.

" LONG_DOUBLE_TYPE_SIZE "

��������� C ��� ������� � ����� ���� " long double " �� ������� ������. ���� �� �� ����������� ���, �������� �� ��������� - ��� �����.

" DEFAULT_SIGNED_CHAR "

���������, ������ 1 ��� 0, � ����������� �� ����, ������ ��� " char " ���� �������� ��� ����������� �� ���������. ������������ ������ ����� �������� ��� �������� �� ��������� � ������� " -fsigned-char " � " -funsigned-char ".

" DEFAULT_SHORT_ENUMS "

��������� C, ������������, ������ �� ���� " enum " ������ ������� ������, ������� ���������, ����� ����������� �������� ��������� �������� ����� ����. ��������, �������� �� ����, �������� ������ ���; �������� ���� ��������, ��� ��� " enum " ���� ������ �������������� ������� " int ".

���� �� �� ����������� ������������, �������� �� ��������� - 0.

" SIZE_TYPE "

��������� C ��� ������, ����������� ��� ���� ������, ������������� ��� �������� �������. ��� " size_t " ������������ � �������������� ����������� ������.

������ ����� ��������� ������ ������ ��������� �����. ���� ��� ���, ��������� �� ���������, � ������ ������� �������� �����, ����������� �����, ����� " unsigned ", ���� �����, � � ���������� " int ". ������ ������ ����� ��������������� ������ �� ���� ���� ������, ������������ � ������� " init_decl_processing " � ����� " c-decl.c ". �� �� ������ �������� " int " ��� �������� ������� - ��� �������� � ������ ��� ������� �����������.

���� �� �� ����������� ��� ������������, �������� �� ��������� - " "long unsigned int " ".

" PTRDIFF_TYPE "

��������� C ��� ������, ����������� ��� ���� ������, ������������� ��� �������� �������� ���� ����������. ��� " ptrdiff_t " ������������ � �������������� ����������� ������. ��. " SIZE_TYPE " ���� ��� ����� ��������� ����������.

���� �� �� ����������� ��� ������������, �������� �� ��������� - " " long int " ".

" WCHAR_TYPE "

��������� C ��� ������, ����������� ��� ���� ������, ������������� ��� ������� ��������. ��� " wchar_t " ������������ � �������������� ����������� ������. ��. " SIZE_TYPE " ���� ��� ����� ��������� ����������.

���� �� �� ����������� ��� ������������, �������� �� ��������� - " "int" ".

" WCHAR_TYPE_SIZE "

��������� C ��� ������� � ����� ���� ������ ��� ������� ��������. ��� ������������ � " cpp ", ������� �� ����� ������������ " WCHAR_TYPE ".

" MAX_WCHAR_TYPE_SIZE "

������������ ����� ��� ������� � ����� ���� ������ ��� ������� ��������. ���� ��� �� ����������, �������� �� ��������� - " WCHAR_TYPE_SIZE ". ����� �������, ��� - ���������, ������� �������� ����� ������� ���������, ������� " WCHAR_TYPE_SIZE " ����� ����� �� ����� ���������� ���������. ��� ������������ � " cpp ".

" OBJC_INT_SELECTORS "

���������� ��� ������������, ���� ��� ���������� Objective C ������ ���� " int ".

���� ��� ������������ �� ����������, �� ��������� ������ ����� ��� " struct objc_selector * ".

" OBJC_SELECTORS_WITHOUT_LABELS "

���������� ��� ������������, ���� ���������� ����� ������������ ��� ��������� ������ � ������ � ������������ ������ ���� ����� � ������ �������. ����� �������, ���������� ������ ���� ������� ��������� ����������� ������������ �����.

�� ��������� ������� ����� ����� ��������� ����� ��� ������� ���������, ������ ��� ��� ���� ����������� ������������ ��������� ������� ���������.

" TARGET_BELL "

����������� ��������� C ��� ������ �������� ����������� ������������������ " \a ".

" TARGET_BS "

" TARGET_TAB "

" TARGET_NEWLINE "

����������� ��������� C ��� ����� �������� ����������� ������������������� " \b ", " \t " � " \n ".

" TARGET_VT "

" TARGET_FF "

" TARGET_CR "

����������� ��������� C ��� ����� �������� ����������� ������������������� " \v ", " \f " � " \r ".

6.5 ������������� ���������

� ���� ������� �����������, ��� ���������, ����� �������� ����� ������� ������ � ��� (������) ��� ����� ��������������.

�������� ����, ����� �������� ����� ������������ ���������� �������, ������� � �������� ���������; ��. *������ ���������::. �� ������ ���������� �� ������������� ��������� ��� ��������� � ����� �����, ��. *�������� �����::. � �������� �������� � ��������� ��. *��������� ���������::. � �������� �������� � ���������, ��. *������� ��������::.

������� �������������� ���������

�������� ����� ��������� ��������������.

" FIRST_PSEUDO_REGISTER "

����� ���������� ���������, ��������� �����������. ��� �������� ������ �� 0 �� " FIRST_PSEUDO_REGISTER-1 "; ����� �������, ������� �������������� ������������� ������������� ����� " FIRST_PSEUDO_REGISTER ".

" FIXED_REGISTERS "

�������������, ������� �������, ����� �������� ������������ ��� ������������� ����� �� ���������� ����� ������������������ ���� �, �������������, ���������� ��� ������ �������������. ��� ����� �������� ��������� �����, ��������� ����� (�� ����������� �������, ��� �� ����� �������������� ��� ����� �������, ���� ��������� ����� �� �����), ����������� ������� �� �������, ��� �� ��������������� ��� ���������� �������, � ����� ������ ��������������� ������� �� ����������� ��������������.

��� ���������� ���������� ��� ������������������ �����, ����������� �������� � ����������� � �������� ������. N-� ����� ����� 1, ���� ������� N ����������, � 0 � ��������� ������.

�������, ������������������ ���� �������������, � �������, ������������������ ���������, ����� ���� �������� �� ����� ���������� ��������� ��� �������������, ��� ��������� ������������ " CONDITIONAL_REGISTER_USAGE ", ��� � �������������, ��� ������ ����� ������� " -ffixed-REG ", " -fcall-used-REG " � " -fcall-saved-REG ".

" CALL_USED_REGISTERS "

������� " FIXED_REGISTERS ", �� ����� 1 ��� ������� ��������, ������� ���������� (������ ������) ����������� � ������� ��� ��, ��� ��� ������������� ���������. ��� ������������, �������������, �������������� ��������, ������� �� �������� ��� ������ ������������� ��������, ������� ������ ���� �� ����� ��������� � �������.

���� ������� ����� 0 � " CALL_USED_REGISTERS ", ���������� ������������� ��������� ��� �� ����� � ������� � ��������������� ��� �� ������ �� �������, ���� ������� ������������ ������ �������.

" CONDITIONAL_REGISTER_USAGE "

���� ��� ����� ���������� C, ������� ����� ������� �������� ��� ���������� " fixed_regs " � " call_used_regs " (��� - ���� " char[] ") ����� ����, ��� ��� ���� ���������������� ����� ����������� ��������������.

��� ���������� � ������, ���� ������������� ��� ���������� ��� ������ �������� ������� �� ������� �������.

�� ����������� ��� ������������, ���� �� ��������� ������ ������.

���� ������������� ����� ������ ��������� ������� �� ������� ������, �� ������ �������� �� ���� GCC, ��������� ��� ������������ ��� ��������� " fixed_regs " � " call_used_regs " � 1 ��� ������� �� ��������� � �������, ������� �� ������ �������������� GCC. ����� ���������� ������������ " REG_CLASS_FROM_LETTER " ���, ����� ��� ���������� " NO_REGS ", ���� ��� ���������� � �������� ��� ������, ������� �� ������ ��������������.

(������, ���� ���� ����� �� ������� � " GENERAL_REGS " � ��� ������� insn, ��� ����������� ��������� ���� �����, ����������� �������� ���������������, �� GCC ����� ������������� �������� ������������� ���� ���������, ����� ������� ������������� ��������� ���.)

" NON_SAVING_SETJMP "

���� ��� ������������ ���������� � ����� ��������, �������� �� ����, ��� ��������, ��� " setjmp " � ��������� � ��� ������� �� ����� ��������� ���������, ��� ��� " longjmp " �� ����� ������������ ��. � �������� ����������� ���������� �������� �������� ���������� � �������� � ��������, ������������ " setjmp ".

" INCOMING_REGNO (OUT) "

���������� ��� ������������, ���� ������� ������ ����� ���� ���������. ��� ��������� C ���������� ����� ��������, ������� ����� ���������� �������, � ����������� �� ������ �������� OUT, ������� ����� ���������� �������. ���������� OUT, ���� ����� �������� OUT �� ��������� (outbound) �������.

" OUTGOING_REGNO (�) "

���������� ��� ������������, ���� ������� ������ ����� ���� ���������. ��� ��������� C ���������� ����� ��������, ������� ����� ���������� �������, � ����������� �� ������ �������� IN, ������� ����� ���������� �������. ���������� IN, ���� ����� �������� IN �� �������� (inbound) �������.

������� ������������� ���������

�������� �������������� �� �������.

" REG_ALLOC_ORDER "

���� ����������, ������������� ��� ������� ����� �����, ���������� ������ ���������� ��������� � �������, � ������� GNU CC ��������������� ������ ������������ �� (�� �������� ��������������� � ��������).

���� ��� ������������ �� ����������, ������ ������� ������������ �������� � ������ ���������� �������� ( ���, ����� �������������).

���� �� ���������� ���� ������������ - �� �������, ��� �������� � ������ �������� �������� ������ ������ ����������� � ������� ���������� ���������� ��������� ������������ ������ ������������������ ���������������� ���������. �� ����� ������� ���������� " REG_ALLOC_ORDER " ��� �������������, ��������� � ������ ������� ������ ��� ������������� �������� � ������ �������� ��������.

" ORDER_REGS_FOR_LOCAL_ALLOC "

�������� C (��� ����� � �������) ��� ������ ������� ������������� ���������� ��������� ��� ���������������, ��������� ��� �������� �����.

��������� ����������� ������� ��������� � ������� " reg_alloc_order ". ������� 0 ������ ���� �������, �������������� ������; ������� 1 - ���������, � ��� �����.

���� ������������ �� ������ ������ ������� ������������� ������������ ����������� " reg_alloc_order " ����� ����������� ������������.

�� ����������� ����� ��� ������������� ���������� ��� ������������.

��� ����������� �������� � ���������

� ���� ������� ����������� ������������, ������� ���������, ����� ���� �������� (���������, ����� �������� ����) ������ ������� ����� ���������, � ������� ���������������� ��������� ���������� ��� ������� ����.

" HARD_REGNO_NREGS (REGNO, MODE) "

��������� C ��� ����� ���������������� ���������� ���������, ������� � �������� � ������� REGNO, ���������� ��� �������� �������� ���� MODE.

��������, �� ������, ��� ��� �������� - ����� ���� �����, ��� ������������ ������� ���������� ���:

           #define HARD_REGNO_NREGS(REGNO, MODE)            \
              ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
               / UNITS_PER_WORD))
" HARD_REGNO_MODE_OK (REGNO, MODE) "

��������� C, ������� ������� �� ����, ���� ��������� ���������� �������� ���� MODE � ���������� �������� � ������� REGNO (��� � ���������� ���������, ������� � ����). ��� ������, ��� ��� �������� ���������, ����������� ������ ��������� ���:

           #define HARD_REGNO_MODE_OK (REGNO, MODE) 1
��� ���� ������������ �� �������� ����������� �������� ������� ������������� ���������, ������ ��� �������� ������������� ������������� �� ��� ������ �������.

�� ��������� �������, �������� ������� �������� ������ ��������� � ������/�������� ����� ���������. ������ ������� ��� ����������� � ���, ����� ��������� � ���� ������������ �������� ������ ��������� ��� ����� �����.

����������� ���������� ��� ����, ����� �� �������� ��� ��������, ����������� � ���, ��� ������� ������� " movMODE " ������������ ����������� ����� ��������� � ����� ������ ���������� ���������, ��� �������� ���� ��� ��������; � ��� ����������� �������� � ������� � ������� �� �������� ���.

��� ��� �� �� ����� �������, ������������ ��� ������������ " SImode ", ����� �������� ��� ���� ����� ����� ������������� �����, ��� " HARD_REGNO_MODE_OK " �� ����������� �� ����� ������ ��������� ��� ����, ���� �� ����������� ������� " movhi ", � �.�., ����� ��������������� ������������� �����. ��� ������� ��-�� �������������� ����� " HARD_REGNO_MODE_OK " � " MODES_TIEABLE_P "; ����� ����������, ����� ��� ������������� ���� ���� ���������� ����� �������.

������ ������ ����� ����������� �������� ��� ���������� � ��������� ������. ����� ���� �������, ��� �������� ���� � ��������� ������ ����������� ������ � ��������� � ��������� ������. ��� �� ���. ����� ��������, ������� ����� ������� ����� �����, ����� ��������� *���������* �������� ��� � ��������� ������, ���������� �� ����, ����� ��� ��� ����������� � ���� ��������� ��������� ����������. ������������� ������� ����������� ����� �������������� � ��� ����������� ���� ��������.

�� ��������� �������, ������, ����� ��������: �������� ���� � ������������� ������ �� ����� ���������� � ��������� ���������. ��� ���, ���� ��������� �������� ����������� ����� ��������, ����������� � ���, ������ ��� ���������� ��-���������� �������� ��� �������� �� ���. � ���� ������ " HARD_REGNO_MODE_OK " ������ ��������� �������� ���� � ������������� ������ � ��������� ���������. �� ���� ��������� �������� �� ������������� �������������, ���� �� ������ ��������� ����� ����� ����� � ������� � ��������������� ��� ��� ���������, �� ����� �������� ��� ����� ��������� � ��������� ��������, � �� ������ ���������� � ������ ����� ��� ������������.

�������� �������� ����������� ��������� ��������� - ��� ��, ��� � ��� ��������� ������� ���������� � ��������� ������. ������ ��� �� ����� �������� ��������� � " HARD_REGNO_MODE_OK ". �� ������������� ���, ��������� ��������������� ����������� ��� ���� ������.

�� ��������� ������� ������ � ��������� ��������� �������� ���������, ��� ��� ����� ������� �������� �� ����� �����, ��� � ����� ��������, ���� � ��� �� ����������� ������ ��������� ����������. ��������� ��������� �������� �� ���������� � ������ " GENERAL_REGS ", ��� �� ����� ��������������, ���� ����� �� ��������� �����-������ ����������� �������.

" MODES_TIEABLE_P (MODE1, MODE2) "

��������� C, ������� ������� �� ����, ���� ���������� �������� ������������� ��������� ���, ����� �������� ������ ����������� ����� a ���������� ���� MODE1 � ���������� ���� MODE2.

���� " HARD_REGNO_MODE_OK (R, MODE1) " � " HARD_REGNO_MODE_OK (R, MODE2) " �������� ��������� ��� ������ R, �� " MODES_TIEABLE_P (MODE1, MODE2) " ������ ���� �����.

��������� leaf-�������

�� ��������� �������, leaf-������� (�� ���� ��, ������� �� ���������� ������� �������) ����� ����������� ����� ����������, ���� �� ������ ������������ ���� ���������. ����� ��� ��������, ��� ��� �������, ����� ��������� ���� � ���������, � ������� �� �������� ���������� �������, ������ ���������, ����� ������� ��� ������ ���������.

����������� ��������� ��� leaf-������� ����������� ������ ����� ������ ������� ���������; ��������, ����� ��� ����� ������������ ������ ��� �� �������� ��� ����������� ���������� � ��������� ������. �� ���������� ������ "leaf-�������", ����� ���������� �������, ������� �������� ��� ���� ����������� ���������, ��� ��� ������� ��� ��������� �� ����������� - "leaf-�������".

GNU CC ��������� ������ ��������� ������ ��� ������, �������� �� ������� ���������� ��� ��������� ��� leaf-�������. ��� ��� ��� ��������� �������������� ��������, ����� �������� leaf-�������. ��������� ������������ ��������� ���.

"LEAF_REGISTERS' ("leaf-��������") ������������� C ��� �������, ���������������� �������� ���������� ���������, ������� �������� 1 ��� ��������, ������� �������� ���������� �� ��������� ��� leaf-�������.

���� ��������� leaf-������� �������� ������������� ���������, �� ��������, ���������� ����, ������ ��������� 1 ����� ��������������, ��� GNU CC ������ � ������������. ��������, ������� ����� ���������� �������������� � ������������ ����, ����� ��������� ���������, �� ������ ���� �������� 1 � ���� �������.

���������� ��� ������������ ������ ���� ������� �������� �������������� ��������� leaf-�������.

"LEAF_REG_REMAP (REGNO)" ��������� C, �������� �������� - ����� ��������, �������� ������ ���� �������� ����� REGNO, ����� ������� �������������� ��� leaf-�������.

���� REGNO - ����� ��������, ������� �� ������ ��������� � leaf-������� ����� ���������� ���������, �� ��������� ������ ������ -1, ��� �������� ���������� ����������.

���������� ��� ������������ ������ ���� ������� ������ �������� �������������� ��������� leaf-�������, � ����� ������� ���, �������� ������ ���� ��������������.

������, "FUNCTION_PROLOGUE" � "FUNCTION_EPILOGUE" ("������ �������" � "������ �������") ������ ������������ leaf-������� �����. ��� ����� ��������� ���������� C "leaf_function", ������� ������� �� ���� ��� leaf-�������. (���������� "leaf_function" ���������� ������ ���� "LEAF_REGISTERS" ����������.)

��������, ���������� ����

�� �����������, ��� ��������� �� ��������� �������� ���� (��� � 80387 ������������ ��� 80386), ������� ��������� �����������. �������� ����� ������ ������������, �������������� � ����, � ������������� ������������ ������� �����.

� ��������� �����, GNU CC ����� ������������ ������ ���� ������ ������������� ���������, � ��� ������ ���� ��������������� �������������.

"STACK_REGS' ("�������� �����")

���������� ��, ���� ������ ����� ������������� ��������.

"FIRST_STACK_REG" ("������ ������� �����")

����� ������� �������������� ��������. ��� - ������� �����.

"LAST_STACK_REG" ("��������� ������� �����")

����� ���������� �������������� ��������. ���� - ��� �����.

���������� ������������ ��� ���������� �������������� ���������

��� ����������� �������� �� ����� ������. ��� ����������, ������ ��� ��������� ��� ��������� ����������� ���� ��� 80387 ������������ 80386. ��� ������ �� ������������ � ������������ c �������� ��������� � ����� ���� ������� � ����� ������� ������ �����������. �� ����������� ��!

"OVERLAPPING_REGNO_P (REGNO)" ("��������������� ������ ���������")

���� ����������, �� ��� - ��������� C, �������� �������� ������� �� ����, ���� ���������� ����� �������� REGNO - ��������������� �������. ��� �������� ���������� �������, ������� ������������� c ���������� ��������� � ������ �������. (����� ���������� ������������, �� ������ ��������� �������������� ������, ������� ����� �� �������������� ��.) ��� ������������ ������ ���������� ��������, �������� �� ����, ��� *����* ���������, ������� ������������� �� ���� �����. GNU CC ����� ������������ ��������������� ������� ������ � ��������� ������������ �������. ��� ����� �������������� ��� ������������� ������ ��������� ����� � ����� ���� spilled ��� ������������; ��� � ���.

���� ��� ������������ �� ����������, ��� ��������, ��� �� ���� �� ���������� ��������� �� ������������� ���� �� �����. ��� - ������� ��������.

"INSN_CLOBBERS_REGNO_P (INSN, REGNO)"

���� ����������, �� ��� - ��������� C, �������� �������� ������ ���� ������� �� ����, ���� insn INSN ����� ������ ������������� ��������� (clobbering) ����������� ����������� �������� ����� REGNO. "�������������" ������, ��� ��������� insn RTL �� ��������� ������ �������.

���� ��� ������������ �� ����������, ��� ��������, ��� ������� insn �� clobbers ��������. ��� - ������� ��������; ��� ������ ������ ��������, ��������� RTL ����� ����� �������� ���� �������.

"PRESERVE_DEATH_INFO_REGNO_P (REGNO)"

���� ����������, �� ��� - ��������� C, �������� �������� ������� �� ����, ���� ������ "REG_DEAD" ��������� ���������� ��� ������ ����������� �������� REGNO �� ����� ��������� ������������� ����. ����� ��� ���, ��������� �����������, ������� ���������� ����� ������������� ��������� � ����� �� ������ �� ��� ��� ���������, �� �����������, ����� ���� ������� ���������� � �������.

�� ����� �� ������� ����, ����� ������������� "�����������" ���������� � ��������, ����� ��������� ��� � �������� ��������, ������� �����������, ����� ������ ������������ ���, ����� "�����������" ���������. ��� ���������� ������, ����� ����������� ���������� �����������, � ������� GNU CC ������ ��� � ��������, �� �������� ��������� �������� ����. (��� ����� ����, ��������, ���������� ����.)

���� ��� ������������ �� ����������, ��� ��������, ��� ������� "�����������" ���������� �� ������ �����������. ��� - ������� ��������.

6.6 ������ ���������

�� ������ ������� ��������������� �������� - �� ��� ������������. ��������, ��������� �������� ������ ������������ ��� ��������� ���������; ��������� �������� ������ ������������ � ��������� ��������. ��� �������� ����������� �������� ����������� ����� "������ ���������".

�� ����������� ��� ������� ���������, �������� ������� ��� � ������, ����� �� ��������� ����������� ���. ����� �� ������ ������ ������ ���������, ������� ��������� ��� �������� � ���������� ��������.

������, ������ ������� ����� ������������ ���������� �������. ����������, ���� ����� ������ ���� ������ "ALL_REGS" ("��� ��������") � ��������� ��� ��������. ������ ����� ������ ���� ������ "NO_REGS" ("������� ���������") � �� ��������� ������� ���������. ����� ����������� ���� ������� ����� ������ �������, ������ ��� �������������.

���� �� ������� ������ ���� ������ "GENERAL_REGS" ("�������� ������ ����������"). ��� �� ����� �����, �� ������� "r" � "g" ���������� ���� �����. ���� "GENERAL_REGS' - �� ��, ��� "ALL_REGS", ������ ���������� ��� ��� ������������, ������� ��������������� �� "ALL_REGS".

����������� ������ ���, �����, ���� ����� X ���������� � ������ Y �� X, ���� ������� ����� ������ ��� Y.

������, �������� �� "GENERAL_REGS", ����������� � ������������ �� ������� ����� �������-��������� ������� ����������� ��������. �� ������ ���������� ����� �������, ����� �������� ��������� �������, ����� ������������ �� � ������������ �� �������.

�� ������ ���������� ����� ��� ����������� ���� ������� ������ ���, ����� ��������� ������� ��������� ������������ ��� ������. ��������, ���� ������� ��������� ������������ ��� ������� � ��������� ������ (��������������), ��� � ������� ������ ���������� ��� ���������� ��������, �� ������ ���������� ����� "FLOAT_OR_GENERAL_REGS" ("������������ ��� ����� ��������"), ������� �������� ��� �� ���. ����� �� �������� ������������� ���.

�� ������ ����� ���������� ��������� ���������� ���������� ������������ ������� ���������: ��� ������� ������ : ����� ������ �� �������� � ����� ���������� � ���; ��� ������ ���� ������� - ����� ������� �����, ������������ � �� �����������.

����� ��������, ���������� ��������� ���������������� ��������� ��������� � ��������� ������, ��� ������������ �������� ������ ������������ ����� ������. �������������, ������ ��������� �� ����� �������������� ��� �������� ���������� � ����������� ����, ����� �������� ��������� � ������ �������. ������ ���������� ��� ���������� - "HARD_REGNO_MODE_OK".

������ ���������, ������������ ��� �������� ���������� "�" ��� ������ ������, ����� ����������� ����������: ������ ����� ����� ������ ����� ��� ������� ���� � ������������� ������, ��������, �������� �������� ����� �������� ���� ��� � ������ ��� �� ���. ��������, �� ��������� �������, �������� ��� ������������ �������� ("QImode") ���������� ����������� ����������. ����� ��� ���, ������ ����� ���������, ������� ������������ � ��������� "�" , ��� �������� ������, ������ ����� ��������, ��������� �� ���������, �� ������� ������������ �������� ����� ���� ��������� ��� ���������. ��� ��� "PREFERRED_RELOAD_CLASS" ������ ����� �������� ��� ��������.

"enum reg_class"

������������ ���, ������� ������ ���� ��������� ����� ������� ������� ��������� ��� �������������� ����������. "NO_REGS" ������ ���� ������. "ALL_REGS" ������ ���� ��������� ������� ���������, �������������� ��� ����� ���������, "LIM_REG_CLASSES", ������� �� �������� ������� ���������, �� �������� � ���������� �������.

������ ����� ��������� ����� �����, ������� �������� ��������� ���������� ����� ������, � ���� "int". ����� ������ �������� �� ������ ��������, ��������� ����.

"N_REG_CLASSES"

����� ��������� ������� ���������, ������������ ��������� �������:

 #define N_REG_CLASSES (int) LIM_REG_CLASSES
"REG_CLASS_NAMES"

�������������, ���������� ����� ������� ��������� ��� ��������� ��������� C. ��� ����� ������������ ��� ������� ��������� ���������� ������.

"REG_CLASS_CONTENTS"

�������������, ���������� ���������� ������� ��������� ��� ����� �����, ���������� �������� �������. N-�� ����� ����� ���������� ���������� ������ N. ������������� ����� MASK ���������������� ��� : ������� R ��������� � ������, ���� "MASK & (1 << R)" �� ����� ����.

����� ������ ����� ������ ��� 32 ��������, ������ ����� ("int") �� �������. ����� ����� ����� ���������� ���-����������������, �������� �� ��������� ����� �����. ������ ���-������������� ������ ��������� ��� ������������� ��� ���� "HARD_REG_SET", ������� ��������� � "hard-reg-set.h".

"REGNO_REG_CLASS (REGNO)"

��������� C, �������� �������� - ����� ���������, ���������� REGNO ����������� ��������. � ����� ������ ������� �����, ��� ���� ����� �����; �������� "�����������" (����� ��� ������� ������� ����� �� �������� ������ �������).

"BASE_REG_CLASS"

������������, ����������� ������� - ��� ������ �������� ������ ������������ ���������� ������� ������� . ������� ������� - ���, ������� ������������ � ������, ���������� ��������� ����� �������� ���� ��������.

"INDEX_REG_CLASS"

������������, ����������� ������� - ��� ������, �������� ������ ������������ ��������� ������� . ��������� ������� - ���, ������� ������������ � ������, ��� �������� ��� ���������� �� �������������� ����������� ��� ������������ � ������� �������� (��� ����������� � ��������).

"REG_CLASS_FROM_LETTER (CHAR)"

��������� C, ������� ���������� �������-��������� ������� ����������� �������� ��� ������� ���������. ���� CHAR - ����� ������, ��������� ������ ���� ����� ���������, ��������������� ���. �����, �������� ������ ���� "NO_REGS". ������ �������� "r", ��������������� ������ "GENERAL_REGS", �� ����� ������� ���� ������������; �� �� ������ ������������ ���.

"REGNO_OK_FOR_BASE_P (NUM)"

��������� C, ������� ������� �� ����, ���� ������� ����� NUM �������� ��� ������������� ��� ������� ������� � ������� ���������. ��� ����� ���� ��� ���������� ���������� �������, ��� � �������������, � ������� ��� ����������� ���������� �������.

"REGNO_OK_FOR_INDEX_P (NUM)"

��������� C, ������� ������� �� ���� ���� ������� ����� NUM �������� ��� ������������� ��� ��������� ������� � ������� ���������. ��� ����� ���� ��� ���������� ���������� �������, ��� � �������������, � ������� ��� ����������� ���������� �������.

�������� ����� ��������� ��������� � ������� ��������� � ���, ��� ��������� ������� ����� ����������������. ���� ����� �������� ����� ���� ���������, �� ���� �� ��� �� �������������, �� ����� ����� ���� ������� ��� "��������", � ������ ��� "���������"; �� ����� �� ������� �� ��������������, ��� ������ ������������� ������������ ������, �������� ������� ����� ������� ������ � ������������ ������. ���������� ������� ��� �������, ��� ����������, � ������������� ���� ��� ��� ��������, ������ ���� ������� ������ ������� �� ��������.

"PREFERRED_RELOAD_CLASS (X, CLASS)"

��������� C, ������� �������� �������������� ����������� �� ����� ���������, ���� ���������� ���������� �������� X � ������� ������ CLASS. �������� - ����� ���������; �������� CLASS, ��� ������, ������� �����. �� ������ �������, ��������� ��������� ����������� :

 #define PREFERRED_RELOAD_CLASS (X, CLASS) CLASS
������ ����������� ����� ������������� ������ �������� � ������� ����. ��������, �� 68000, ����� X - ������������� ���������, ������� ��������� � ��������� ��� ������� "moveq", �������� ���� ������������ - ������ "DATA_REGS", ��� ��� CLASS �������� �������� ������. ���������� �������� ������ �����������, ��� "moveq" ����� ��������������.

���� X - "const_double", ��������� "NO_REGS" �� ����� ���������� X � ��������� � ������. ��� ������� �� ��������� �������, ��� ���������������� ������������ �������� �� ����� ���� ��������� � ��������� ���� ���������.

"PREFERRED_OUTPUT_RELOAD_CLASS (X,CLASS)"

�� ��, ��� � "PREFERRED_RELOAD_CLASS", �� ��� ������������ ������ ������ ������������ �����. ���� �� �� ����������� ��� ������������, �� ��������� ������������ CLASS, ������������.

"LIMIT_RELOAD_CLASS (MODE, CLASS)"

��������� C, ������� �������� �������������� ����������� �� ����� ���������, ����� ������������, ����� ���������� ������� �������� ���� MODE � ��������������� �������� ��� �������� ������ ������������� �� ����� CLASS.

� ������� �� "PREFERRED_RELOAD_CLASS", ��� ������������ ������ ��������������, ����� ������� ��������� ����, ������� ������ �� ����� ������� � ��������� ������ ������������.

�������� - ����� ���������; �������� CLASS, ��� ������, ������� �����.

�� ����������� ��� ������������, ���� ������� ������ ����� �����������, ������� �������, ����� ������������ ������ ����� �������������.

"SECONDARY_RELOAD_CLASS (CLASS, MODE, X)"

"SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)"

"SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)"

������ ������ ����� ��������� ��������, ������� �� ����� ���� ����������� ��������������� � ������ ��� �� ��� ��� ���� �� ������ ����� ���������. ������ - "MQ" �������, ������� �� ����������� ����� ����� ���� ���������� ������ ����� ������� ������ ����������, �� �� ����� ������. ��������� ������ ��������� ���������� ��� �������� � ������ ��� �� ��� , �� ������� �������� �������� ��� ������ (��������, � ������������� ������� �� RT, � � ��������� ������������� ������� �� Sparc ��� ���������� PIC). � ��������� ������� ��������� � �������������, � ������� ��������.

�� ������ ���������� ��� ������������, ����� ������� ��� ���� ������������, ��� ����� ������������� ������������ �� ������� ���� ���� ������� ��� ������������ � ���������� � ��������, ����������� ������. � ������, ���� ��� ����������� X � ������� ������ CLASS ���� MODE ��������� ������������� �������, �� ������ ���������� "SECONDARY_INPUT_RELOAD_CLASS", ����� ���������� ����� ������� ����� ���������, ��� �������� �������� ����� �������������� ��� ������������� ��� ������� ��������.

���� ��� ����������� �������� ������ CLASS ���� MODE � X ��������� ������������� ��� ������� �������, "SECONDARY_OUTPUT_RELOAD_CLASS" ������ ���� ����������, ����� ���������� ����� ������� ��������� ����� ���������. ���� ���������� ��� ������������ ����� � ������ ���� � �� ��, �� ������ �������������� ������������ "SECONDARY_RELOAD_CLASS" ������ ����, ����� ���������� ��� ������������ ���������� �����������.

��������, ������������ ����� �������������� - ����� "GENERAL_REGS". ������������ "NO_REGS", ���� �� ��������� �������� ��������� ��������; �� ����, ���� X ����� ���� ��������������� ���������� � ��� �� �������� ������ CLASS ���� MODE, �� ������ �������� ��������. �� ����������� ��� ������������, ���� ��� ������ ���������� �� "NO_REGS".

���� ��������� ������� ������� (� ������������� ��������� ��� ��� ����), �� ������ ���������� ������� ��� "reload_inM" ��� "reload_outM", ��� ��������� (*�������� �������� �� ����������� �����::.. ��� �������, ������� ����� ������ ����������� � "define_expand", ������ ���� ������� �������� "movM", �� ����������� ����, ��� ������� 2 - ������� �������.

���������� ����������� ��� �������� ������������ � �������� ��������, ������� �������� ������������ ����� ���������. ���� �������������� ������� ������������ (����� �������� - CLASS) ����� ��������� �����������, ������ � �������, ��������, ������������ ����� �������������� ������������ ��� ������ �������� ��������. �����, ��������� ��� �������������� �������� ������������. �� ������ �������� �� ����������� � ������� insn.

X ����� ���� ��������������� ��� ������������ ��������������, ������� ����� ���� � ���������� �������� ��� � ������. ����������� "true_regnum", ����� �������� ���; ��� ��������� -1, ���� ������������� ��������� � ������ ��� ����� ����������� ��������, ���� ������������� ��������� � ��������.

��� ������������ �� ������ �������������� � ������, ���� ������������� ����� ��������� ����� ���� ������ ���������� � ������ ��� � ������ ����� ���������. � ���� ������, ��������� �������� ������������ ������������� � �� ��������. ������ ����� ��� ���������� ����������� ������ �������������� ����, � ������� "movM" ������ ������������ ������ ��� ����� �������������� ��������. ��� ����� ���������� ����� ���������� � ��������� ������ � ���������� ������ ����������.

"SECONDARY_MEMORY_NEEDED (CLASS1, CLASS2, M)"

��������� ������ ����� ��������, ��� ��������� �������� �� ����� ���� ����������� � ��������� ������ �������� ��� ������������� ������. ���������� ��� ������������ �� ���� �������, ����� ��� ���� ���������� C, ������� ������� �� ����, ���� ������� ���� M � ��������� CLASS1 ����� ���� ����������� � �������� ������ CLASS2, ������ �������� ������� CLASS1 � ������ � �������� ������ ������ � ������� ������ CLASS2.

�� ����������� ��� ������������, ���� �������� ���� �� ������ ����.

"SECONDARY_MEMORY_NEEDED_RTX (MODE)"

������, ����� "SECONDARY_MEMORY_NEEDED" ����������, ���������� ������������ ���� (slot) ����� ��� ������ ������, ����������� ��� ����� ��������. ���� ��� ������������ ����������, �� ���������� ������ ����� ���������� ������ ������, ������������ ���� �������������.

�� ����������� ��� ������������, ���� �� �� ���������� "SECONDARY_MEMORY_NEEDED".

"SECONDARY_MEMORY_NEEDED_MODE (MODE)"

����� ���������� ��������� �� ��������� ������ ������, ����� ���������� ���� ������� ���� MODE � ������, �� ������ ������������ ����������� ���������� ������, ����� ������� "BITS_PER_WORD" ����� � ��������� �������� ����������/�������� � ���� ������� � ����� �����, ����� �������� - MODE.

��� ������ �� ����������� �����, ������ ��� ��� �����������, ��� ��� ���� �������� �����������, � ������������� ������ � ��������� � ����� ������ (�� ������) ����, ��� ��������� ������ ��������� ��� ��������� � ��������� ������.

������, ��� �������� �� ��������� ��������� ����������� �� ��������� �������, ����� ���, ��������, DEC Alpha, ������� ��������� �������� ����� ����� � ��������� � ��������� ������ �� ���, ��� � ������������� ���������. �� ���� �������, �������� �� ��������� ���������� �� ����� �������� ���������, � �� ������ ���������� ��� ������������, ����� �������� ��� ���������� � ��������� �������. ��. ����������� � ����� "alpha.h".

�� ����������� ��� ������������, ���� �� �� ����������� "SECONDARY_MEMORY_NEEDED" ��� ���� ���������� MODE �� ����, ������� ����� ������ "BITS_PER_WORD" ���, �������� ��������� �� ����� ������.

"SMALL_REGISTER_CLASSES"

������ ���������� �������� �������� ��������, ������� ���� ���� ��������� � rtl, ��� spill-�������� (��, ������� ������������, ��� �������� ���������� � ������������� ��������). ������, ��������� ������ ����� ������� ���� ��������� ��������� �������, ��� �� ������ ���������, ����� ������������ �� ��� spill-��������, ���� ��� ���� ���������.

���������� "SMALL_REGISTER_CLASSES" �� ���� �������. ����� ��� ����������, ���������� ��������� ���������, ���� ������������ � rtl, �������������� ��� spill-��������, �� ������������� ���������� ������� ������������� ���� ���������.

���������� ��� ������������ ������ ���������, �� ���� �� ��� ������������� ����������� ��, �� � ��������� ������� �� ��������� ����������� �����������, ������� ����� �����������. ���� �� �� ����������� ��� ������������, ����� ��� ���������, ��� ���������� ��������� ��� spill-�������� � ���������� ��������� � ��������� ������. �� ����������� �����, �� �� ������ ���������� ��� ������������.

"CLASS_LIKELY_SPILLED_P (CLASS)"

��������� C, �������� �������� ������� �� ���� ���� ��������������, ������� ���� ��������� ��������� ������ CLASS, ����� ���� ������������ ��� spill-��������, ������ ��� �������� ������ CLASS ���������� ��� spill-���������.

�������� �� ��������� ���� ������������ ����� 1, ���� CLASS ����� ����� ���� �������, ����� - ���� . �� ����������� �����, ��� �������� �� ��������� ������ ��������������. ������ ���������� ��� ������������ ��� ��������� ������ ���������, ���� ��������������, �������������� "local-alloc.c", ������������� � ������, ������ ��� �� ���������� �������� ���� ���������� ��� spill-���������. ���� ��� ������������ ���������� �� ���� ��� ���� �������, ��� �������������� ����� ������������ "global.c", ������� �����, ��� ���������������� ������������� � ������ �������. ���� �� ������� �� ������� �������� ��� �����������������, ��� �� ��������� �� �������� ����������� ���� ������������, ��� ��� ������������ ������ ������ ����������� ��� �� ���������� ������������� ���������.

"CLASS_MAX_NREGS (CLASS, MODE)"

��������� C ��� ������������� ����� ���������������� ��������� ������ CLASS, ��������� ��� �������� �������� ���� MODE.

������������ ����� ������� � ������������� "HARD_REGNO_NREGS". ����������, �������� ������������ "CLASS_MAX_NREGS (CLASS, MODE)" ������ ���� ������������ ��������� "HARD_REGNO_NREGS(REGNO,MODE)" �� ���� ��������� REGNO � ������ CLASS.

��� ������������ �������� ��������� ���������� �������� � ����� ���� � �������� ������������.

"CLASS_CANNOT_CHANGE_SIZE"

���� ����������, �� ��� ��������� C ��� ������, ������� �������� ��������, � ������� ���������� ������ ������ ���������� � ����, ������ �������� - ��� ��, ��� � ����, � ������� �� �������� �������.

��� �������, �������� 32-������� ������ ����� ��� ����� � ��������� ������ � �������� � ��������� ������ �� ����� ��������� �� �� 64 �����. �������������, �������� 64-������� ������� � ����� ���������� ��� ��� 32-������� �� ��������� ������� 32 ����, ��� ���� �� � ������ ����������� ��������. ��� ��� "alpha.h" ���������� ��� ������������ ��� "FLOAT_REGS".

��� ������ ����������� ������������ ���������, ����� �������� �������� ��� ����� �������� �����������.

"CONST_OK_FOR_LETTER_P (VALUE, C)"

��������� C, ������� ���������� �������-��������� ������� ����������� �������� ������� ���������� ������������� ��������� ������������� ��������. ���� C - ���� �� ���� ��������, ��������� ������ ���������, ��� VALUE, ����� �����, ��������� � ��������������� ��������� � ���������� 1 ���� ��� ���, ����� - 0. ���� C - �� �������� ����� �� ���� ��������, �� �������� ������ ���� 0 ���������� �� VALUE.

"CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)"

��������� C, ������� ���������� �������-��������� ������� ����������� ��������, ������� ������������� ���������� ��������� �������� "const_double".

���� C - ���� �� ���� ��������, ��������� ������ ���������, ��� VALUE, RTX ���� "const_double", ��������� � ��������������� ��������� � ���������� 1 ���� ���, ����� - 0. ���� C - �� �������� ����� �� ���� ��������, �������� ������ ���� 0 ���������� �� VALUE.

"const_double" ������������ ��� ���� �������� � ��������� ������ � ��� "DImode" �������� � ������������� ������. ������ ������ ����� ��������� ����� ��� ��� ���� ��������. �� ����� ������������ "GET_MODE " ����� ��������� ��� ����.

"EXTRA_CONSTRAINT (VALUE, C) "

��������� C, ������� ���������� ������������ �������-��������� ������� �����������, ������� ����� ��������������, ����� �������� ������������� ���� ���������, ������ ������ � ������, ��� ������� ������. ������ ��� ������������ �� ����� ����������. ���� ��� ��������� ��� ������������� ������� ������, ��� ������ ���������� 1, ���� VALUE ������������� ���� ��������, ��������������� �������� ����������� C. ���� C �� ��������� ��� �������������� �����������, ������������ �������� ������ ���� 0 ���������� �� VALUE.

��������, �� ROMP, ������� �������� �� ����� ����� ����� � r0, ���� ������ � ������ �������� ������������� �����. ������ ����������� "Q" ��������� ��� �������������� ����� � ������, ������� *��* �������� �������������� ������. ������������ ���������� ��� "Q"-����������� �� ���� � "r"-����������� �� �����. ��������� ������������ ���������� "m" �� ����� � ����� ���������, ������� �� �������� r0 �� ������.

6.7 ������ ����� � ���������� � �������

����� ����������� ������ ����� � ���������� � �������.

6.6.1.�������� ��������� �����

��� �������� ��������� �����.

"STACK_GROWS_DOWNWARD" ("���� ������ ����")

���������� ��� ������������, ���� ��� ����������� ����� � ���� ��������� ����� ������������ �� ������� �����.

����� �� �������, "���������� ��� ������������, ���� ...", ��� ��������, ��� ���������� ��������� ��� ������������ ������ � "#ifdef", ��� ��� ������ ����������� �� ����� ��������.

"FRAME_GROWS_DOWNWARD" ("���� ������ ����")

���������� ��� ������������, ���� ������ ��������� ���������� ����� ������������� �������� ������������ ��������� �����.

"ARGS_GROW_DOWNWARD" ("��������� ������ ����")

���������� ��� ������������, ���� ���������������� ��������� � ������� �������� ������������� ������ � �����.

"STARTING_FRAME_OFFSET" ("��������� �������� �����")

�������� �� ��������� ����� �� ������ ��������� ����������, ������� ����� ���� ������������.

���� "FRAME_GROWS_DOWNWARD", �� �������� ��������� ��������� ���������� ����� ��������� ���������� ����� ������ ��������� ���������� �� "STARTING_FRAME_OFFSET". ��� �� ������������ ����� ������ ��������� ���������� � �������� "STARTING_FRAME_OFFSET".

"STACK_POINTER_OFFSET" ("�������� ��������� �����")

�������� �� �������� ��������� ����� �� ������� ������������, � ������� �������� ����������� ���������. ���� �� ����������, �� ������������ �������� �� ��������� - 0. ��� - ������ �������� ��� ����������� �����.

���� "ARGS_GROW_DOWNWARD", �� ��� - �������� � ������������ ��� ������ �������������, � ������� �������� ����������� ���������.

"FIRST_PARM_OFFSET (FUNDECL)" ("�������� ������� ���������")

�������� ��������-��������� ���������� �� ������ ������� ���������. �� ��������� ������� ��� ����� �������� �� ���� �������.

���� "ARGS_GROW_DOWNWARD", ��� - �������� ������������ ��� ������� ������� ���������.

"STACK_DYNAMIC_OFFSET (FUNDECL)" ("������������ �������� �����")

�������� �� �������� ��������� ����� �� ����, ��� ����������� ��������� � �����, �������� "alloca".

�������� �� ��������� ��� ���� ������������ - "STACK_POINTER_OFFSET" ���� ����� ����������. �������� �� ��������� ��������� ��� ����������� �����. ��. ����������� � "function.c".

"DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)" ("������������ ����� ����")

��������� C, �������� �������� - RTL-������������� ������ � ����� �����, ��� �������� ��������� �� ���� ���������� �������. ������ � ����, ��� FRAMEADDR - RTL-��������� ��� ������ ������ ����� �����.

���� �� �� ����������� ��� ������������, �� ��������� ������ ���� ���������� �������� FRAMEADDR - �� ���� ����� ����� �����, ��� ����� ����� �����, ������� ��������� �� ���������� ����.

"SETUP_FRAME_ADDRESSES ()"

���� ����������, �� ��� ��������� C, ������� ���������� ������� - ������������� ��� ��������� ����� � ����� ���������, ����� ����� ���� ���������� � ������������ ������. ��������, �� Sparc, �� ������ �������� ��� ���� ��������� � ���� ������, ��� �� ����� ���������� � ������������ ������. ��� ������������ ����� ���� ����������.

"RETURN_ADDR_RTX (COUNT, FRAMEADDR)"

��������� C, �������� �������� - RTL-������������� �������� ������ �������� ��� COUNT �����, ���������� �� �������� �����. FRAMEADDR - ��������� COUNT �����, ��� ��������� �� COUNT-1 �����, ���� "RETURN_ADDR_IN_PREVIOUS_FRAME" ����������.

"RETURN_ADDR_IN_PREVIOUS_FRAME"

���������� ��, ���� � ������ �������� ����������� ����� ����� ���������� �� ��������� ����������� ����� �����.

��������, ���������� ���� �����

���������� ���������, ���������� ���� �����.

"STACK_POINTER_REGNUM"

����� �������� ��������� �����, ������� ������ ����� ���� ������������� ��������� �� "FIXED_REGISTERS". �� ����������� �����, ���������� �������� ����������, ����� ��� �������.

"FRAME_POINTER_REGNUM"

����� �������� ��������� �����, ������� ������������, ����� ���������� � �������������� ���������� � ����� �����. �� ��������� �������, ���������� �������� ����������, ����� ��� �������. �� ������ ������� �� ������ �������� ����� �������, ����� ���������, ��� ���� ����.

"HARD_FRAME_POINTER_REGNUM"

�� ��������� ������� �������� ����� ���������� ����� � ��������� ��������� �������������� ���������� ����������, ���� �� ��������� ������������� ��������� (��������, ������ ��� ����������� �������� - ����� ����� ����� ��������������). �� ����� ������� ���������� "FRAME_POINTER_REGNUM" ��� ����� ������������, �������������� ��������, ������� ������ �������������� ������ (internally), ���� �������� �� ������ ���������, � ���������� "HARD_FRAME_POINTER_REGNUM" ��� ����������� ����� ����������� ��������, ������������� ��� ��������� �����.

�� ������ ���������� ��� ������������ ������ � ����� ������ ������, ����� ���������� ��������� �������� ����� ���������� ����� � ��������������� �����������, ���� ������������� ��������� �� ���� ���������. ����� ��� ������������ ����������, �� ������ ����� ������� � ����� ����������� "ELIMINABLE_REGS", ��� �������� "FRAME_POINTER_REGNUM" �� "HARD_FRAME_POINTER_REGNUM" ��� �� "STACK_POINTER_REGNUM".

�� ����������� ��� ������������, ���� ��� ��������� �� � "FRAME_POINTER_REGNUM".

"ARG_POINTER_REGNUM"

����� arg �������� ���������, ������� ������������ ��� ��������� � ������ ���������� �������. �� ��������� �������, ��� - �� ��, ��� � ������� ��������� �����. �� ��������� �������, ���������� �������� ����������, ����� ��� �������. �� ������ ������� �� ������ ������� ����� �������, ������� ���������, ��� ���� ����. ���� ��� - �� ��� �� ����� �������, ��� � ������� ��������� �����, �� �� ������ �������� ��� ��� ������������� ������� �� "FIXED_REGISTERS", ��� ������� ���� ��� ���������� ��� (*�������� �������� �� ��������::.).

"STATIC_CHAIN_REGNUM", "STATIC_CHAIN_INCOMING_REGNUM"

������ ���������, ������������ ��� �������� ��������� ����������� ���� �������. ���� ������������ ���� ���������, �� ��� ����� ��������, ������� ���������� �������� - "STATIC_CHAIN_INCOMING_REGNUM", � �� ����� ��� ����� ��������, ������� ��������� �������� - "STATIC_CHAIN_REGNUM". ���� ��� �������� ���� � �� ��, �� "STATIC_CHAIN_INCOMING_REGNUM" �� ������ ���� ����������.

����������� ������� ���� �� ������ ���� ������������� ���������.

���� ����������� ������� �������� � ������, ��� ������������ �� ������ ���� ����������; ������ ����� ������ ���� ���������� ��������� ��� ������������.

"STATIC_CHAIN"

"STATIC_CHAIN_INCOMING"

���� ����������� ������� �������� � ������, ��� ������������ ������������ rtx ������ ��������� "mem", ������� ����������, ��� ��� ���������. "STATIC_CHAIN" � "STATIC_CHAIN_INCOMING" ������ ������ �������� ��� ����������, ��� � ���������� ��������, ��������������. ����� ������ ����� ��� �������� �� ��������� ����� � ��������� ��� �������� �� ��������� �����.

���������� "stack_pointer_rtx", "frame_pointer_rtx" � "arg_pointer_rtx" ����� ������������������� �� ������������� ���� ����������� � ������ �������������� ��� ��������� � ���� ����������.

���� ����������� ������� �������� � �������, ��� ���������� ������������ ������ ���� ���������� ������ ����.

�������� ��������� ����� � ��������� ����������

��� �������� �������� ��������� ����� � ��������� ����������.

"FRAME_POINTER_REQUIRED"

��������� C, ������� ������� �� ����, ���� ������� ����� � ���������� ��������� �����. ��� ��������� ����������� � �������� ������������. ���� �������� ������� �� ����, ������� ����� ����� ��������� �����.

��� ��������� ����� � �������� ����������� ������� ������� � ������, �������� �� �����, �� �� ����������� �����, ���������� �������� 0 � 1. ����������� 0, ����� ������ ��������� ���� ���� ���������������� ��� ��������� �����, � ��� ��������� ������� ������� � �����. ����������� 1, ����� ��� ������������ �� ���������� ��������� �����.

� ��������� �������, ���������� �� �����, ��� ���������� ���������� ��� ��� ��������� �����. ���������� ���������� ����� ������ � ������������� ������ ��������� ����� ��� �������, ���������� �� �������� "FRAME_POINTER_REQUIRED". �� ���� ������������ � ���.

� �������, ������� �� ��������� ��������� �����, ������� ��������� ����� ����� ���� ����������� ��� �������� �������������, ���� �� �� �������� ��� ��� ������������� �������. ��� �������������� ���������� �� ���� ����� "FIXED_REGISTERS".

"INITIAL_FRAME_POINTER_OFFSET (DEPTH-VAR)"

�������� C ���������� � ���������� DEPTH-VAR �������� ����� ���������� ����� � ���������� ����� ����� ����� ������� �������. �������� ���� �� ��������� �� ���������� ���� ���������� "get_frame_size()" � ������ ��������� "regs_ever_live" � "call_used_regs".

���� "ELIMINABLE_REGS" ����������, ��� ������������ �� ����� �������������� � �� ������ ���� ����������. ����� ��� ������ ���� ����������, ���� ���� "FRAME_POINTER_REQUIRED" ���������� ��� ������������ ��������; � ���� ������, �� ������ ��������� DEPTH-VAR ����� ��������.

"ELIMINABLE_REGS"

���� ����������, ��� ������������ ���������� ������� ��� ���������, ������������ ��� ���������� �������� ���������, ������� ��������� �� ���� �����. ���� �� ����������, ������������ ��������, ������� ���������� �������� ������� - ������ ������ �� ��������� ����� �� ������ �� ��������� �����.

����������� ���� ������������ ������� � ������ ������������� ��������, ������ �� ������� ���������� ������������ ������� � ������� ������.

�� ��������� ������� ������� ��������� ���������� ����������, ���� ���������� �� ���������. � ����� ������, ��������� ���������� ������� ������ �������������� ��� ��������� ����������. ���� ������� ����� ���� ������ ����� ������ �� ��������� ����� ��� �� ��������� ����������, � ����������� �� ����, ������ ��� �� ������ ��������� �����.

� ���� ������, �� ����� �� ����������: #define ELIMINABLE_REGS \ {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \ {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}

�������� ��������, ��� �������� ��������� ���������� � ���������� ����� ���������� �������, ��� ��� ��� �������� ���������������.

"CAN_ELIMINATE (FROM-REG, TO-REG)"

��������� C, ������� ���������� ��������, �������� �� ����, ���� ����������� ����������� ��������� �������� ������� ����� FROM-REG �� ������� ����� TO-REG. ��� ������������ ������ ���� ���������� ������ ���� ���������� "ELIMINABLE_REGS", � ����� ������ ����������� 1, ��� ��� ����������� �������, ��������������� �������� �������� - ���� � ������� ���������� ��� �����.

"INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)"

��� ������������ ������� "INITIAL_FRAME_POINTER_OFFSET". ��� ���������� ��������� �������� ����� ����� ���������. ������������ ������ ���� ����������, ���� "ELIMINABLE_REGS" ����������.

"LONGJMP_RESTORE_FROM_STACK"

����������� ��� ������������, ���� ������� "longjmp" ��������������� �������� �� ����� �����, � �� �� ����������� "setjmp". ��������� �������� �� ������ ����������� � ��������� �� ����� ��������� � "setjmp" �� ����� �������.

�������� ���������� ������� ����� ����

������������ � ���� ������� ��������� ���, ��� ��������� ���������� � ����. ��. ��������� ������ � ������ �������������, ������� ��������� ��������� ���������� ����� ���������� ����� ��������.

"PROMOTE_PROTOTYPES"

����������� ��� ������������, ���� ��������, ����������� � ��������� ��� ����� ��� �������, ��� "int", ������ ���������� ���� ������� ��� "int". � ���������� � ��������� ������ � ��������� ������� ��������������, ��� ����� �������� � ������� ���� �� ��������� �������.

"PUSH_ROUNDING (NPUSHED)"

��������� C, ������� �������� ������ ����, ���������� ���������� ����� ����, ����� ������� �������� �������� NPUSHED ����.

���� ������� ������ �� ����� ������� push ("��������� � ����"), �� ����������� ��� ������������. ��� ��������� GNU CC ������������ �������������� ���������: ������������ ���� ���� ���������� � ����� ��������� ��������� � �����.

�� ��������� �������, �����������

 #define PUSH_ROUNDING (BYTES) (BYTES)
����� � ����� ���. �� �� ������ ������� �������, ������� �������� � ���� ���� ����, ���������� �������� ��� �����, ����������� ������������. ����� ����������� ������ ���� :

 #define PUSH_ROUNDING (BYTES) (((BYTES) + 1) � ~1)
"ACCUMULATE_OUTGOING_ARGS"

���� ����������, �� ������������ ������ �������, ��������� ��� ����������, ����� �������� � ����� ������� � ���������� "current_function_outgoing_args_size". ������ �� ����� ���������� �� ���� ��� ������ ������; ������ ����� ������ ������� ������ ��������� ������ ����� ����� �� ��� ���������� ����.

������ ���������� "PUSH_ROUNDING" � "ACCUMULATE_OUTGOING_ARGS" ������������.

"REG_PARM_STACK_SPACE (FNDECL)"

���������� ��� ������������, ���� ������� ������������, ��� ����� � ����� ������������ ��� ���������� ���� ����� �� �������� �������� � ���������.

�������� ���� ������������ - ������ � ������ �������, ����������������� ��� ����������, ���������� � ��������� �������, �������������� FNDECL.

��� ����� ����� ���� ������������ ���������� ��������, ��� ���� ������ �������-���������� ����� �����: "OUTGOING_REG_PARM_STACK_SPACE" �������, ��� ��� �����������.

"MAYBE_REG_PARM_STACK_SPACE" "FINAL_REG_PARM_STACK_SPACE(CONST_SIZE, VAR_SIZE)"

���������� ��� ������������ � ���������� � ��������� ����, ���� ������� ����� ������������ ����� � ����� ��� ���������� ���� ����� �� �������� �������� ����� ��������. ��� ������ ��������������, ����� ����� � �����, �������������� ��� ���������� � ��������� - �� ������� ���������, ����������� �� ���������� �������.

�������� ������ ������������ - ������ � ������ �������, ������� �� ������ ������������� ������� ����������������� ��� ����������, ���������� � ���������.

�������� ������ ������������ - ����������� ������ � ������ �������, ������� ����� ��������������� ��� ����������, ���������� � ���������. � ��� ��� ���������: ����� �����, �������������� ����� ���� ���������� �������������� �������, � ������, �������������� ����� ���� ���������� ����������� �������, ���������� � ����.

����� ��� ������������ ����������, "REG_PARM_STACK_SPACE" ����� ���������� ������ ��� ������� libcall, ������� ������� � ��� �������, ����������, ����� � ��� ��������, ��� ����� ����� � ����� ������ ���� ������������. � ����� ������ ��� �������� ����� ���� ����� ���������.

��� ���������, ��������� �� ���������� ������� � ����� ������������ �����, � ������� ���� �������������, GNU CC ���������� ��� ��� ������������ ������ "REG_PARM_STACK_SPACE".

"OUTGOING_REG_PARM_STACK_SPACE"

���������� ��, ���� ���������� ������� ������� ������������ �������, ����������������� ��� ����������, ���������� � ���������.

���� "ACCUMULATE_OUTGOING_ARGS" ����������, ��� ������������ ���������, �� ����������� �� ����� ��� ���������� �������� "current_function_outgoing_args_size".

"STACK_PARMS_IN_REG_PARM_AREA"

���������� ��� ������������, ���� "REG_PARM_STACK_SPACE" ����������, �� �������� ��������� �� ���������� �������, ������������ ��.

������, ����� �������� �� ������� � ���������, �� ������� � ���� �� "REG_PARM_STACK_SPACE" ��������. ����������� ���� ������������ ��������� ����� ��������� � ���������� �������� ������������ � ���� �� ������������ �����.

"RETURN_POPS_ARGS (FUNDECL, FUNTYPE, STACK-SIZE)"

��������� C, ������� ������ ������� ������ � ������ ���������� �������, ������� ��� ����������� ��� ��������, ��� 0, ���� ������� �� ����������� ���������, � ���������� ������� ������ ������������� ���������� �� ����� �������� �� �������.

FUNDECL - ���������� C, �������� ������� - ���� ������, ������� ��������� ��������������� �������. ������ ��� - ���� ���� "FUNCTION_DECL", ������� ��������� ���������� �������. �� ��� ����� �������� DECL_MACHINE_ATTRIBUTES ��� �������.

FUNTYPE - ���������� C, �������� ������� - ���� ������, ������� ��������� ��������������� �������. ������ ��� - ���� ���� "FUNCTION_TYPE", ������� ��������� ��� �������. �� ��� ����� �������� ���� �������� � ���������� (���� ��� ����).

����� ��������������� ��������� � ������������ �������, FUNTYPE ����� ��������� ������������� ���� ��� ������������ �������. ����� �������, ���� ����� ��������� ������������ �������, �� ������ ������� ��� �� �� ������. �������� ��������, ��� "������������ �������" � ���� ��������� �������� �������������� �������, ��� ������� �������� ������ ����������� � �� ��������� � ������������� C-����.

STACK-SIZE - ����� ������ ����������, ���������� � ����. ���� �������� ���������� ����� ����, ��� - ����, � ������������ ���������� ������ ����� ������������ ���������� �������.

�� Vax ��� ������� ������ ����������� ���� ���������, ��� ��� ����������� ���� ������������ - STACK-SIZE. �� 68000, �������� ������������ ���������� � �������, ������� ������� �� ����������� ���� ���������, ��� ��� �������� ������������ - ������ 0 � ���� ������. �� �������������� ���������� � ������� ����� �����, ���� �������, ������� ����� ������������� ����� ����������, ����������� ��, �� ������ ������� (���� "printf") �� ����������� ������ (���������� ������� ������ ��� �� ���). ����� ������������ ��� ����������, ����������� FUNTYPE ��� �����������, ����� �� ������� ������������� ����� ����������.

�������� ���������� � ���������

���� ������ ��������� ������������, ������� ��������� ��� ��������� ���, ��� ��������� ���� ���������� ���������� � ��������� ��� ��� ��� ����������� � �����.

" FUNCTION_ARG (CUM, MODE, TYPE, NAMED) "

��������� C, ������� �������� ���, ���������� �� �������� ������� � ��������, � � ����� ��������.

��������� - CUM, ������� ��������� ��� ���������� ���������; MODE, �������� ��� ���������; TYPE, ��� ������ ��������� ��� ���� ������ ��� 0, ���� �� �� �������� (��� ������ ��� ������������ ������� ��������� C); � NAMED, ������� ����� 1 ��� �������� �������� � 0 ��� ���������� ����������, ��� ������������ " ... " � ��������� ���������� �������.

�������� ��������� ������ ���� ��� " reg " RTX ��� ����������� ��������, � ������� ������� ���������� ��������, ��� ���� ��� �������� ��������� � �����.

��� ����� ������� Vax � 68000, ��� ������ ��� ��������� ���������� � �����, ����� �������� � �������� ����������� ������������� ����.

������� ������ ��������� ANSI ���������� " stdarg.h " �������� �� ������, �� ������� ��������� ��������� ������ ���������� � ���������, ����������� � �������� ����� ���� ���������� ����������. ��� ����������� ������������ " FUNCTION_ARG " 0 ������ ���, ����� NAMED ����� 0.

�� ������ ������������ ������������ " MUST_PASS_IN_STACK (MODE, TYPE) " � ����������� ���� ������������, ����� ����������, ����� �� ���� �������� ���, ������� ������ ������������ � �����. ���� " REG_PARM_STACK_SPACE " �� ���������� � " FUNCTION_ARG " ���������� �������� �� ���� ����� ��� ������ ���������, ���������� ������� ������. ���� " REG_PARM_STACK_SPACE " ����������, �������� ����� �������� � ����� � ����� �������� � �������.

" FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED) "

���������� ��� ������������, ���� ������� ������ ����� " ���� �������� ", �� ���� �������, � ������� ������� ����� ���������, �� ����������� �������� ���, � ������� ���������� ������� �� ��������.

��� ����� ����� " FUNCTION_ARG " ��������� �������, � ������� ���������� ������� �������� ��������, � " FUNCTION_INCOMING_ARG " ������ ������������ �������� �������� � �������� ���������� �������, ��� �������� ���������.

���� " FUNCTION_INCOMING_ARG " �� ����������, " FUNCTION_ARG " ������ ��� ����� �����.

" FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED) "

��������� C ��� ����� ����, � ������ ���������, ������� ������ ���� �������� � ��������. �������� ������ ���� ����� ��� ����������, ������� ��������� ���������� � ��������� ��� ��������� ���������� � ����.

�� ��������� ������� ������������ ��������� ������ ������������ �������� � ��������� � �������� � ������. �� ���� ������� ������ ������ N ���� ���������� ���������� � ���������, � ��������� - � �����. ���� ��������, ��������� �� ���������� ���� (" double " ��� ���������), ���������� ��� �������, ��� ������ ��������� ���� ������ ������������ � ���������, � ��������� - � �����. ��� ������������ �������� �����������, ����� ��� ���������� � ������� ���� ������ ���� � ��������.

" FUNCTION_ARG " ��� ���� ���������� ������ ���������� ������ �������, ������� ������ �������������� ���������� �������� ��� ����� ���������; ���������� " FUNCTION_INCOMING_ARG " - ��� ���������� �������.

" FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED) "

��������� C, ������� ���������, ����� �������� ������ ������������ �� ������. ���� ��� ������� �� ���� ��� ���������, � ������ �������� ����� ����� ��������� � ��������� �� �������� ���������� ������ ���� ������. ��������� ���������� ����� ��������, ��������������� �������� ��������� �� ���� ���.

�� �������, ��� " REG_PARM_STACK_SPACE " �� ����������, ����������� ���� ������������ ����� ��������� ���:

           #define FUNCTION_ARG_PASS_BY_REFERENCE\
           (CUM, MODE, TYPE, NAMED)  \
             MUST_PASS_IN_STACK (MODE, TYPE)
" FUNCTION_ARG_CALLEE_COPIES (CUM, MODE, TYPE, NAMED) "

���� ����������, ��������� C, ������� ��������� ����� ������ �������� ����� ����������, ���������� �� ��������� ������, ����������� �� ���������� �������. ������ ���������� ������� ������ ����� � �������� �� ����� ���������� ������������. ����� FUNCTION_ARG_CALLEE_COPIES ���������� � ������� �� ����, ���������� ������� �� ������ �����. ������ ����� ��� �������� ��������� �� "���������" ��������. ���������� ������� �� ������ �������� ��� ��������. ���� ����� ����������, ����� �� �������� ����������, ������ ����� �� �����������; ����� ����� ������ ���� �������.

" CUMULATIVE_ARGS "

��� C ��� ���������� ����������, ������� ������������ ��� ������ �������� " FUNCTION_ARG " � ������ ��������� ��������. ��� ��������� ������� ����� ��� " int " �������� ��� ���� ���� � ����� ������� ���������� ������.

��� ������������� ���������� � " CUMULATIVE_ARGS " ���-���� � ����������, ������� ���������� ����� ����. ���������� ������ ����������, ����� ������� �� ����. ��� ������� �����, �� ������� ��� ��������� ���������� ����� ����, ��� ������������� ���������� ���-���� � " CUMULATIVE_ARGS "; ������, ��������� ������ ������ ������������ � �� ������ ���� ������, ��� ��� ����������� " int ".

" INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME) "

�������� C (��� ����� � �������) ��� ������������� ���������� CUM ��� ��������� � ������ ������ ����������. ���������� ����� ��� " CUMULATIVE_ARGS ". �������� FNTYPE - ���� ������ ��� ���� ������ �������, ������� ������� ���������, ��� 0 ���� ��������� - ��� ������������ ������� ��������� �����������.

��� ��������� ��������� � ������������ ������� ��������� �����������, LIBNAME ����������, � ����� ������. ��� - " symbol_ref " rtx, ������� �������� ��� ������� ��� ������. LIBNAME ����� 0, ���� �������������� ������� ��������� � ������� C. ����� �������, ������ ��� ��� ������������ ����������, ��� LIBNAME, ��� FNTYPE ������� �� ����, �� �� ��� �����.

" INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME) "

������� " INIT_CUMULATIVE_ARGS ", �� ����������� �� ��� ����� ���������� ���������� ��� ������������� �������. ���� ��� ������������ �� ����������, ������������ " INIT_CUMULATIVE_ARGS ".

��������, ������������ ��� LIBNAME - ������ 0, ������ ��� ������������ ������������ �� ������������ ������������ � ������� ������� �� ������������� GNU CC. �������� LIBNAME ���������� ��� ��������� � " INIT_CUMULATIVE_ARGS ".

" FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED) "

�������� C (��� ����� � �������) ��� ����������� ��������� ���������� CUM ���� ��������� � ������ ����������. �������� MODE, TYPE � NAMED ��������� ���� ��������. ��� ������ ��� ���������, ���������� CUM �������� ��� ������� *����������* ��������� ��� ������ " FUNCTION_ARG ", � �.�.

��� ����� �� ������ ������ ������, ���� ��������������� �������� ���������� � �����. ���������� �����, ��� ����������� ���������� ���������� ����� � �����, ������������� ��� ����������, ��� ����������� ������.

" FUNCTION_ARG_PADDING (MODE, TYPE) "

���� ����������, ��������� C, ������� ����������, ��������� ��, � � ����� ����������� �������������� ������������ ���������. �������� ������ ����� ��� " enum direction ": " upward ", ����� ��������� ������, " downward ", ����� ��������� �����, ��� " none ", ����� ��������� ����������.

*�������* ���������� ������ � �������� ����������, ����� ���������� ���������� �������� " FUNCTION_ARG_BOUNDARY "; ��� ������������ �� ��������� ����.

��� ������������ ����� �������� �� ��������� �����������, ������� �������� ���������� ��� ����������� ������. ��� little-endian ����� �������� �� ��������� - �����. ��� big-endian ����� - ���� ��� ��������� ����������� �������, ������ ��� " int ", � ����� � ��������� ������.

" FUNCTION_ARG_BOUNDARY (MODE, TYPE) "

���� ����������, ��������� C, ������� ���� ������� ������������, � �����, ��������� � ���������� ����� � �����. ���� ��� �� ����������, ��� ���� ���������� ������������ " PARM_BOUNDARY ".

" FUNCTION_ARG_REGNO_P (REGNO) "

��������� C, ������� �������� �������� �� ���� ���� REGNO - ����� ����������� ��������, � ������� ������ ���������� ��������� �������. ��� *�� ��������* ������� ��������� ���� ����������� ������� � ����� �������� ���������. �� ������ ������� ������� �������� �� ����� �������������� ��� ���� ����, ��� ��� ��� ��������� ������� ���������� ����� ����.

��� ������������ �������� ��������� �������

� ���� ������� ����������� ������������, ������� ��������� ������������ �������� ��� �������� - ��������, ������� ���������� � ���������.

" TRADITIONAL_RETURN_FLOAT "

���������� ��� ������������, ���� " -traditional " �� ������ ���������� �������, ����������� ������������� " float ", ��������������� �������� � " double ".

" FUNCTION_VALUE (VALTYPE, FUNC) "

��������� C ��� �������� RTX ������������� �����, ��� a ������� ���������� �������� ���� ������ VALTYPE. VALTYPE - ���� ������, �������������� ��� ������. ������ " TYPE_MODE (VALTYPE) ", ����� �������� �������� ���, ������������, ����� ����������� ���� ���. �� ������ �������, ������� ������ ���. (����������, �� ����������� �����, ��������� �������� ������������ � ����� � ��� �� ����� ���������� �� ����).

���� " PROMOTE_FUNCTION_RETURN " ����������, �� ������ ��������� �� �� ������� ���������, ��� � ������������ � " PROMOTE_MODE ", ���� VALTYPE - ��������� ���.

���� ������ ���������� ������� ��������, FUNC - ���� ������ (" FUNCTION_DECL ") ��� ���; �����, FUNC - ������� ���������. ��� ������ ��������� ������������ ��������� ���������� � ����������� �������� ��� ��������� �������, ����� �������� ��� ��������� � ���.

" FUNCTION_VALUE " �� ������������ ��� �������� �������� ��������� ����� ������, ������ ��� ��� ������������ ������ ��������. ��. ���� " STRUCT_VALUE_REGNUM " � ��������� � ��� ������������.

" FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC) "

���������� ��� ������������, ���� ������� ������ ����� " ���� �������� ", �� ���� �������, � ������� ������� ����� ���������, �� ����������� �������� ���, � ������� ���������� ������� �� ��������.

��� ����� ����� " FUNCTION_VALUE " ��������� �������, � ������� ���������� ������� ������� ��������, � " FUNCTION_INCOMING_ARG " ������ ������������ �������� �������� � �������� �������, ���� �������� ���������.

���� " FUNCTION_OUTGOING_VALUE " �� ����������, " FUNCTION_VALUE " ������ ��� ����� �����.

" FUNCTION_OUTGOING_VALUE " �� ������������ ��� �������� �������� ��������� ����� ������, ������ ��� ��� ������������ ������ ��������. ��. ���� " STRUCT_VALUE_REGNUM " � ��������� � ��� ������������.

" LIBCALL_VALUE (MODE) "

��������� C, ����� ������� RTX ������������� �����, ��� ������������ ������� ���������� �������� ���� MODE. ���� ������ ���������� ������� ��������, FUNC - ���� ������ (" FUNCTION_DECL ") ��� ���; �����, FUNC - ������� ���������. ��� ������ ��������� ������������ ��������� ���������� � ����������� �������� ��� ��������� �������, ����� �������� ��� ��������� � ���.

�������� ��������, ��� "������������ �������" � ���� ��������� �������� ������������ ��������� �����������, ������������ ��� ���������� �������������� ��������, ��� ��� ���������� ������� ����������� � �� ���� ��������� � ������������� C ����.

����������� " LIBRARY_VALUE " �� ������ �������� ��������� ����� ������, ������ ��� �� ���� �� ������������ ������� �� ���������� ����� �����.

" FUNCTION_VALUE_REGNO_P (REGNO) "

��������� C, ������� �������� �������� �� ����, ���� REGNO - ����� ����������� ��������, � ������� ����� ������������ �������� ���������� �������.

�������, ��� ������������� ��� �������� �������� ���������� ������������� ��� ������� � ���� (��� �������� ���� " double ", ��������), �� ��������� ������������ ���� �������������. ������� ��� ����������� �����, ���������� ������ �����������:

           #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
���� ������ ����� ���� ��������, ���, ����� ���������� � ���������� ������� ���������� ��������� �������� ��� �������� ��������, ��� ������������ ������ ���������� ������ ������ ��������� ���������� �������.

" APPLY_RESULT_SIZE "

���������� ��� ������������, ���� " untyped_call " � " untyped_return " ��������� ������ �����, ��� ��������������� " FUNCTION_VALUE_REGNO_P ", ��� ���������� � �������������� ������������� ������������� ��������.

��� ������������ ����������������� ��������

����� ��� �������� ������� - " BLKmode " (� � ��������� ������ �������), �������� �� ������������ �������� " FUNCTION_VALUE " (*��.:������� ��������::.). ������ ����� ���������� ������� �������� ����� ����� ������, � ������� �������� ������ ���� ���������. ���� ����� ���������� " ����������� ������� �������� ".

���� ������ ���������, ��� ��������� ��������� �������� �������� � ������.

" RETURN_IN_MEMORY (TYPE) "

��������� C, ������� ����� ��������� ������� ������������ �������� ������� � ���������, ����������� �� ���� ��������. ��������� �������� ������� �������� �������� ������� � ������, ���, ��� ��� �������� ��� ������� ��������. ����� TYPE ����� ��������� C ���� " tree ", ����������� ��� ������ ��������.

�������� ��������, ��� �������� ���� " BLKmode " ������ ���� �������������� ���� �������������. �����, ����� " -fpcc-struct-return " ����� ������ ���������� �� ���� ������������. �� ����������� ������ ����� �������� ������������ ��������������; ����� ������������ ����������� �� ���������, ��� �������� - ��������� 1 ��� �������� ` BLKmode ' � 0 � ��������� ������.

�� ����������� ��� ������������, ����� �������, ��� ��������� � ����������� ������ ������ ������������ � ������. �� ������ ������������ " DEFAULT_PCC_STRUCT_RETURN ", ����� ������� ���.

" DEFAULT_PCC_STRUCT_RETURN "

���������� ��� ������������ ��������� 1, ���� ��� ������������ �������� �������� � ����������� ������ ���� � ������. ��� ��� ��� �������� � ����� ���������� ����, ��� ������ ��������, ������ ���� ��� ���������� ��� ������������� � ������� ������������� ��� � ABI. ���� �� ����������� ��� ������������ ��������� 0, �� ����������, ������������ ��� ������������ �������� �������� � �����������, ������������ ������������� " RETURN_IN_MEMORY ".

�� ��������� �������� ����� 1.

" STRUCT_VALUE_REGNUM "

���� ����� �������� ��������� ���������� � ��������, �� " STRUCT_VALUE_REGNUM " ������ ���� ������� ����� ��������.

" STRUCT_VALUE "

���� ����� �������� ��������� �� ���������� � ��������, ���������� " STRUCT_VALUE " ��� ���������, ������������ RTX ��� �����, ��� ����� ����������. ���� ������������ 0, ����� ���������� ��� "���������" ������ ��������.

" STRUCT_VALUE_INCOMING_REGNUM "

��� ��������� ������������ - �����, ��� ���������� ������� ������� ����� �������� ��������� - �� �� �� ����� �����, ���� ��� �������� ����������. ��� ����� ���� ��-�� ����������� ���� ��� ��-�� ����, ��� ������ ������� ���������� ��� � ������ �����.

���� �������� ������������ ������ �������� ��������� ��������� � ��������, ���������� ��� ������������ ��� ����� ��������.

" STRUCT_VALUE_INCOMING "

���� �������� ������������ - �� �������, �� �� ������ ���������� " STRUCT_VALUE_INCOMING " ��� ��������� ��� RTX, ���������� �����, � ������� ���������� ������� ������ ����� ��������. ���� ��� ������ ����� ��� � �����, ���������� �� ��� " mem ", ������� ��������� �� ��������� �����. ����������� ����� ��������, ��� ����� ���������� ��� "���������" ������ ��������.

" PCC_STATIC_STRUCT_RETURN "

���������� ��� ������������, ���� ������� ��������� ���������� �� ������� ������ ��� �������� �������� � ����������� ����������� � ���, ��� ���������� ������� ������ ���������� ����� ����������� ����������, ���������� ��������.

�� ���������� ��, ���� ������� ��������� ���������� ������� ����������� � ���, ��� ���������� ������� �������� ����� ������������.

��� ������������ ����� ������ � ���� " -fpcc-struct-return " , �� �� ������ ����, ����� �� ����������� ��� " -freg-struct-return ".

������������� ��������� � �����������

���� �� ���������� ���, GNU CC ����� ��������� �������� �� ����� ��������� � �������. ��� ������ ��������� ������������� ���������� ��������� ��� ���������� ����������, ������� ������ ������������ � ��, � ����� ���������.

" DEFAULT_CALLER_SAVES "

���������� ��� ������������, ���� ��������� � ������� �� ������� ������ �� ��������� ������� ���������; ������� �������, ���� " CALL_USED_REGISTERS " ����� 1 ��� ���� ���������. ��� ������������ ��������� " -fcaller-saves " �� ���������. � �������� ����� ��� ����� ����� ����������� �� ��������� �� ���� ������� � ��� �����, ��� � ��� ������������ ����� �������.

" CALLER_SAVE_PROFITABLE (REFS, CALLS) "

��������� C, ������� ����������, ����� �� ����� ����������� ���������� �������������� � ���������� ���������� �������� � ��������� � ��������������� ��� ��� ������ ��������� � �������. ��������� ������ ���� ����� 1, ���� ��� ������� ���������, � 0 - ���� ���.

���� �� �� ����������� ��� ������������, ������������ �������� �� ���������, ������� �������� �������� ��� ����������� �����: " 4 * CALLS < REFS ".

���� � ����� �� �������

���� ������ ��������� ������������, ������� ������� ��� ����� ������� ("������") � ������ ("������").

" FUNCTION_PROLOGUE (FILE, SIZE) "

��������� �������� C, ������� ������� ��� ���������� ��� ����� �������. ������ ������������ �� ��������� ����� �����, ������������� �������� ��������� �����, ���������� ���������, ������� ������ ���� ��������� � ������������� SIZE �������������� ������ � ������ ��� ��������� ����������. SIZE - ����� �����. FILE - stdio ����� (����� ������������ �����-������), � ������� ������ ���������� ��� ����������.

����� ��� ������ ������� �� ������ ���������� ���� �������������. ��� ����������� ��� ������� ������������.

����� ����������, ����� �������� ���������, ������������ ����� ���������� � ������� " regs_ever_live ": ������� R ������� �� ����, ���� ���������� ��������� R ������������ ���-������ ������ �������. ��� �������������, ��� ������ ������� ������ ��������� ������� R, ���� ��� - �� ���� �� ������������ ���������� ��������. (" FUNCTION_EPILOGUE " ������ ���������� ������������ " regs_ever_live ".)

�� �������, ������� ����� " ���� �������� ", ��� ����� ������� �� ��������� � ����� ��������, ������� ��������� � �����, ���� ���� ��������������, ��� ��� ������ ����������� ��� ��������� � �������; ������ ����� ��������� ��������������� ����, ����� "���������" � ���� �������, ���� �����-�� ��������, �� ������������ � ������, ������������ � �������.

�� �������, ��� ������� ����� ����� ��� ����� �� ����� ��������� �����, ��� ����� ������� ������ ���������� ��������������; �� ������ ������������� ��������� �����, ���� �� ���������, � �� ������������� � ��������� ������. ����� ���������� ����� �� ��������� �����, ������������ ����� ���������� � ���������� " frame_pointer_needed ". �������� ���������� ����� 1 �� ����� ���������� �������, ������� ��������� � ��������� �����. * ��.: ��������::.

��� ����� ������� ������������ �� ������������� ������ ����� � �����, ���������� ��� �������. ���� ������������ ������� �� ��������, ������������� ����. � ����������� ������� ��� �������, �������������� � ������������� �������, ������ ��������� ��������� ������� - ����� ������� � ������� ����� (���������� �����, ���� " STACK_GROWS_DOWNWARD " ����������, � ���������� �����, ���� �� ����������). �� ������ ������������ ������ ������� ��� ������, ���� ��� ����� ������� ��� ��������� �� �������� �������������. �� ����������� �������, ����� ��� ��������� ���������� ��� ����������, �� ������� ������� ������� �������, ��� ������������� �����, ������������ GCC, ������ ��������������� � ������������ ������� ������������� ��� ������.

������, ��� ���������� ��� ����������� " FUNCTION_PROLOGUE " � " FUNCTION_EPILOGUE ", �������� ����� ���������� ������� �����. ���������� C " leaf_function " ������� �� ���� ��� ����� �������.

" EXIT_IGNORE_STACK "

���������� ��� ������������ ��� ��������� C, ������� ������� �� ����, ���� ������� �������� ��� ������ ������� ���������� �������� ��������� �����; ������� �������, ���� ��������� ������� ������� ������������� ��������� ����� ����� ��������� �� �������.

�������� ��������, ��� �������� ���� ������������ ����� �������� ������ ��� �������, ������� ������������ ��������� �����. �� ������ ��������� ������� �������� ������������� ����� � �������, ������� �� ����� ��������� �����, � ���������� ����� ��� ���������� �� " EXIT_IGNORE_STACK ".

" FUNCTION_EPILOGUE (FILE, SIZE) "

��������� �������� C, ������� ������� ��� ���������� ��� ������ �� �������. ������ ������������ �� �������������� ����������� ��������� � ��������� ����� �� �� ��������, ����� ������� ����������, � ����������� ���������� ���������� �������. ��� ������������ ����� �� �� ���������, ��� � ������������ " FUNCTION_PROLOGUE ", � ��������, ������� ����� ������������, ������������ �� " regs_ever_live " � " CALL_USED_REGISTERS " ����� �� �������.

�� ��������� ������� ������� ��������� �������, ������� ������ ��� ������ ��� �������� �� �������. �� ���� �������, ������� ���� ������� ��� " return " � �� ����������� ������������ " FUNCTION_EPILOGUE " ������.

�� ����������� ������� �� ����� " return ", ���� �� ������ ������������ " FUNCTION_EPILOGUE ". ���� �� ������, ����� ������� ������������� ��������� ���, ������������ ������� �������� ��� �������, ���������� ������� " return " � �������� �������� ������������, ������� �������������� ��������� ������� �������������. ���� ������� ������������ ������� " return " �����, ����� �������������� �������.

�� �������, ��� ������� ����� ����� ��� ����� �� ����� ��������� �����, ��� ���������� ������� ������ ���������� ��������������. ������ ��� ��� ���� ���� ������� ��������� ��������. ����� ����������, ��������� �� ��������� �����, ������������ ����� ���������� � ���������� " frame_pointer_needed ". �������� ���������� ����� 1, ���� ������������� �������, ������� ��������� � ��������� �����.

������, " FUNCTION_PROLOGUE " � " FUNCTION_EPILOGUE " ������ ������������ ������� ����� ����������� �������. ���������� C " leaf_function " ������� �� ���� ��� ����� �������. * ��.: ������� �����::.

�� ��������� ������� ��������� ������� ��������������� �� ����� �� ��������� �� ������, � �� ����� ��� ������ ��������� ������ ��� ���������� �������. ��������, 68020, ����� ������ " -mrtd ", ��������������� �� ����� ��������� � ��������, ������� ����� ������������� ����� ����������.

���� ����������� ������������ " RETURN_POPS_ARGS " ������, ����� ������� ��������������� �� ����� �� ����������� ���������. " FUNCTION_EPILOGUE " ��������� �����, ��� ���� ������. ����������, ������� ���������� " current_function_pops_args " - ����� ������ ����������, ������� ������� ������ ��������������� �� �����. * ��.: ����������� ��������::.

" DELAY_SLOTS_FOR_EPILOGUE "

���������� ��� ������������, ���� ������ ������� �������� ����� ��������, � ������� ������� �� ��������� ����� ������� ����� "������������". ����������� ������ ���� ���������� C, ��� �������� - ����� �����, �������������� ����� ������ ��������.

" ELIGIBLE_FOR_EPILOGUE_DELAY (INSN, N) "

��������� C, ������� ���������� 1, ���� INSN ����� ���� ������� � ���� �������� ����� N �������.

�������� N - ����� �����, ������� �������������� ��������������� ���� �������� (��� ��� ��������� ����� ����� ����� ��������� ������� "������������"). ��� ������ ������������� � ������ ������, ��� ���������� ������ �������� ������� (������� ���������� " DELAY_SLOTS_FOR_EPILOGUE "). ���� �� ���������� ������ insn ��� ������� ����� ��������, � ��������, ��� ����� ���� ������������ ��� ������������ ����� ��������. �����, ������ insns ����� (�� ������� ����, � ��������) ��������������� ��� ���� �������������� ����� ��������.

Insns, �������� ��� ���������� ������ �������� �������, ���������� � ������ RTL, ��������� ��������� " insn_list ", ������������ � ���������� " current_function_epilogue_delay_list ". Insn ��� ������� ����� �������� ������ � ������ ������. ���� ����������� ������������ " FUNCTION_EPILOGUE " ������ ��������� ����� �������� ��� ������ ������ insns � ���� ������, ������ ��� ������ ������ " final_scan_insn ".

��� �� ����� ���������� ��� ������������, ���� �� �� ���������� " DELAY_SLOTS_FOR_EPILOGUE ".

��������� ���� ��� ��������������

��� ������������ ������� ��� ������������ ��� ��� ��������������.

" FUNCTION_PROFILER (FILE, LABELNO) "

�������� C ��� ��������� �������� ��� ������ � FILE ���������� ���� ����������, ����������� ������������ �������������� " mcount ". ����� ������� ��� ���������� ������ ��������� ����� ����������-�������� � �������, ��� " mcount " ������� �����. ��� ���� ���������� " LP " �������������� ������� LABELNO, ��� ��� ��� ������� ������������ ���, ���������� " LP%d " � " fprintf ".

����������� ����, ��� ����� ������ ������������ " mcount ", ������������ ����� ������ ������������ �������, � �� GNU CC. ����� ����������� �� ����, ������������� ��������� ��������� ��� ��������������, ��������� ������������� C ���������� ������� � ���������� �� ������������ ��� ����������.

" PROFILE_BEFORE_PROLOGUE "

���������� ��� ������������, ���� ��� ��� �������������� ������� ������ ���� ����� �������� �������. ������ ��� �������������� ���� ����� ����.

" FUNCTION_BLOCK_PROFILER (FILE, LABELNO) "

�������� C ��� ��������� �������� ��� ������ � FILE ���������� ���� ����������, ����������������� �������������� �������� ����� ��� �������� ��������� ������. ���� ��� ������ �������� ������������ " __ bb_init_func " �� ������ ���� ��� ������� ���������� ������, ��������� �� � �������� ������������� ��������� ����� �����, ��������������� � ��������� ������.

��� ����� - ��������� ������, ��������� ���� ����������:

          ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
�������, ��� ��� �� ����������� ����������� " ASM_GENERATE_INTERNAL_LABEL " ��� ��, ��� ��� ���� ������������, �� ������ ������� ������� �� ����������� ���� ������������ � ������������ ���, �������, ��� �� ������, ���� ���������.

������ ����� ����� ����� - ����, ������� ����� �������� �� ����, ���� ��������� ������ ��� ��� ���������������. ������� ���������� ������� ��� ����� � �� ��������� " __ bb_init_func ", ���� ���� ������� �� ����.

" BLOCK_PROFILER (FILE, BLOCKNO) "

�������� C ��� ��������� �������� ��� ���������� ��������, ���������� � ������� ������� ����� BLOCKNO. ������� ����� ���������� �������� �� ���� ������ ������ ����������. �������, ��������� � ������� ����� BLOCKNO - ��� ������ BLOCKNO � ������� ����; ��� ����� ������� - ��������� ������, ��������� ����������� ����� ����������:

           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
�������, ��� ��� �� ����������� ����������� " ASM_GENERATE_INTERNAL_LABEL " ��� ��, ��� ��� ���� ������������, �� ������ ������� ������� �� ����������� ���� ������������ � ������������ ���, �������, ��� �� ������, ���� ���������.

" BLOCK_PROFILER_CODE "

������� ��� ������� C, ������� ���������� � ���������� ��� ��������� ����� ��������������.

6.8 ���������� Varargs �����������

GNU CC ����� ���������� ���������� " varargs.h " � " stdarg.h ", ������� �������� ��� ��������� �� �������, ������� �������� ��������� ����� ����. ������ ������ ������� ����������� ���������� varargs, � ��� ������������������ ����� ��������� ������ ����� �������� ���������, ����� �������� ��.

ANSI " stdarg.h " ���������� �� ������������� " varargs.h " ������� ������� ����������� � ������� ��� " va_start ". ������������ ���������� ����� ������ ���� ��������, ������� �������� ���������� ��� ���������� ��������� �� ��������. ANSI ���������� " va_start " ����� �������������� ������ ��������. ��������������, ��� ������������ ����� ����� ��������� ����������� �������� �������.

������, " va_start " �� ������ ������������ ���� ��������. ������ ���������� ��������� ����������� ���������� ����������� ��������� ������ ����.

" __ builtin_saveregs () "

����������� ��� ���������� �������, ����� ��������� ��������� �� ��������� � ������ ���, ����� varargs �������� ��� ���������� � ���. � ANSI, � ������������ ������ " va_start " ������ ������������ " __ builtin_saveregs ", ���� �� �� ����������� ������ ����� " SETUP_INCOMING_VARARGS " (��. ����).

�� ��������� ������� " __ builtin_saveregs " ������� ������������ ��� ��������� ��� ������������� " EXPAND_BUILTIN_SAVEREGS ". �� ������ ������� ��� �������� ������������, ���������� �� ����� �����������, ����������� � " libgcc2.c ".

���, ��������������� ��� ��������� � " __ builtin_saveregs " ���������� � ������ �������, � ����������������� ����, ��� ��������� � " __ builtin_saveregs " ��������, ���������� �� ����, ��� ��� �� ���. ������� �������� ������ ���� ��������� ����� ���, ��� ������� �������� �� ������������ ��� ����������� �����.

" __ builtin_args_info (CATEGORY) "

����������� ��� ���������� �������, ����� ����� ������ ���������� ��������� � ���������.

������, ������ ����� ����� ��������� ��������� ���������, ������������ ��� ����������, ������ ��� ������������� ��������� ����� ������. (��������, �� ��������� ������� �������� � ��������� ������� ������������ ��� ���������� � ��������� �������, � �� ����� ��� ������ ��������� ���������� � ����� ���������.) ����� �������� ����, ����� ��-varargs ������� ������������ ��������������� ���������� � �������, �� ������ ���������� ��� ������ " CUMULATIVE_ARGS " ��� ������ ����, ������� ��������� � ������ ��������� ������������.

" __ builtin_args_info " ���������� � ��� �� ����� ��������� ������ ���� " CUMULATIVE_ARGS " ����� ����, ��� ������� ���������� ��������� ����������� � ���, � CATEGORY, ������������, � ������ ����� ����������. ����� �������, �������� ��������� ������ �������������� ������� � ������ ���������.

������ �� ������������ �� " __ builtin_args_info " � ���������� " va_start " ��� ������� � ������ ��������� ������ ������� � ���������� �������� � ������� ` va_list '. ������� " va_list " ������ ����� ��������� ��������, � ��� �������� ������� �������� ��������, ��������� ��� ������ " __ builtin_args_info ".

" __ builtin_next_arg (LASTARG) "

��� - ���������� " __ builtin_args_info ", ��� �������� ����������. �� ���������� ����� ������� ����������� ��������� ��������, ��� ��� " void * ". ���� " ARGS_GROW_DOWNWARD ", �� ���������� ����� ������ ���� ������� ����������� ��������� ���������. ����������� ��� � " va_start ", ����� ���������������� ��������� ��� ������� ���������� �� �����. ����� ����������� ��� � " va_start " , ����� ���������, ��� ������ �������� LASTARG - ��������� ����������� �������� ������� �������.

" __ builtin_classify_type (OBJECT) "

��� ��� ������ ������ ����� ����������� ����������, ����� ���� ������ ����� ������������ � ����� ����� ���������, ���� ���������� " va_arg " ������ ��������� ��� ����������. ����� ������� ������ ���������������� ������������ ��� ������ ����������� � ������������� " __ builtin_classify_type " ������ � " sizeof " � " __ alignof __ ".

" __ builtin_classify_type " ���������� �������� OBJECT, ������������ ������ ��� ������. �� ���������� ����� �����, �����������, ����� ��� ��� - ����� �����, ���������, ���������, ��������� � ��� �����.

���� " typeclass.h " ���������� ������������, � �������� �� ������ ������������ ��� ������������� �������� " __ builtin_classify_type ".

��� ������������ ��������� �������� �������� ��������� varargs:

" EXPAND_BUILTIN_SAVEREGS (ARGS) "

���� ����������, �������� ���������� C, ������� ���������� �������-������������� ��� ��� ��������� � " __ builtin_saveregs ". ���� ��� ����� ������� � ����� ������ �������, ����� ���, ��� ����� ������� ������ � ������-���� ���������. ������������ �������� ���� ������� ������ ���� RTX, ������� �������� ��������, ������� ������� ������������ ��� ��������� " __ builtin_saveregs ".

�������� ARGS - " tree_list ", ���������� ���������, ������� ���� �������� " __ builtin_saveregs ".

���� ��� ������������ �� ����������, ���������� ������� ������� ����� ������������ ������� " __ builtin_saveregs ".

" SETUP_INCOMING_VARARGS (ARGS_SO_FAR, MODE, TYPE, PRETEND_ARGS_SIZE, SECOND_TIME)

��� ������������ ���������� �������������� ������� ������������� " __ builtin_saveregs " � ����������� ������������ " EXPAND_BUILTIN_SAVEREGS ". ����������� ���, ����� ��������� ���������� ����������� ��������� � ����� ���, ��� ����� ��� ��������� ���� �������� ��������������� � ����. ��� ������ ��� �������, �� ������ ������������ ����������� ���������� varargs, ������� �������� �� �������, ������� �������� ��� ��������� ����� ����.

�������� ARGS_SO_FAR - ��������� ������ " CUMULATIVE_ARGS ", ���������� ��������, ������� ���������� ����� ��������� ����������� ����������. ��������� MODE � TYPE ��������� ��������� ����������� �������� - ��� �������� ��� � ��� ������ ��� ���� ������.

���������� ������������ ������ ������ ��� ����: ������, ��������� � � ���� ��� ����������� ���������, *��* ������������ ��� ����������� ����������, � ������, ��������� ������ ���� ���������� � ���� ������, � ���������� ���� " int ", ��� ��� �������������� ��� �������� PRETEND_ARGS_SIZE. ��������, ������� �� ����������, ����� ������� ��� �������������� �������� ��� ��������� ����� �����.

��������� �� ������ ������������ ���, ����� ��������� � ���� ���������� ��������� �� ����� ����������, �� ���� �� ����� ������, " SETUP_INCOMING_VARARGS " ����� ����� ������������ ������ �� �������, ������� ����� ������ ���� ��������� ����������� ���������� � ���������� �� ��������� ��� ���� ����� ������.

���� �������� SECOND_TIME ������� �� ����, ��� ��������, ��� ��������� ������� ������������� ������ ���. ��� ��������� ��� ���������� �������, ������� ���������� �� ������������� �� ����� ��������� �����. ������������ " SETUP_INCOMING_VARARGS " �� ������ ������������ ������� ������ ��� ����� ������.

" STRICT_ARGUMENT_NAMING "

���������� ��� ������������, ���� �����, ��� ���������� �������� �������, ������� �� ����, �������� �� �� ����������� ����������.

��� ������������ ��������� ���, ��� ��������������� �������� NAMED � " FUNCTION_ARG " ��� ������� varargs � stdarg. ���� ��� ������������ ����������, �������� NAMED - ������ ������ ��� ����������� ���������� � ���� - ��� ���������� ����������. ���� ��� �� ����������, �� " SETUP_INCOMING_VARARGS " ����������, �� ��� ��������� �������������� ��� �����������. � ��������� ������, ��� ����������� ���������, �� ����������� ����������, �������������� ��� �����������.

6.9 Trampolines ��� ��������� �������

"Trampoline" - ��������� ����� ����, ������� ��������� �� ����� ����������, ����� ����������� ����� ��������� �������. ��� ������ ������������� � �����, �� ����� ����� ���������� �������. ��� ������������ �������� GNU CC, ��� ������������ ���, ����� ������������ � ���������������� trampoline.

������� � trampoline ������ ������ ��� ����: �������� ������������ ������ � ����������� ������ �������, � ������� � ��������� ������ ��������� �������. �� CISC ������� ���� m68k ��� ������� ���� ������, ����������� � �������. ����� ��� ������ ������������ � trampoline ��� ���������������� �������� ������� word. �� RISC ������� ����� ���������� ��������� ������ ����� � ������� � ���� ������. ����� ����� ������� ������ �������� ��������� ���������������� ��������.

���, ���������������, ����� ���������������� trampoline, ������ ��������� ���������� ����� - ����������� ������ �������� � ����� ������� - � ���������������� �������� ������. �� CISC ������ ��� ������ ������ ����������� ������� ������ � ������ ������ � ��������������� �������� �� ������ trampoline. �� RISC ������ ����� ��������� ���������� �������� ����� ������ � ��������� �� ��������.

" TRAMPOLINE_TEMPLATE (FILE) "

�������� C ��� ������ � ����� FILE ���� ���������� ��� ����� ������, ������� �������� ���������� ����� trampoline. ���� ��� �� ������ �������� ����� - � ����� ����������� �������������.

" TRAMPOLINE_SECTION "

��� ������������ ��� ��������� � ������, � ������� ������ ���� ������� trampoline ������ (* ��.: �������::.). �������� �� ��������� - �������� " readonly_data_section ", ������� �������� trampoline � �������, ���������� ������ ������ ��� ������.

" TRAMPOLINE_SIZE "

��������� C ��� ������� � ������ trampoline, ��� ����� �����.

" TRAMPOLINE_ALIGNMENT "

������������, ��������� ��� trampolines, � �����.

���� �� �� ����������� ��� ������������, ��� ������������ trampolines ������������ �������� " BIGGEST_ALIGNMENT ".

" INITIALIZE_TRAMPOLINE (ADDR, FNADDR, STATIC_CHAIN) "

�������� C ��� ������������� ���������� ������ trampoline. ADDR - RTX ��� ������ trampoline; FNADDR - RTX ��� ������ ��������� �������; STATIC_CHAIN - RTX ��� ������������ ������� ��������, ������� ������ ���� �������� �������, ����� ��� ����������.

" ALLOCATE_TRAMPOLINE (FP) "

��������� C ��� ������������� ����� �� ����� ���������� ��� trampoline. �������� ��������� ������ ���� RTX, �������������� ������ ������ �� ����� ��� trampoline.

���� ��� ������������ �� ����������, �� ��������� trampoline �������������� ��� ���� �����. ��� �������� �� ��������� �������� ��� ����������� �����. ���������� - ������, ��� ���������� ���������� ������ � ������� �����. �� ����� ������� ���, ��������, ������� ������� ��������� ����, ��������� ��� ������������ � ��������� � " FUNCTION_PROLOGUE " � " FUNCTION_EPILOGUE ".

FP ��������� �� ��������� ������, " struct function", ������� ��������� ��������� ���������� ���������������� ���������� ������� ��� �������, ������� ����������� trampoline. ������ (����� " ALLOCATE_TRAMPOLINE " �� ����������), ���� ����� ��� trampoline ��������� �� ����� ����� ���� ���������� �������. ������ c�������� �������������, ��������, ������ ������ ���-���� ����������� � ���� �����������.

���������� trampolines ������ �� ������ �������, ������ ��� ��� ����� ���������� ���� ������ � ������. ������ � ������ ����� �� ����� �������� ������ � ���� ������, ��� ��� ����� ��������� ��������� � ���� ������, ����������� ������ ����������.

������� ��� ��������� �������. ���� ����������� � �������� ����������� � ���� ������ ���� ������ ������ ���, ����� trampoline ���������������. ������ - ������� ��� trampoline �����������, ������ � ��� �������� �� ����������� ������������. �������������� �������� ������ ���������� trampoline �������; ��������� ������ ������ ������������� �������.

����� �������� ��� ������, ����� trampoline ���������������, ���������� ��������� ������������, ������� ��������� ����� ����.

" INSN_CACHE_SIZE "

������ ������ � ������ ����.

" INSN_CACHE_LINE_WIDTH "

����� � ������ ������ ����� ����. ��� �������� �� ����� ����, ������� �������� ����������������� �������, ������ �� ������� ������� ����� ������, ��������� �� ������. ������ ���, ����� ������ ������������ � ���, ��� ����� �������� �������. ������, ����������� � ����� ����, ������ ������������� �� �������, ������ ������� �����.

" INSN_CACHE_DEPTH "

����� �������������� ����� ����, ������� ����� ��������� ����� ���������� ������ ������.

�������������, ���� ������ ����� ��������� ������ ��� ������� ��� ������� ���� ������� ���������������, �� ������ ���������� ��������� �������������.

" CLEAR_INSN_CACHE (BEG, END) "

���� ����������, ����������� �� ��������� C, ���������� *��� ������* � ��������� ���������. ���� ��� �� ����������, � ������������ INSN_CACHE_SIZE ����������, ������������ ��������� ������� ��� ��� ������� ����. ����������� ���� ������������ ������ �������� �������� ���������� " asm ". BEG � END - ���������-���������.

����� ������������ ����������� ������������, ���������� ��������� ������������. ����� ����, �� ������ ��������������, ��� ������� � trampoline ��������� ��� ����� ���� ����������� ���������, ��� �� �����������, ��� ������ trampoline ���� ������ ������������� �� ��� �� ����� ����� �� ����� ����. �������� " m68k.h " ��� �����������.

" TRANSFER_FROM_TRAMPOLINE "

���������� ��� ������������, ���� trampolines ��������� � ����������� ������������ ��� ���������� �� ������. ������������ ������ ����������� �� ���� " asm " ����������, ������� ����� ��������������� GNU CC. ��� ������ � ������������ ������� ��� ��������� " __ transfer_from_trampoline ".

���� ��� ����� �������� ���������� ���� �������� ������� c��������������� ������� C, ����� �� ���������� � ������������, �� ������ �������� �����, ������� ���� ����������� ����������� ����� � ���� ����������. ������������� ���� �������� " asm ", ����� ������������� ����� ����������, � ������, ����� ������� ����� ����������. ����� trampolines ������ ������������ ��� ����� ��� �������� ��������������� � ������ ������������ ���� ����������.

6.10 ������� ��������� � ������������ �������������

"MULSI3_LIBCALL"

��������� ��������� C ����� ������� ��������� ������ ��������� ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ���������, "__mulsi3" �������, ������������ � "libgcc.a".

"DIVSI3_LIBCALL"

��������� ��������� C ����� ������� ������� ������ ��������� ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ���������, "__divsi3" �������, ������������ � "libgcc.a".

"UDIVSI3_LIBCALL"

��������� ��������� C ����� ������� ������� ������ ������������ ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� " __udivsi3 " �������, ������������ � "libgcc.a".

"MODSI3_LIBCALL"

��������� ��������� C ����� ������� ���������� ������� ������� ������ ��������� ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� " __modsi3 " �������, ������������ � "libgcc.a".

"UMODSI3_LIBCALL"

��������� ��������� C ����� ������� ���������� ������� ������� ������ ������������ ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� "__umodsi3" �������, ������������ � "libgcc.a"

"MULDI3_LIBCALL"

��������� ��������� C ����� ������� ��������� ������ ��������� �������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� "__muldi3" �������, ������������ � "libgcc.a".

"DIVDI3_LIBCALL"

��������� ��������� C ����� ������� ������� ������ ��������� �������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� "__divdi3" �������, ������������ � "libgcc.a".

"UDIVDI3_LIBCALL"

��������� ��������� C ����� ������� ������� ������ ������������ ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� "__ divdi3" �������, ������������ � "libgcc.a".

"MODDI3_LIBCALL"

��������� ��������� C ����� ������� ���������� ������� ������� ������ ��������� �������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� "__moddi3" �������, ������������ � "libgcc.a".

"UMODDI3_LIBCALL"

��������� ��������� C ����� ������� ���������� ������� ������� ������ ������������ ������� ����� �� ������. ���� �� �� ����������� ��� ������������, ������������ ���, �������� �� ��������� "__umoddi3" �������, ������������ � "libgcc.a".

"INIT_TARGET_OPTABS"

���������� ��� ������������ ��� �������� C, ������� ��������� �������������� ������������ ������������ � ��������������� ������������. "Init_optabs" �������� ��� ������������ ����� ������������� ���� ���������� ������������ �����������.

"TARGET_EDOM"

�������� "EDOM" �� ������� ������ � ���� ������������� ��������� C. ���� �� �� ����������� ��� ������������, GNU CC �� �������� ������� �������� "EDOM" � "errno" ���������������. ���������� � "/usr/include/errno.h" ����� ����� �������� "EDOM" ��� ����� �������.

���� �� �� ����������� "TARGET_EDOM", �� ����������������� ��� ������� �� ������, ��������� ��� ������ ������������ �������. ���� �������������� ������� �� ����� ������� ��� ������ ���������� "matherr", �� �� ������ �������� "TARGET_EDOM" ��������������, ����� "matherr" ����� ��������� ��������������.

"GEN_ERRNO_RTX"

���������� ��� ������������ ��� ��������� C ��� �������� ��������� rtl, ������� ��������� �� ���������� "����������" "errno". (�� ��������� ��������, "errno" ����� �� ���� ����������.) ���� �� �� ����������� ��� ������������, ������������ ���������� �������� �� ���������.

"TARGET_MEM_FUNCTIONS"

���������� ��� ������������, ���� GNU CC ������ ������������ ��������� � ������������ �������� System V (� ANSI C) "memcpy" � "memset", � �� � BSD-�������� "bcopy" � "bzero".

"LIBGCC_NEEDS_DOUBLE"

���������� ��� ������������ ������ ���� ��������� ���� "float" �� ����� ���� �������� ������������ ������������� (��� ��� ��� ������ ���� ������������� � "double"). ��� ������������ ������������ � �� ��, ��� ������������ ������������ ������ � ��� ������������ ������������ � "libgcc1.c" ��������� ���� ���������. ��� ������� �� �������, ��� ��������� � ��������� � ������������� ������ ���������� ��-�������, �������� � i860.

"FLOAT_ARG_TYPE"

���������� ��� ������������, ����� �������� ���, ������������ ������������� ��������������, ����� ���������� ��������� ���� "float". (�� ���������, ��� ���������� ����������� "float" � "int".)

�������� ����� ������ ���� "float", �� ��� �� ����� �������� �� ������������ ������������ C, ������� ��� ���������, ����������� ��� "float" ������������ � "double". ����� �������� ������ ��������������, ������������ ������������ ����������� �������� ������-�� ������� ����, � ����� ������������ ��� ��� "float".

�� ��������� �������� ������� ������ ��� �� ����� ��� ��������. �� ���� �������� �� ������ ������ ���� ������������ "LIBGCC_NEEDS_DOUBLE", ��������� ���������� ��������������� "double"-�������� �� ����, ��� ��� ��������.

"FLOATIFY (PASSED-VALUE)"

���������� ��� ������������, ����� �������� ������, ������� ������������ ������������ �������� ��������� �������� ���� "float" ��� "float" ������ ����, � �������� �������� �� ��� �������. �� ��������� ��� ���������, ������� ����� "float"-���� �� �����������.

"FLOAT_VALUE_TYPE"

���������� ��� ������������, ����� �������� ���, ������������ ��� ����������� �������� ������������� ��������������, ������� ������ ���������� ��� "float". (�� ��������� ��� ���������� "int".)

��������� ����� ��� �� "float", �� ��� �� ����� �������� �� ����������� ������������� C, ������� ��� ��������������� ��������, ����������� ��� "float", � "double".

"INTIFY (FLOAT-VALUE)"

���������� ��� ������������, ����� �������� ������, ����� ������� ��������, ������������ ������������ �������������, ������� ������ ���������� ��� "float", ������ ���� ���������, ����� ���������� ���. ��� ������� ����������� ��� ������������ ��� "FLOAT_VALUE_TYPE" (������ "int").

��� �������� �� ����� ���� ���������� ��� ��� "float" ������ ��� ������������ C ����������� ���� ��������������� �������� � "double".

��������� ����������, ��������� "intify" ������ ��������, ����� ������������ ������������ "INTIFY". ��� - ����������� "float"-���� � ������ "f" � ���� � ������ "i" ���� "FLOAT_VALUE_TYPE" ��� "int".

���� �� �� ����������� ��� ������������, �������� �������� �� ��������� ����������� : �������� �������� ����� ��� �����������.

"Nongcc_SI_type"

���������� ��� ������������ ��� ��� ���� ������, ���������������� "SImode" � ����������� C-����������� �������.

�� �� ������ ���������� ��� ������������, ���� ������������� ��� - "long int", � ��� ������ �� � ����.

"Nongcc_word_type"

����������� ��� ������������ ��� ��� ���� ������, ���������������� word_mode � ����������� C-����������� �������.

�� �� ������ ���������� ��� ������������, ���� ������������� ��� - "long int", � ��� ������ ���.

"perform_ ..."

���������� ��� ������������, ����� ���������� ����� ��������� C, ����������� ��������� �������������� �������� �� ����� "float" � "double" � ������������ ������������� "libgcc1.c". ��. � ���� ����� ������ ������ ���� ����������� � �� ����������.

�� ����������� ����� �� �� ������ ���������� ��� ������������, ������ ��� C-����������, ������� �������� � ��������, ��� ��������� �� �� ��������.

"NEXT_OBJC_RUNTIME"

���������� ��� ������������, ����� ������������� ��� ��� ������� ��������� � Objective C , ��������� ���������� � ������� ������� NeXT. ��� ���������� � ������� �������� �������� �������, ��������� � ���������� ������ ���� ����� � ��������� ������� ���������� �������.

�������� �� ��������� ���������� � ������� �������� ������ ������ � �������� � ������� ������, ������� ���������� ��������� �� �����.

6.11 ������� ���������

����� ���������� ���������� � �������� ���������.

"HAVE_POST_INCREMENT"

���������� ��� ������������, ���� ������ ������������ ���������������� ���������.

"HAVE_PRE_INCREMENT"

"HAVE_POST_DECREMENT"

"HAVE_PRE_DECREMENT"

���������� � ��� ������ �������� ���������.

"CONSTANT_ADDRESS_P (X)"

��������� C, ������� ����� 1, ���� RTX X - ���������, ���������� ���������� �����. �� ����������� �����, ��� ����� ���� ���������� ��� "CONSTANT_P(X)", �� �� ��������� ������� ������ ����������� �� �������������� ������� ������.

"CONSTANT_P" ��������� ������������� �������� ���������, �������� ������� ����

����������, ����� ��� "symbol_ref", "label_ref", "high"-��������� � "const"-�������������� ��������� � ���������� � ���������� "const_int" � "const_double".

"MAX_REGS_PER_ADDRESS"

������������ ����� ���������, ������� ����� ���������� � ���������� ������ ������. �������� ��������, ��� ��� �� ������ ���������� ��������, ������ ������������� �����, ������� ����� ��������� "GO_IF_LEGITIMATE_ADDRESS".

"GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)"

������� �������� C � �������� ���������� "goto LABEL;", �������������, ���� X (RTX) - ���������� ����� � ������ �� ������� ������ ��� �������� ������ ���� MODE.

������ ����� ���������� ��������� ����� ������� �����������, �������� �������������� ��� ����. � ��������� ������ ��� ������������ ����� ��������� ������� ������� ��� ���������.

��� ������������ ������ ������������ � ���� ���������: ������� � ���������. ������� ������� ������������ � �������� ������������. ��� ������ ���� ���������� ���, ����� ����� �������������, ������� �� ��� ����������� � ���������� ��������, �������� ������� ������. � ����������, ��� ��������� ��������� �������, ������� ��������� �������������, �� �������������� ����������.

��������� ������� ������������ � ������ ��������. ��� ������ ���� ����������, ����� ��������� ��� �������������� � ������ ���������, ��� ��������� ��������� �������.

�������� ����� �����������, ������� ���������� ������� ������� ���� ������������, ���������� ������������ "REG_OK_STRICT". �� ������ ������������ �������� ��������� "#ifdef REG_OK_STRICT", ����� ���������� ������� ������� � ���� ������, ����� - ��������� �������.

������������ ��� �������� ���������� ��������� ��� ��������� ����� (���� ��� ������� ���������, ���� ��� ��������� ���������, � ��� �����) - ������� ����� �����������, ������������ ��� ����������� "GO_IF_LEGITIMATE_ADDRESS". ������ ��� ������������-������������ ������ ����� ��� ��������; ������������ ����� ������� ������� ���� ����� ���� �������� ��� ���.

������, ���������� ������, ������� �������� ������ "symbol_ref" � ������ �����, ������������� ������ "const" RTX, ����� �������� �� ��� ���������. �������������, �� ���� ������������ ����� ����� ��� ���������� ������. ������ �� ������ ����������� ����� "const" ��� ����������.

������ "PRINT_OPERAND_ADDRESS" �� ������������ � ��������� ����������� ����, ������� �� �������� "const". ��� ���������, ��� ����� "plus" ��������� �� ����������. ���� ���, �� �� ������ ��������� ����� ����� ���������� ����� ��� ������������ ������, ��� ����� �� ���� �� ��� �� ���� �������� "PRINT_OPERAND_ADDRESS".

�������� �� ������������� ����� ����������, ������� �� �������, � �������� ����� ���������� (�� ��������� �������). �� ����� ������� ���������� ������������ "ENCODE_SECTION_INFO", ����� ��������� ���������� � "symbol_ref", � ����� ��������� �� ���. ����� �� ������ "const", �� ������ ������ ��������� ������ ���, ����� ����� "symbol_ref" ��� ����������� �������. *�������� �������� �� ������������ ������::.

����� ������ ������ �������� ������ ����� - �������� ����� � ������ � ���������� �����������, ����� ������������� ����� ���������������. ������������ ����� ��� � "saveable_obstack". �� ������ ������ �������� "ASM_OUTPUT_LABELREF", ����� ������� � ������������ ����������� ����� � ������� ��� ��������������, � ���������� "STRIP_NAME_ENCODING", ����� ���������� � �������������� ������ �����.

�� ������ ��������� ����������, ����������� � "symbol_ref" � ������������ ����������� "GO_IF_LEGITIMATE_ADDRESS" � "PRINT_OPERAND_ADDRESS".

"REG_OK_FOR_BASE_P (X)"

��������� C, ������� ������� �� ���� ���� X (����������� "reg" RTX) �������� ��� ������������� � �������� ��������� ��������. ��� ���������� ��������� ��� ������ ��������� ������ ����������� ����������� ������������� � ��������� ���������. ��������� �� ������������ ��������������, ������ ���������������� "REG_OK_STRICT", ��� ������� ����. ��� ������ ������� ���� ��������� ��������� �����������, ������ "REG_OK_STRICT" ���������, ����� ���������� ������������.

"REG_OK_FOR_INDEX_P (X)"

��������� C, ������� ������� �� ���� ���� X (����������� "reg" RTX) ������� ��� ������������� ��� ��������� �������.

�������� ����� ��������� ��������� � �������� ��������� � ���, ��� ��������� ������� ����� ����������������. ���� ����� �������� ����� ���� ���������, �� ���� �� ������� �� �������������, �� ����� ����� ���� ������� ��� "��������", � ������ ��� "���������"; �� ����� �� ������� �� ��������������, ��� ������ ������������� ������������ ������, �������� ������� ����� ������� ������ � ������������ ������. ���������� ������� ��� �������, ��� ����������, � ������������ ���� ��� ��� ��������� ������, ���� ������� ������ �� ���������.

"LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)"

������� �������� C, ������� �������� �������� X �� ���������� ����� � ������ ��� �������� ���� MODE. WIN ����� ������ ��������� � C � ������ ����� � ����; ����������� ������������ ����� ������������ :

GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);

�� ��������� ���������� ���������, ���� ����� ���� ����������.

X ����� ������ ����������� ��������� � "break_out_memory_refs", � OLDX ����� ���������, ������� ��� ������� ��� �������, ����� �������� X.

���, ��������������� ���� ������������� �� ������ �������� ��������� X. ���� �� �������������� X � ����� ���������� �����, �� ������ ��������� X (������� ����� ������ C ����������) ����� ��������.

��� ������������ ������������� ������ ���������� �����. ���������� ����� ����������� ���� ���������� ����� ���� �������. ����������, ���� ������������ ��������� ������ �� ������. �� ����� �������-��������� ��������� ����� �������� � ������� ����.

"GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)"

�������� C ��� ��������� �������� � �������� "goto LABEL; ", �����������, ���� ����� � ������ X (RTX) ����� ����� ��������� ��������, � ����������� �� ��������� ���� ������ ������, ��� ������� �� ������������ ��� ���� ����� ���������� ��� ��������� �����, �� �� ��� ������.

���������������� � ���������������� ������ ������ ����� ��������� �� ���� �������, ������ ��� ������ ���������� ��� ���������� - ������ ����������� ��������. ��������� ������ ����� ������ ��������� �� ���� ������. ������ RISC-������ ����� ����������� �� ���� ������.

�� ������ �������, ��� ADDR - ���������� ����� ��� ������ ������.

"LEGITIMATE_CONSTANT_P (X)"

��������� C, ������� ������� �� ����, ���� X - ���������� ��������� ��� ����������������� �������� �� ������� ������. �� ������ �������, ��� X ������������� "CONSTANT_P", ��� ��� ��� �� ���� ��������� ���. ����������, "1" �������� ���������� ������������ ��� ���� ������������ �� �������, ��� �����-������ "CONSTANT_P" ���������.

6.12 ��������� ���� �������

�������� ��������� ���� �������.

���� "conditions.h" ���������� ���������� "cc_status" ��� �������� ����, ��� ��� �������� ��� ������� (� ������, ���� ������������� ���� ������� ������� �� �������, ������� �� ��� ����������). ��� ���������� �������� ��������� RTL, �� ������� ������� ��� �������, � ��������� ����������� �������.

������ �������������� �������-������������� ����� ������ ���� ���������� � ������������ ����� �������� ������. �� ����� ����� ��������� �������������� �������-������������� ����������, ��������� "CC_STATUS_MDEP".

"CC_STATUS_MDEP"

C-��� ��� ���� ������, ������� ������������ ��� ���������� "mdep" ��������� "cc_status". ��� �������� �� ��������� : "int".

��� ������������ �� ������������ �� �������, ������� �� ���������� "cc0".

"CC_STATUS_MDEP_INIT"

��������� C ��� ������������� ���� "mdep" � "empty". �������� �� ��������� ����������� �� ������ ������, ��� ��� ����������� ����� �� ���������� ��� ����. ���� �� ������ ������������ ����, �� ������, ��������, ���������� ��� ������������, ����� ���������������� ���.

��� ������������ �� ������������ �� �������, ������� �� ���������� "cc0".

"NOTICE_UPDATE_CC (EXP, INSN)"

��������� �������� C ��� ��������� ��������� "cc_status" �������������� ��� insn INSN, ���� �������� - EXP. ��� ������������ �������� �� ������������� insn, ������� ������������� ��� ������� ��� �������� ������ ������� ��������, ������ ��� ��������� "(cc0)".

��� ������������ �� ������������ �� �������, ������� �� ���������� "cc0".

���� ������� insn, ������� �� ������������� ��� �������, �� �������� ������ �������� ��������, ��� ������������ ������ ���������, ������ �� ��� ���������, ��� ������� ������� ��������������� ��� ����������. ��������, �� 68000, insn, ������� ��������� �������� � ��������� ������, �� ������������� ��� �������, ��� �������� ��� ������ "NOTICE_UPDATE_CC" ����� ��������� "cc_status" ���������� ��� ����� insn. �� ������������, ��� ���������� insn ��������� ��� �������, ���������� �� ������������ "a4@ (102)", � ������� insn ��������� ����� �������� � "a4". ���� ��� ������� �� �������, �� ������� �� ����� �������� ���������� "a4@ (102)". �������������, "NOTICE_UPDATE_CC" ������ �������� "cc_status" � ���� ������, ����� ��������, ��� ����� �� �������� ������������ �������� ���� �������.

����������� "NOTICE_UPDATE_CC" ������ ���� ������ ����� ���� � ������������ peephole-�����������: insn, ��� ������� "�����������" RTX, ���������� ��������� "reg", "mem" ��� ���������, ������� �������� ������ ����������. RTL - ��������� ���� insn ������������, ����� �������, ��� insn ���������� ������. ��� "NOTICE_UPDATE_CC" ������ ������, ����� �����, ��� ������ ������ ������ ��������� "CC_STATUS_INIT".

��������� ����������� "NOTICE_UPDATE_CC" ������� � ������ �������, ������� ������� �� ������� (*�������� �������� �� Insn ��������::.), ��������, "cc". ��� ��������� �� ��������� ���������� ������������ �������� � ���� ������ : � "md" ����� � � "NOTICE_UPDATE_CC".

"EXTRA_CC_MODES"

������ ����, ������� ����� ������������ ��� �������������� ������� ��� �������� ���� ������� � ��������� (*�������� �������� �� ������� ���������::.). ��� ����� ��������� � "enum machine_mode", � ��� ��� ����� ����� "MODE_CC". � ������������ c �����������, ��� ������ ���������� � "CC" � ������������� �� "mode".

�� ������ ���������� ��� ������������, ������, ���� ���� ������ �� ���������� "cc0" � ������, ���� ��������� �������������� ����.

"EXTRA_CC_NAMES"

������ C-����� ���� ��� �����, ������������� � "EXTRA_CC_MODES". ��������, Sparc ���������� ��� ������������ � "EXTRA_CC_MODES" ��� :

 #define EXTRA_CC_MODES CC_NOOVmode, CCFPmode, CCFPEmode
 #define EXTRA_CC_NAMES "CC_NOOV", "CCFP", "CCFPE"
��� ������������ �� ���������, ���� "EXTRA_CC_MODES" �� ����������.

"SELECT_CC_MODE (OP, X, Y)"

���������� ��� �� ������ "MODE_CC" ��� �������������, ����� ��� �������� ��������� OP ����������� � rtx X � Y. ��������, �� Sparc, "SELECT_CC_MODE" ����������, ��� ������� � "������� ���������::.".

 #define SELECT_CC_MODE(OP,X,Y) \ (GET_MODE_CLASS (GET_MODE (X)) ==
 MODE_FLOAT
 \ ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode)    \ : ((GET_CODE (X) ==
 PLUS || GET_CODE (X) == MINUS    \ || GET_CODE (X) == NEG) \ ? CC_NOOVmode :
 CCmode))
��� �� ����� ���������� ��� ������������, ���� "EXTRA_CC_MODES" �� ����������.

"CANONICALIZE_COMPARISON (CODE, OP0, OP1)"

�� ��������� ������� �� ��� ��������� ��������� ����������, �� �� ������ �������� ������������ ��������� ����� ����������. ��������, �� Alpha ��� "GT"-���������, �� �� ������ ������������ ������ ���� "LT"-��������� � �������� ������� ���������.

�� ����� ������� ���������� ��� ������������, ��� �������� C, �������� ����� ��������� ��������������. CODE - ��������� ��� ���������, OP0 � OP1 - ����� � ������ �������� ���������, ��������������. �� ������ �������� CODE, OP0, � OP1, ���� ���������.

GNU CC �� ����� ������� ���������, ���������� � ���� ������������, ����������, �� ���������, ���� ����������� � ���������� insn ������������� ������� � "md" �����.

��� �� ����� ���������� ��� ������������, ���� ��� ������� �� �������� �� ��� ��������� ��� ��������.

"REVERSIBLE_CC_MODE (MODE)"

��������� C, �������� �������� - 1, ���� ������ ����� ��������� �������� ��������� ���� MODE. ���� "SELECT_CC_MODE" ����� �����-���� ���������� MODE ��� ����������� � ��������� ������, �� "REVERSIBLE_CC_MODE (MODE)" ������ ���� 0.

��� �� ����� ���������� ��� ������������, ���� ��� ������ ���������� �� ���� ��� ���� ������ � ��������� ������ ���������� �� "IEEE_FLOAT_FORMAT". ��������, ��� �����������, ������������ �� Sparc, ��� ����������� � ��������� ������ ������ ���� "CCFPEmode":

 #define REVERSIBLE_CC_MODE(MODE)  ((MODE) != CCFPEmode)

6.13 �������� ������������� ���������� ��������

��� ������������ ��������� ��� ��������� ������������� �������������� ��������� �������� �� ������� ������.

"CONST_COSTS (X, CODE, OUTER_CODE)"

����� C "switch"-���������, ������� ��������� ������������� �������� ���������� ��������� RTL. ��� ������ ��������� "case"-����� ��� ����� ��������� "const_int", "const", "symbol_ref", "label_ref" � "const_double". ������ "case" ������ � �������� ����� ���������� ��������� "return", ����� ���������� ������������� ��������� ������������� ������� ���� ��������� � ���������. ��������� ����� �������� �� ������� �������� ���������, ������� �������� ��� ������������ � X, � rtx-���� ���������, � ������� ����������, � ������� ����� ���� ������ � OUTER_CODE.

CODE - ��� ��������� - ����������, ��� ��� ����� ���� �������, ��� "GET_CODE(X)".

"RTX_COSTS (X, CODE, OUTER_CODE)"

�� ��, ��� "CONST_COSTS", �� ����������� � ������������� ���������� RTL. ����� ��������������, ��������, ��� ��������, ��������� ������������� �������� ������� ���������. � ��������� ���� ������������, �� ������ ������������ ����������� "COSTS_N_INSNS (N)" ����� ���������� ���������, ������ N, ������� ������. OUTER_CODE - ��� ���������, � ������� ���������� X.

��� ������������ ����� �� ����������, ���� �������� �� ��������� ������������� ��������� ��������� ��� ������� ������.

"ADDRESS_COST (ADDRESS)"

���������, ������ ��������� ������� ���������, ������� �������� ADDRESS. ���� �� ����������, �� ��������� ����������� �� ��������� ADDRESS � �������� "CONST_COSTS".

��� ����������� CISC �����, �������� �� ��������� ��������� - ������� ����������� �������� ��������� ������� ���������. ������, �� RISC �������, ��� ������� ������ ����� �� �� ����� ����� � ����� ����������. ������������� ��� ������ ����� ����� ������ ��������.

� �������, ��� �������� �����, ��� ���� ����� ������, ����� �������������� ����� � ����� ������ ����������. ���� ������ ����� ����� ���� � �� �� ����� ������ ���������, �� ����� �������������� ��, ������� �������� ������.

��������, �����������, ��� �����, ������� �������� ������ �������� � ���������, ������������ ������ � ����� �������� �����. ����� ��� ������������ �� ����������, ����� ����� �������� � ��������, � ������ �� ������ ����� ����������, ����� ���� �������. �� �������, ��� ��������� ������� ���������, ����������� �����, �� ���� ��� ������� ��������� ������, ��� ���������� �������������� ������� �, ��������, ��������� ��������������� ��������. ���������� ������������ ���� ������������ ��������� ��� ������� ��� ����� �����.

�������� ������� ��� ������������ ������������ ��� ����������� ������.

ADDRESS ������ ���� ����������, ��� �����. � ����� ������, ��������� �� ����� �������� � ����� ���� ������� ������������; ������������ ������� �� ������ ������������� ��������� ���������.

�� �������, ��� �����, ���������� ������, ��� ���� �������, - ����� �� �������, ��� ������, ���������� ������ ���� �������, ����������� "ADDRESS_COST", ��� ��������� �����, ����� ��������� ��� �������� ���� � ������� ����, ��� ��� �� ������ ����, ���� "ADDRESS_COST" �� ���� �� ����������. ���� ������ ������ ��������������� � ����������� ���� ������������. ������������� �������� ������ ���� �������, ��������, ������ ������� � ���������� ������� ��������� �� ������� � ����� ������� ����������� ���������.

��� ������������ ����� �� ���������� ��� ����������, ��� ���������.

"REGISTER_MOVE_COST (FROM, TO)"

��������� C ��������� ����������� ������ �� �������� ������ FROM � ������� ������ TO. ������ �������� ��������� ���������� �������� "GENERAL_REGS". �������� 4 - �������� �� ���������; ������ �������� ���������������� ������������ �����.

�� ���������, ����� ��������� ������ ��������� 2, ���� FROM = TO; �� ��������� ������� ������ ���������� ������ ����� ����������, ���� ��� - �� �������� ������ ����������.

���� ������������ ����� insn, ��������� �� ���������� "set" ����� ����� ����������� ����������, � ���� "REGISTER_MOVE_COST" ��� �� ������� ���������� �������� 2, ������������ �� ���������, ��� ����������� insn ���������. ��������� ��������� �� ��������, �� ������ 2, ��������� ������������ ���������, ��� ����������� ���������. �� ������ ������ ���, ���� "movM" ����������� �� ������� �� ��������� ����� �����������.

"MEMORY_MOVE_COST (M)"

��������� C ��������� ����������� ������ ���� M ����� ��������� � �������. �� ��������� : 2; ��� ��������� ������������ ��������� � "REGISTER_MOVE_COST".

���� ����������� ����� ���������� � ������� ������, ��� ����� ����� ����������, �� ������ ���������� ��� ������������, ����� �������� ������������� ���������.

"BRANCH_COST"

��������� C ��������� ������� �������� (���������). �� ��������� : 1; ������ �������� ���������������� ������������ �����.

��� �������������� ������������, ������� ���������� �� ������ ������������� ��������, � ��������� ��������, ������� ����� ������, ��� GNU CC ������ �������.

"SLOW_BYTE_ACCESS"

���������� ��� ������������ ��� ��������� C, ������� ������� �� ����, ���� ��������� �����, ��� � ����� � ������ (�� ���� � "char" ��� "short") �� �������, ��� ��������� � �����, �� ����, ���� ����� ������ ������� ����� ����� ������� ��� ���� ��� �������� � ��������� �������� ����� � (������������) �����.

����� ��� ������������ �� ����������, ���������� ��������� � ����, ������ ����� ��������� ������������ ������; ����� ����������, ����� �������������� �������� ������� �����, ���� ��������� ������������. ���� � ������ � ������ �� �������, ��� ������ � ������, ������������� ���� ���������������, ��� ��� ����� ��������� ����������� ��������� � ������, ���� ����������� ��������� ���������� � ������ ����� � ��� �� ����� �� ���������, �� � ��������� ������.

"SLOW_ZERO_EXTEND"

���������� ��� ������������, ���� ���������� ����� (����� "char" ��� "short" �� "int") ����� ���� ��������� �������, ���� ������� - �������, ��� ������� ��������, ��� �� - ����.

���� �� ����������� ��� ������������, �� ������ ����� ������� �������, ������� ���������� ��������� RTL ������� �����:

 (set (strict_low_part (subreg:QI (reg:SI ...) 0)) ...)
� ���������� ��� "HImode".

"SLOW_UNALIGNED_ACCESS"

���������� ��� ������������, ������ 1, ���� ������ � ������������� ������ ����� ��������� �� ����� ��� �������, ��� ������ � ����������� ������, ��������, ���� ��� ����������� � ����������� �������.

����� ��� ������������ ������� �� ����, ���������� ����� �����������, ��� ����� "STRICT_ALIGNMENT" ���� ������� �� ���� ��� ��������� ���� ��� �������� �����������. ��� ����� ���������� ���������� ������������ ������� ������ ����������. �������������, �� �������������� ��� ������������ � �������� �� ���� ��������, ���� ������ � ������������� ������ ������ ��������� ���� ��� ��� � ������� ������� � ������.

���� �������� ���� ������������ - ������ ����, �� �� ����� ����������.

"DONT_REDUCE_ADDR"

���������� ��� ������������, ����� ��������� ���������� ���������� ������� ������. (�� ��������� �������, ����� ���������� ���������� ������ ������ �����, ��� ������.)

"MOVE_RATIO"

���������� insn, ������������ ��������� ������������, ������� ������ ���� ������������� ������ insn, ������������ ��������� ����������� ��� ������ ������������ �������. ���������� �������� ����� ������ ������ ��� ����� �������, �� � �������� ����� ������ ����������� ������ ����.

���� �� �� ����������� ��� ������������, ������������ ���������� �������� �� ���������.

"NO_FUNCTION_CSE"

���������� ��� ������������, ���� ������� ���������� ������� �� ������, ��� �� ������ � ��������.

"NO_RECURSIVE_FUNCTION_CSE"

���������� ��� ������������, ���� ������� �� ������ ������� ���� ���� �� ������ ������, ��� �� ������ � ��������.

"ADJUST_COST (INSN, LINK, DEP_INSN, COST)"

�������� C (��� ����� � �������) ��� ����������� ����� ���������� COST (���������) , ���������� �� ����� ����� INSN, ������� ������� �� DEP_INSN ����� LINK �����������. �� ��������� �� ������������ ������������� COST. ��� ����� �������������� ��������, ����� ������� ������������, ��� ����� ��� ����-����������� �� ����� �� �� ����� ��������� ��� ����������� ������.

6.14 ������� ������ �� �������

��������� ���� �������� �� �������, ���������� ��������� ���� ������. � �������� ����� ������, ������� ��� �������: "��������� ������", ������� �������� ������� � ������ ������ ��� ������; "������ ������", ������� �������� ������������������ ���������������� ������; � "������ bss", ������� �������� �������������������� ������. ��������� ������� ����� ������ ���� ��������.

���������� ������ �������� ����������, ����� ����������� �������. ��� ������������ ��������� ���, ����� ������� �������, ����� �������� �� ���� ����������. �� ������ ����� ���������� �������������� �������.

"TEXT_SECTION_ASM_OP"

��������� C, �������� �������� - ������, ���������� ������������ ��������, ������� ������ �������������� �������� � ������ ������ ��� ������. ������ ".text".

"DATA_SECTION_ASM_OP"

��������� C, �������� �������� - ������, ���������� ������������ �������� ��� ������������� ��������� ������ ��� ���������������� ������������������ ������. ������ ".data".

"SHARED_SECTION_ASM_OP"

���� ����������, �� ��� ��������� C, �������� �������� - ������, ���������� ������������ �������� ��� ������������� ��������� ������ ��� ����������� ������. ���� �� ����������, ����� �������������� "DATA_SECTION_ASM_OP".

"INIT_SECTION_ASM_OP"

���� ����������, ��� ��������� C, �������� �������� - ������, ���������� ������������ �������� ��� ������������� ��������� ������ ��� ���� �������������. ���� �� ����������, GNU CC �������, ��� ������ ������� �� ����������.

"EXTRA_SECTIONS"

������ ���� ��� ��������, �������� �� ���� �����������, ������� �������� "in_text" � "in_data". �� �� ������ ���������� ��� ������������, ���� �� ������� ��� ������ �������� (������� GCC ������ ������������).

"EXTRA_SECTION_FUNCTIONS'

���� ��� ������ �������, ������� ���������� � "varasm.c". ��� ������� ������ ����������� ��������, ����������� �������� �� "text_section" � "data_section", �� ��� ����� �������������� ��������. �� ����������� ��� ������������, ���� �� �� ���������� "EXTRA_SECTIONS".

"READONLY_DATA_SECTION"

�� ����������� ����� ���������� ������ ��� ������, ��������� � ������� ��������� �������� � ��������� ������. ���� �� ����� ������ ��� �� ���, ��� ������������ ������ ���� ���������� ������ ������� (�� "data_section" ��� ������������ � "EXTRA_SECTIONS") ������� ������������� �� ��������������� ������, ������� ������������ ��� ��������� ������ ��� ������.

���� ��� �������� ���� �������� � ��������� ������, ��� ������������ �� ����� ����������.

"SELECT_SECTION (EXP, RELOC)"

��������(�) C ��� ������������ �� ��������������� ������ ��� ������ EXP. �� ������ �������, ��� EXP - ��� "VAR_DECL" ����, ��� ��������� ���������� ����. RELOC ���������, ������� �� ��������� �������� EXP �������� ������� ����������. �������� ������, ������� "text_section" ��� ���� �� ����������� ��� ������ ��������.

�� ����������� ��� ������������, ���� �� ��������� ��� ���������� ������ ��� ������ � ��������� � ������ ������ ������ ��� ������ (������ ��������� ������).

"SELECT_RTX_SECTION (MODE, RTX)"

��������(�) C ��� ������������ �� ��������������� ������ ��� ������ RTX � ���� MODE. �� ������ �������, ��� RTX - ��������� ��������� � RTL. �������� MODE ��������� �� ����������� ������ "const_int" rtx. �������� ������, ������� "text_section" ��� ���� �� ����������� ��� ������ ��������.

�� ����������� ��� ������������, ���� �� ��������� ��� ��������� � ������ ������ ������ ��� ������.

"JUMP_TABLES_IN_TEXT_SECTION"

���������� ��� ������������, ���� ������� �������� (��� "tablejump" insns) ������ ���� �������� � ��������� ������, ������ � ��������� ����������. ����� ������������ ������ ������ ������ ��� ������.

��� ������������ �� ����� ��������, ���� ��� ���������� ������� ������ ������ ��� ������.

"ENCODE_SECTION_INFO (DECL)"

���������� ��� ������������, ���� ������ �� ������ ������ �������������� ��-������� � ����������� �� ���������� ��� �������, ��������� �������� (��� �� ���, � ����� ������� ��� ���������).

����������� ������������, ���� ����, ����������� ���������� ����� ����, ��� rtl ��� DECL ��� ������ � ����������� � "DECL_RTL (DECL)". �������� rtl ����� "mem", ����� �������� - "symbol_ref".

������� ���� ��� ���� ������������ : ���������� ������ � "symbol_ref" (���� "SYMBOL_REF_FLAG") ��� ��������� ���������� ������ ����� � "symbol_ref" (���� ������ ���� ������������ ��� ����������).

"STRIP_NAME_ENCODING (VAR, SYM_NAME)"

����������� SYM_NAME, � ��������� �������� ����� ����� � VAR, ��� ��������, ������� �������� ���������� � �������. ���������� ��� ������������, ���� "ENCODE_SECTION_INFO" �������� ������ ����� �������.

6.15 ����������-����������� ���

���� ������ ��������� ������������, ������� �������� ������������ ����������-����������� ���. ������� ����������� ���� ����������� ������������ ��� ��������� ����������� PIC; �� ������ ����� �������� ��������� ����������� "GO_IF_LEGITIMATE_ADDRESS" � "PRINT_OPERAND_ADDRESS", ����� ��� "LEGITIMIZE_ADDRESS". �� ������ �������� ����������� "movsi" ���, ����� ��� ��������� ��������������� ��������, ����� �������� ������� �������� ������������� �����. ��� ����� ������������ ����� ��������� ��������� ������������� ���������� ���, ����� ��� ������������ ������������� ������.

"PIC_OFFSET_TABLE_REGNUM"

����� ��������, ������������� ��� ��������� ������� ������� ����������� ������ � ������. � ��������� ������� ���� ������� ��������� � "application binary interface" (ABI). ����� ��� ������������ ����������, RTL ������������ ��� ����� �������� ���� ���, ��� � ���������� ����� � ���������� ��������� �����. ���� ��� ������������ �� ����������, �������-��������� ����� ������� ������������ ����� ������� (� ������ �������������).

"PIC_OFFSET_TABLE_REG_CALL_CLOBBERED"

���������� ��� ������������, ���� �������, ������������ "PIC_OFFSET_TABLE_REGNUM", ���������� (clobbered) �����������. �� ����������� ��� ������������, ���� "PIC_OFFSET_TABLE_REGNUM" �� ����������.

"FINALIZE_PIC"

��������� ����������-����������� ���, ����� ��� ��������� ��������� (A � B) ��������� ���������� ����� ���������� (libC.a), ����� ���������� ����� ���� ��������, � ����������� �� ����, ������������ �� ���������� � ���� �� ������ ������ � ����� ����������. � ��������� �� ���� ���� ����������-����������� ��� ������� �� ������ ������������� ��������� �������� ���������, �� ����� ������������ ���� ���������� ������������� ���� �������� ���������.

������������ "FINALIZE_PIC" ������ ��� �������, ����� �������� ��� ����������� ����, ��� ������ ������� ������������� � ������������ ���, �� �� ������. (��� �� ��������� ������, ������ ��� � ������ ���������� inline-�������, ��� ���� �� � �������� ����� �������� PIC, ���������� � �������, ������� ������������ inline-������� � ��������������� � ���������.)

"LEGITIMATE_PIC_OPERAND_P (X)"

��������� C, ������� ������� �� ���� ���� X - ���������� ���������������� ������� �� ������� ������ ��� ��������� ����������-������������ ����. �� ������ �������, ��� X ������������� "CONSTANT_P", ��� ��� �� �� ������ ��������� �����. �� ������ ����� �������, ��� FLAG_PIC �������, ��� ��� �� �� ������ ��������� �����. �� �� ������ ���������� ��� ������������, ���� ��� ��������� (������� "SYMBOL_REF") ����� ���� ����������������� ���������� ��� ��������� ����������-������������ ����.

6.16 ����������� ��������� ����� ����������

���� ������ ��������� ������������, �������������� ���� ������� ������� � �������� ����, ��� ������ ������� �� ����� �����������, � �� ����, ��� ��� ������� ������.

������ ��������� ������������� �����

�������� ������ ��������� ������������� �����.

"ASM_FILE_START (STREAM)"

��������� C, ������� ������� �� stdio STREAM �����, ������� ������ ���������� ������������ ����.

������ ��� ������������ ������������, ����� ������� ������, ���������� "#NO_APP", ������� �������� ������������, ������� �� ����� ������� �� ����������� �����������, �� �������� GNU ����������, ��� �� ����� �� ������� �����, �������� ��������� ����������� ����������.

�� ��������, ������� ���������� SDB, ���������� ������� ��������� �������; ��. "attasm.h".

"ASM_FILE_END (STREAM)"

��������� C, ������� ������� �� stdio STREAM �����, ������� ������ ������������� ������������ ����.

���� ��� ������������ �� ����������, �� ��������� ������ ���������� �� ������ ��������� � ����� �����. ����������� ������ �� ������� �������� �����������.

�� ��������, ������� ���������� SDB, ���������� ������� ��������� �������; ��. "attasm.h".

"ASM_IDENTIFY_GCC (FILE)"

�������� C ������ ������ ����������, ������� �������������� ��������� ���� ��� ��������������� GNU CC (��� ������ GNU-������������).

���� �� �� ����������� ��� ������������, ��������� ������ "gcc_compiled.:". ��� ������ �����������, ����� ���������� ������, ������� �� BSD ��������, ������� �� ����� ��������� �� ����� ������ �������. GDB ��������� ����������� ����� ������� ��� ������ ������� �������� ���������� ���������.

�� ��-BSD �������� �� ������ ���������� ����� � GDB ������ ��������. ���� GDB �� ������������ �� ����� �������, �� ������ ���������� ��� ������������ � ������ �����.

"ASM_COMMENT_START"

��������� ��������� C, �����������, ��� �������� ����������� �� ������� ����������. ���������� ���������, ��� ����������� ������������� � ����� ������.

"ASM_APP_ON"

��������� ��������� C ��� ������, ������� ����� ������� ����� ������ ���������� (��� ���������������� �������) "asm". ������ ��� - "#APP", ������� �������� ������������, �� ������� ������� �� ����������� �����������, �� ���������� GNU ����������, ��� �� ������ ��������� ����������� ������ �� ������������ ������������ �����������.

"ASM_APP_OFF"

��������� ��������� C ��� ������, ������� ����� ������� ����� ������� ��������� (��� ���������������� ������) "asm". ������ ��� - "#NO_APP", ������� ������� GNU ���������� ��������� �����, ����� �������������, ������� ��������� ��� �������� ������ �����������.

"ASM_OUTPUT_SOURCE_FILENAME (STREAM, NAME)"

�������� C ������ COFF ���������� ��� DWARF-���������� ����������, ������� ����� �� stdio ����� STREAM, ��� ���� � ������ NAME - ������� �������� ����.

��� ������������ �� ���� ����������, ���� �������� ����������� ����� ������ ��� ������� ������������� �����.

"ASM_OUTPUT_SOURCE_LINE (STREAM, LINE)"

�������� C ������ �� stdio STREAM DBX ��� SDB ���������� ���������� ����� ����� ��� ������ ����� LINE �������� ��������� �����.

��� ������������ �� ���� ����������, ���� ����������� ����� ���������� ���������� ��� ������������� ���������, ����������.

"ASM_OUTPUT_IDENT (STREAM, STRING)"

�������� C ������ ����-�� � ������������ ����, ����� ���������� "#ident" ���������, ���������� ����� STRING. ���� ��� ������������ �� ����������, ������ �� ��������� ��� "#ident" ���������.

"ASM_OUTPUT_SECTION_NAME (STREAM, DECL, NAME)"

�������� C ������ ����-�� � ������������ ����, ����� ������������� �� ������ NAME ��� ������� DECL, ������� �������� "FUNCTION_DECL", "VAR_DECL" ��� "NULL_TREE". ��������� ������� ������� �� ������������ ������������ �������. �� ����������� ��� ������������ � ����� �������.

� ��������� ����� ��� ������������ ������������ ������ ����� ������������ �������� �������. ����� ��� ������������ �� ����������, �������� ������� ���������.

"OBJC_PROLOGUE"

�������� C ������ ����� ������������ ����������, ������� ������ �������������� ����� ������������ Objective C �������� ��� ������� ���������. �������� ����������� ������ ��� ���������� ��������� �� Objective C.

����� ������

�������� ������ ������.

"ASM_OUTPUT_LONG_DOUBLE (STREAM, VALUE)"

"ASM_OUTPUT_DOUBLE(STREAM, VALUE)"

"ASM_OUTPUT_FLOAT(STREAM, VALUE)"

"ASM_OUTPUT_THREE_QUARTER_FLOAT(STREAM, VALUE)"

"ASM_OUTPUT_SHORT_FLOAT(STREAM, VALUE)"

"ASM_OUTPUT_BYTE_FLOAT(STREAM, VALUE)"

��������� C ������ �� stdio STREAM ������������ ������� ��� ���������� ��������� � ��������� ������ �� "TFmode", "DFmode", "SFmode", "TQFmode", "HFmode", ��� "QFmode", ��������������, �������� ������� - VALUE. VALUE - ��������� C ���� "REAL_VALUE_TYPE". ������������ ���� "REAL_VALUE_TO_TARGET_DOUBLE" ������� ��� ��������� ���� �����������.

"ASM_OUTPUT_QUADRUPLE_INT(STREAM, EXP)"

"ASM_OUTPUT_DOUBLE_INT(STREAM, EXP)"

"ASM_OUTPUT_INT(STREAM, EXP)"

"ASM_OUTPUT_SHORT(STREAM,EXP)"

"ASM_OUTPUT_CHAR(STREAM,EXP)"

�������� C ������ �� stdio STREAM ������������ ������� ��� ���������� ������ ����� ������ 16, 8, 4, 2 ��� 1 ����, ��������������, �������� �������� - VALUE. �������� EXP ����� ���������� RTL, ������� ������������ ���������� ��������. ����������� "output_addr_const(STREAM,EXP)" ����� ������� ��� �������� ��� ������������ ���������.

��� �� ����� ���������� ��� ������������ ��� �������� �������, ��� "UNITS_PER_WORD", ���� �������� ������������ ���� �� ������������ ������� ������������, ��������������� ������� "UNITS_PER_WORD", �� ������ ��� ������� �����.

"ASM_OUTPUT_BYTE (STREAM, VALUE)"

�������� C ������ �� STREAM ������������ ������� ��� ���������� ���������� �����, ����������� �������� VALUE.

"ASM_BYTE_OP"

��������� ��������� C, ������ ��������������, ������������ ��� ������������������ �������� � ���� ����. ���� ��� ������������ �� ����������, �� ��������� - "byte".

"ASM_OUTPUT_ASCII (STREAM, PTR, LEN)"

�������� C ������ �� stdio STREAM ������������ ������� ��� ���������� ��������� ���������, ���������� LEN ���� � PTR. PTR - ��������� C ���� "char*", � LEN - ��������� C ���� "int".

���� ��������� ����� ".ascii" ��������������, ��� � Berkeley Unix ����������, �� ����������� ������������ "ASM_OUTPUT_ASCII".

"ASM_OUTPUT_POOL_PROLOGUE (FILE FUNNAME FUNDECL SIZE)"

�������� C ������ ������������ ������ ��� ����������� ������ ����������� pool ��� �������. FUNNAME - ������, ������ ��� �������. ���� ��������� ��� �������� �������, �� ����� ���� ������� ����� FUNDECL. SIZE - ������ � ������ ������������ pool, ������� ����� ������� ���������� ����� ����� ���������.

���� pool-������� �� ��������� (������� ������), �� �� ���� ���������� ��� ������������.

"ASM_OUTPUT_SPECIAL_POOL_ENTRY (FILE, X, MODE, ALIGN, LABELNO, JUMPTO)"

�������� C (� ������ � ������� ��� ��� ���) ������ ��������� � ����������� pool, ���� ��� ������� ����������� ���������. (���� ������������ �� ��������� ������ ��� �� �� �� ���� ��� ��������� RTL, ������� ����� ���������� ������� �������.)

�������� FILE - ����������� I/O-�����, ��� ������ ������������� ����. X - ��������� RTL ��� ���������, ������� ���� �������, � MODE - ��� (� ������, ���� X - "const_int"). ALIGN - ��������� ������������ ��� �������� X; �� ������ ������� ������������ ���������, ����� ����������� ��� ������������.

�������� LABELNO - �����, ������������ �� ���������� ����� ��� ������ ����� pool. ����������� ���� ������������ ������������ �� ����� ����������� ����� �� ��������������� �����. ��� ��� ��� �������� :

ASM_OUTPUT_INTERNAL_LABEL (FILE, "LC", LABELNO);

����� �� �������� ������ pool ��������� �������, �� ������ ��������� �� ��������� "goto" � ����� JUMPTO. ��� ������������ ��������� ����� ��� �� ������ ������� ��������.

��� �� ����� ���������� ��� ������������, ���� ��� ������ �� ������ ��.

"IS_ASM_LOGICAL_LINE_SEPARATOR (C)"

���������� ��� ������������ ��� ��������� C, ������� ������� �� ����, ���� C ������������ ��� ���������� ����������� ����� �����������.

���� �� �� ����������� ��� ������������, �� �� ��������� ������ ������ ";" �������������� ��� ���������� ����������� �����.

"ASM_OPEN_PAREN"

"ASM_CLOSE_PAREN"

��� ������������ ���������� ��� ��������� ��������� C, ����������� ��������� ���������� ��� ����������� �������������� ���������. ��������� ����������� ��������� ��� ����������� ����������� :

 #define ASM_OPEN_PAREN "("
 #define ASM_CLOSE_PAREN ")"
��� ������������ �������������� "real.h" ��� ��������� ����������� "ASM_OUTPUT_DOUBLE" � �������� :

"REAL_VALUE_TO_TARGET_SINGLE (X, L)"

"REAL_VALUE_TO_TARGET_DOUBLE (X, L)"

"REAL_VALUE_TO_TARGET_LONG_DOUBLE (X, L)"

��� ����������� X ���� "REAL_VALUE_TYPE" � ������� ������������� � ��������� ������, � ��������� ������� ������� � ������� � ���������� ���� "long int", ����� �������� - L. ����� ��������� � ��������� ������� ���������� �������� ��������� �������� ���� ������ � ��������� ������ : 32 ���� �� ���� ������ � ������ "long int" ������� �������. ������ ������� ������� �������� 32 ���� ����������, ���� ���� "long int" �� ������ ������ ����, ��� 32 ����.

�������� ��������� ������� ����������� ���, ����� �� ����� �������� ��, ��������� "fprintf", � �������, � ������� ��� ������ ��������� � ������ ������� ������.

"REAL_VALUE_TO_DECIMAL (X, FORMAT, STRING)"

��� ������������ ����������� X ���� "REAL_VALUE_TYPE" � ����������� ����� � ��������� � ���� ������ STRING. �� ������ �������� � STRING ����� ���������� �������� ����� ������, ����� ��������� ���������.

�������� FORMAT - ��� "printf"-������������, ������� ������ ������������ ����, ��� ������������� ������ ������.

����� �������������������� ����������

������ �� ����������� � ���� ������� ������������, ����� ��������� ��� ������ �� ������ ��������� �������������������� ����������.

" ASM_OUTPUT_COMMON (STREAM, NAME, SIZE, ROUNDED) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������������� ����������� ����� ����� NAME �������� SIZE ����. ���������� ROUNDED - ������, ����������� ������ �� ������ ������������ ������� ��������� ���������� ��������.

����������� ��������� " assemble_name (STREAM, NAME) " ��� ������ ������ �����; �� � ����� ��������, ��������� �������������� ��������� ���������� ��� ����������� ����� � ������� �� ����� ������.

��� ������������ ������������, ��� ��������� ������������ ����������� �������������������� ���������� ����������.

" ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT) "

������� " ASM_OUTPUT_COMMON ", �� ����������� ����, ��� ������� ������������ ��� ���������, ����� ��������. ���� �� ����������� ��� ������������, ��� ������������ ������ " ASM_OUTPUT_COMMON ", � ���� ��� ������ �������� � ��������� ���������� ������������ ����������. ������������ ������������ ��� ����� �����.

" ASM_OUTPUT_SHARED_COMMON (STREAM, NAME, SIZE, ROUNDED) "

���� ����������, �� ������� " ASM_OUTPUT_COMMON ", �� ����������� ����, ��� ��� ������������, ���� ��������� NAME. ���� ��� �� ����������, ����� �������������� " ASM_OUTPUT_COMMON".

" ASM_OUTPUT_LOCAL (STREAM, NAME, SIZE, ROUNDED) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ����������� ���������� ��������� ����� ����� NAME �������� SIZE ������. ���������� ROUNDED - ��� ������, ����������� ������ �� ������ ������������, ���������� ���������� ��������.

����������� ��������� " assemble_name (STREAM, NAME) " ��� ������ ������ �����; �� � ����� ���� �������� �������������� ��������� ���������� ��� ����������� ����� � ������� �� ����� ������.

��� ������������ ������������, ��� ��������� ������������ ����������� �������������������� ����������� ����������.

" ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT) "

������� " ASM_OUTPUT_LOCAL ", �� ����������� ����, ��� ������� ������������ ��� ���������, ����� ��������. ���� �� ����������� ��� ������������, ��� ������������ ������ " ASM_OUTPUT_LOCAL " � ���� ��� ������� �������� � ��������� ���������� ������������ ����������. ������������ ������������ ��� ����� �����.

" ASM_OUTPUT_SHARED_LOCAL (STREAM, NAME, SIZE, ROUNDED) "

���� ����������, ������� " ASM_OUTPUT_LOCAL ", �� ����������� ����, ��� ��� ������������, ���� ��������� NAME. ���� �� ����������, ����� �������������� " ASM_OUTPUT_LOCAL".

����� � ��������� �����

��� ��������� � ������ �����.

" ASM_OUTPUT_LABEL (STREAM, NAME) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������������ ����� NAME. ����������� ��������� " assemble_name (STREAM, NAME) " ��� ������ ����� ���������������; �� � ����� �����, ��������� �������������� ��������� ���������� ��� ����������� ����� � ������� �� ����� ������.

" ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������ ������, ������������ ��� ���������� ����� NAME ������������ �������. ��� ������������ �������� �� ����� ����������� ����� (�������� ������������� "ASM_OUTPUT_LABEL "). �������� DECL - ��� " FUNCTION_DECL " ���� ������, ��������������� �������.

���� ��� ������������ �� ����������, �� ��� ������� ������������ ������� �������� ��� ����� (����������� " ASM_OUTPUT_LABEL ").

" ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������ ������, ������������ ��� ���������� ������� �������, ������� ������������. �������� NAME - ��� �������. �������� DECL - ��� " FUNCTION_DECL " ���� ������, ��������������� �������.

���� ��� ������������ �� ����������, �� ������ ������� �� ���������.

" ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������ ������, ������������ ��� ���������� ����� NAME ������������������ ������������ ����������. ��� ������������ ������ �������� ����������� ����� (��������, ��������� " ASM_OUTPUT_LABEL "). �������� DECL - " VAR_DECL " ���� ������, ��������������� ����������.

���� ��� ������������ �� ����������, �� ��� ���������� ������������ ������� �������� ��� ����� (����������� " ASM_OUTPUT_LABEL ").

" ASM_FINISH_DECLARE_OBJECT (STREAM, DECL, TOPLEVEL, ATEND) "

�������� C (��� ����� � �������) ��� ���������� ���������� ����� ����������, ����� ���������� ��������� ������������� ��������� �, ����� �������, ���� ����������� ���������� ������ �������, ����� �� ��������������� ���������������. ������������ � ��������, ��� ���������� ��������� ���-���� ������������ ������� �������.

���� �� �� ����������� ��� ������������, �� ��� ������������ ����, ��� �� ����������� �� ��� ������ �������.

" ASM_GLOBALIZE_LABEL (STREAM, NAME) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ��������� ������, ������� ������ ����� NAME �������- ���, �.�. ��������� ��� ������ �� ������ ������. ����������� ��������� " �ssemble_name (STREAM, NAME) " ��� ������ ������ �����; �� � ����� ����� ��������� �������������� ��������� ����������, ������� ������ ��� ��� ���������� � ������� �� ����� ������.

" ASM_WEAKEN_LABEL "

�������� � (��� ����� � �������) ��� ������ � stdio ����� STREAM ��������� ������, ������� ������ ����� NAME "���- ���", �� ���� ��������� ��� ������ �� ������ ������, �� ��- ���������� ������ �����, ����� ��� ������ ��������� ������- �����. ����������� ��������� " assemble_name (STREAM, NAME) " ��� ������ ������ �����; �� � ����� ����� ��������� �������������� ��������� ����������, ������� ������ ��� "������" � ������� �� ����� ������.

���� �� �� ����������� ��� ������������, GNU CC �� ����� ������������ "������" ������� � �� �� ������ ���������� ������������ " SUPPORTS_WEAK ".

" SUPPORTS_WEAK "

��� ��������� C, ������� �������, ���� �������������� "������" �������.

���� �� �� ����������� ��� ������������, " defaults.h " ���� ����������� �� ���������. ���� " ASM_WEAKEN_LABEL " ����������, ����������� �� ��������� " 1 "; ����� - " 0 ". ���������� ��� ������������, ���� �� ������ ��������� ���������� ������ �������� � ������ ����������� ���� " -melf ".

" ASM_OUTPUT_EXTERNAL (STREAM, DECL, NAME) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������ ������, ������������ ��� ���������� ����� �������� ������� NAME, �� ������� ��������� ��� ����������, �� ������� �� ���������. �������� DECL - ���� ������ ��� ����������.

��� ������������ �� ����������� ����������, ���� �� ��������� ������ ��������.� GNU ���������� � ����������� Unix ����������� ������ �� ���������.

" ASM_OUTPUT_EXTERNAL_LIBCALL (STREAM, SYMREF) "

�������� C (��� ����� � �������) ��� ������ � STREAM ������������� ��������������� ��� ���������� �������� ����� ������������ �������. ��� ������������ ������� �������� SYMREF, ������� ����� ��� " rtx " � �������� " symbol_ref ".

��� ������������ �� ����������� ����������, ���� �� ��������� ������ ��������.� GNU ���������� � ����������� Unix ����������� ������ �� ���������.

" ASM_OUTPUT_LABELREF (STREAM, NAME) "

�������� C (��� ����� � �������) ��� ������ � stdio ����� STREAM ������ � ���������� ���������� �� ����� NAME. ��� ������ �������� " _ " ����� ������, ���� ��� ������� � ����� ������������ �������, ��� � ����������� Berkeley Unix ������. ��� ������������ ������������ � " assemble_name ".

" ASM_OUTPUT_INTERNAL_LABEL (STREAM, PREFIX, NUM) "

�������� C ��� ������ � stdio ����� STREAM �����, ��� ������� ������� �� ������ PREFIX � ������ NUM.

������ ����������, ����� ��� ����� ���� ������� �� �����, ������������ ��� ������� � ���������� �� ������ ������������. ����� ��������������� ��������� ����� ����� ��������� � ����������� �������.

���������� ��������� ���������� ����� �� ���������� ������� ���������� �����. ����������� ����������� ����� ���������� ��� ������������ �����, ������� ������ ���� ���������; �� ������ �������� ������ "L" � ������ ����� ����� ���� ������. �� ������ ��������, ����� ���������� ���������� ���� �������, � ��������� �����.

������� ����������� ���� ������������ ���������:

  fprintf (STREAM, "L%s%d:\n", PREFIX, NUM)
" ASM_GENERATE_INTERNAL_LABEL (STRING, PERFIX, NUM) "

�������� C ��� ���������� � ������ STRING �����, ��� ������� ������� �� ������ PREFIX � ������ NUM.

��� ������, ����� ��������� ������ �� " assemble_name ", ������ ������������ �����, ������� " ASM_OUTPUT_INTERNAL_LABEL " ������������ �� � ���� �� PREFIX � NUM.

���� ������ ���������� �� "*", �� " assemble_name " ������� ��������� ����� ������ ��� ���������. ������������� "*" ����� ������� ����� ������ ��� " ASM_GENERATE_INTERNAL_LABEL ". ���� ������ �� ���������� �� "*", �� " ASM_OUTPUT_LABELREF " ����� �������� ������ ��� ������. (�������, " ASM_OUTPUT_LABELREF " �������� ����� ������ ������ ��������� ��������, ��� ��� �� ������ ����� ��, ��� ��� ������ �� ����� ������.)

" ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER) "

�������� C ��� ������������ OUTVAR (���������� ���� " �har* ") ������ �������������� ������, ���������� �� ������ NAME � ������ NUMBER, � ����������� ��������� ���������� ����������. ����������� " �lloca ", ����� �������� ������ ��� ������.

������ ����� �������������� ��� �������� ��� " ASM_OUTPUT_LABELREF ", ����� ������� ����� ���������� ��� ���������� ����������� ���������� NAME. �������������, ������ ������ ���� �����, ����� ���� � ���������� ������ ��� ����������. �������� NUMBER �������� ������ ���, ����� ��� ������������ �����������; ��� ������������� ��������� ����� ��������� ���������� ����������� ������������ ����������� � ��������� ����������.

� ������, ��� ������ �� ������ ���� ���������� C ���������������, ����� ������������� ����� �������� � ������������ ��������� ������������. ����������� ����������� ��������� ����� "." ��� "%" � �������� ����������; ��������� �� ������� ���� ������ �� ���� ������ ����� ������ � ������� ����� ����������.

" ASM_OUTPUT_DEF (STREAM, NAME, VALUE) "

�������� C ��� ������ � stdio ����� STREAM ���� ����������, ������� ����������(�����������) ������� NAME �������� VALUE.

���� SET_ASM_OP ���������, �������������� ����������� �� ���������, ������� ��������� ��� ����������� ������.

" OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME) "

���������� ��� ������������, ����� �������� �������� �� ��������� ������������ �����, ������������ ��� ������� Objective C.

�������� �� ��������� ��� - ���������� ����� ������, �������������� ������ ������ (��������, " _1_Foo "). ��� ������� � ���������� ��� ��������� ����� ���������� � ��� ���������� (��������, " _1_Foo_Bar ").

��� ����� ��������� � ����������� ������, �� ������� ��������� ��� �������, ��� ��� �������� ������ �� ����������� � �����. ������� ��������� ������� ���������� ������ ������� ���������� ����.

BUF - ��������� ���� " char * ", ������� ���� ��� �����, � ������� �������� ���; ��� ����� ����� ��������� ����� CLASS_NA- ME, CAT_NAME � SEL_NAME ���� 50 ��������.

�������� IS_INST ����������, �������� �� ����� ����������� ������ ��� ������� ������; CLASS_NAME - ��� ������; CAT_NAME - ��� ��������� (��� NULL, ���� ����� �� ���������� � ���������); � SEL_NAME - ��� ���������.

�� ��������, ��� ��������� ����� ������������ ����� � ��������, �� ������ ������������ ��� ������������, ����� ���������� ����� �������� �����.

��� �������������� ������� �������������

����������������� ��������� ��� ��������� ������ �������� "������������" (���������� ����� " �������������� ������������� ") - ������� ��� ������������� ������ ���������, ����� ��� �������� ������. ��� ������� ������ ���� ������� ������, ��� ��������� "�����������" - �� ���� ����� ������� " main "

�������������� ��������� ������ ���������� "�����������" (���������� ����� " �������������� ���������� "), ������� ������ ����������, ����� ��������� ��������� ������.

����� ��������� �������� ������� ������������� � ����������, ���������� ������ ������� ���-��� � ���� ����������, ����� ��� ������� ���������� � ��������������� �����. ����� �� ����������� ���������� � ����� �������, �� ������ �������, ��� ������� ���.

������� ��� �������� �������, �������� GCC ������������ ���������� ������� ������������� � ����������. ������ ������ ����� ��� ��������. ������ �� ��������� �������� ����� ��� ���� ������� ���������.

����������� ������ ����������� ��� ������ �� ���� ������� - ������ ������� �������������, ���������� " __ CTOR_LIST __ ", � ������ ������� ����������, ���������� " __ DTOR_LIST __ ".

������ ������ ������ ���������� � ������������� ��������� �� ������� (������� ����� ��������� 0, -1 ��� ���������� ���������� �� ������� ����� ����, � ����������� �� �����). �� ��� ���� ������������������ �� ���� ��� ����� ������� - ���������� �� ������������ (��� �����������), ��������������� ���������� �� �������, ���������� ����.

� ����������� �� ������������ ������� � ������� ������������ �����, " crtstuff.c " ��� " libgcc2.c " ������������� ��� ������ � ������ ������� � ������. ������������ ��������� � �������, �������� ������� � ������; ����������� - � ������ �������.

����� ������ ������ ��������� ����������� ������������� �������� ������ ��� �������� ���������� �����, ������� ������������ ����������� ��������� �������. ������� ������������ �������� ��� ������ ������������� � ��� ������ ������������.����������� ��� ���������� ".ctors " � ".dtors ". ������ ��������� ����, ������� ���������� ������� �������������, ����� �������� ����� � ������ ������������, ����� ������� �� ��� �������. ����������� �������� ��� ��� ����� � ���� ".ctors" ������. ������� ���������� �������������� ����������.

����� ������������ ���� �����, ���������� ���������� ������������ " ASM_OUTPUT_CONSTRUCTOR " � " ASM_OUTPUT_DESTRUCTOR ". ������ ����� �������� ��, ������� " svr4.h ".

���� �������� ������������ �������, ������� ��� ��������, � ����������� �� ����, ��� ���������� ��� � " crtstuff.c ". � ��������, ������� ������������ "init" ������, ������� ����������� ��� ������� ���������, ����� " crtstuff.c " ������������� � ���� ������. ���������, ����������� " gcc " ��������� �������� ���:

  ld -o OUTPUT_FILE crtbegin.o ... crtend.o -lgcc

��������� ������� (" __ do_global_ctors ") ���������� � init ������� " crtbegin.o "; ������� ������� ���������� � init ������� " crtend.o ". ����������� �������� ��� ��� ����� ������� ������, �������� ����� �������. ���� �����-�� �� ���������������� ��������� ������ �������������� � �������� ����� ����, �� ���� ��� ����� ����������� ��� ����� ���� " __ do_global_ctors ".

����� ������������ ���� �������, ����� �������������� ���������� ������������ " INIT_SECTION_ASM_OP ".

���� ������� init ������ �� ��������, " INIT_SECTION_ASM_OP " �� ������������. ����� " __ do_global_ctors" ������������ � ����� ������� ������� ���� ������ �������� � ������������� � " libgcc.a ". ����� GCC ����������� ������������ �������, ���������� " main ", �� ��������� ����� ��������� " __main " ��� ������ ���������� ��� ����� ������� �������. ������� " __main ", ����� ������������ � " libgcc2.c ", ������ �������� " __ do_global_ctors ".

� �������� �����, ������� �� ������������ ������������ �������, c���� ������� ��� ��������. � ����� ������� �������� ������ �������������� GNU ����������� (GNU " ld ") � ������ " a.out ". � ���� ������ " ASM_OUTPUT_CONSTRUCTOR " ������������ ���, ����� ����������� ".stabs" ���� ���� " N_SETT ", �������� �� ��� " __CTOR_LIST__ ", � � ������� void �������, ���������� ��� ������������� ��� ��������. GNU ����������� ���������� ��� ��� ������, ����� �������� �������� � "set"; �������� ������������� �,� �������� �����, ���������� � ����������� ���� ��� ������ � �������, ��������� ����, �� ��������� (������������) � ������ � �������� ��������� ����. " ASM_OUTPUT_DESTRUCTOR " ������������� ����������. ��� ��� ��� ���������� init �������, ���������� " INIT_SECTION_ASM_OP " ���������� ���������� " main " �������� "__ main " ��� ����, ������� ������� �������������.

��������� ������� �� ���������� �� ������������ �������, �� GNU �����������. �� ��������������, ����� ��������� ������������ ���������� � ����� ������������ ������� �����, ������� GNU ����������� �� ������������, ���� " ECOFF ". � ���� ������, " ASM_OUTPUT_CONSTRUCTOR " �� ���������� " N_SETT " ������; ������� ������������� � ���������� ������������ ������ �� ����� ������. ��� ������� �������������� ��������� �� ���� ����������, ������� ���������� " collect2 ". ��� ��������� ��������� ����������� ��� ������������� GNU CC; ��� ��������, �������� ������� �������������, �� ����� ������������� ��������� �������� ������� ������������� � ����������. ��� ������� ���������� ����� " __ main ", ��� ������� ����.

����� �� ���� ����� ������������ ���������� ������� ������, ��������� �� ������������ �������, � �������� " config ". ��� ����� ���������� ��� ������������ ���������. ������ ���������� �������� ���� �� ��� � ���� �������-��������� ������������. ��� ��������� �����:

" aoutos.h "

��� ������������ ������, ������������ ������ ` a.out '.

" next.h "

��� ������������ ������, ������������ ������ ` MachO '.

" svr3.h "

��� ������� V ������� 3 � �������� ������, ������������ ������ ` COFF '.

" svr4.h "

��� ������� V ������� 4 � �������� ������, ������������ ������ ` ELF '.

" vms.h "

��� ������������ ������� VMS.

��������� ������ ��������� ���������� ������������, ������� ��������� � ����������� ��������� ������� ���������� � �������������.

������������, ����������� ����������� �������������

��� ������������, ����������� ���������� ������������ ������� ������������� � ����������:

" INIT_SECTION_ASM_OP "

���� ��� ����������, ��� ��������� ��������� C ��� �������� ����������, ����� ���������������� ��������� ������ ��� ��� �������������. ���� �� ����������, GNU CC �������, ��� ������ ������� �� ����������. ����� �� ����������� ����������� ������� ��� ������� ������������� � ����������, ��� ������������ ����� ��������� ���, ��� " crtstuff.c " � " Libgcc2.c " ����������������� ��� ������� ������� �������������.

" HAS_INIT_SECTION "

���� ��� ����������, " main " �� ����� �������� " __ main ", ��� ������� ����. ��� ������������ ������ ������������ ��� ������, ������� ��������� ����������� init ������� �� ������������ ������, ���� OSF/1, � �� ������ ������������ ���� ��� ������ ,������� ������������ " INIT_SECTION_ASM_OP ".

" LD_INIT_SWITCH "

���� ����������, ��� ��������� ��������� � ��� �������������, ������� �������� ������������, ��� ��������� ������ - ������������ �������������.

" LD_FINI_SWITCH "

���� ����������, ��� ��������� ��������� � ��� �������������, ������� �������� ������������, ��� ��������� ������ - ������������ ����������.

" INVOKE __ main "

���� ����������, " main " ����� �������� " __main ", �������� �� ����������� " INIT_SECTION_ASM_OP ". ��� ������������ ������ ���� ���������� ��� ������, ��� init ������ ���������� �� ����������� �������������, �� ������� ��� ����������� ������� ������������� � ������������.

" ASM_OUTPUT_CONSTRUCTOR (STREAM, NAME) "

��� ������������ ������������ ��� �������� C ��� ������ � ����� STREAM ���� ���������� ��� �������������� ������ ������� NAME �� ����� �������������.

�����������, ��� NAME - ��� ������� C, ��������������� ������������� ������������. ��� ������� �� ����� ����������. ����������� ������� " assemble_name " ��� ������ ����� NAME; ��� ��������� ����� ������������� ��� ������� �������������� ��������������, ����� ��� ���������� �������������.

���� �� �� ����������� ��� ������������, ������ ������������ �� ��������� ��� �������������� ������ �������. ��� ���������, ����� ������� ���������� ������ �������� - ��������, ����������� ��������� " collect2 ", ������� ������������� ������� ��������, ����� ����� ��� ������� �� �� ������.

" ASM_OUTPUT_DESTRUCTOR (STREAM, NAME) "

������ �� " ASM_OUTPUT_CONSTRUCTOR ", �� ������������ ������ ��� ������� ���������� ��� ������� �������������.

���� ���� ������� ���������� " collect2 " ��� �������� ��������� �������������, �� ��� ��������� ������ ���������� " nm ", ��� ������ � ��������� ����� ������� ������������, ������� ����� �������. �� ��������� ����� ������ ��� ������������ ����� ������������, ����� ��������� ������ " collect2 " ������� (�, � ��������� �������, ��������� �� �������� ������):

" OBJECT_FORMAT_COFF "

���������� ��� ������������, ���� ������� ���������� ������ COFF (Common Object File Format) ��������� ������, ����� " collect2 " ��� ���������� ���� ������ � ������������� ��������� ����� ��������������� ��� ������ ������������ ������� ������������/�����������.

" OBJECT_FORMAT_ROSE "

���������� ��� ������������, ���� ������� ���������� ������ ROSE ��������� ������, ����� " collect2 " ��� ���������� ���� ������ � ������������� ��������� ����� ��������������� ��� ������ ������������ ������� ������������/�����������.

��� ������������ ����� ������ ������ ��� "�������" �����������; " collect2 " ��� ����� �����-����������� ������ ���������� " nm " ��� ������� ������.

" REAL_NM_FILE_NAME "

���������� ��� ������������ ��� ��������� ��������� �, ���������� ��� �����, �������������, ����� ��������� " nm ". �� ��������� ������ ����, ������� ��� " nm ".

���� ������� ������������ �������������� ���������� � ����� ���������, ����� ������ � ������ ������������ ����������� ������ ���������� ��� ���������� ���������, ����� ���������� ��� ������������, ����� ��������� ��������� ������� ������� ������������� � ���������� � �������������� �����������:

" LDD_SUFFIX "

��� ������������ ������������ ��� ��������� ��������� C, ���������� ��� ���������, ������� ������ � ������ ������������ �����������, ����� ��� " "ldd" " ��� SunOS 4.

" PARSE_LDD_OUTPUT (PTR) "

��� ������������ ������������ ��� C ���, ������� ��������� ����� ������ �� ������ ���������, ������������ " LDD_SUFFIX ". PTR - ���������� ���� " char * ", ������� ��������� �� ������ ������ ������ �� " LDD_SUFFIX ". ���� ������ ������ � ������ ������������ �����������, ��� ������ ����������� PTR � ������ ����� ����� �� ���� ������. ����� �� ������ ���������� PTR �� " NULL ".

����� ������ ����������

����� ����������� ����� ������ ����������.

" REGISTER_NAMES "

������������� �, ���������� ������������ ����� ��� �������� ���������, ������ �� ������� - ��������� ��������� C. ��� ����������� ���������� ��������� � ����������� � ���� ����������.

" ADDITIONAL_REGISTER_NAMES "

���� ����������,�� ��� C ������������� ��� ������� ��������, ���������� ��� � ����� ��������. ��� ������������ ���������� �������������� ����� ��� ���������� ���������, ����� ������� �������� ����� " asm " � ����������� ��� ������ �� �������� � �������������� �������������� ����.

" ASM_OUTPUT_OPCODE (STREAM, PTR) "

���������� ��� ������������, ���� ������������ ������������� ���������, ������� ������� ��������� ����� ��� �������� ������.

����������� - �������� ��� ��������� C, ������� ������� ��� �������� ������� ���������� � stdio ����� STREAM. ������� PTR - ���������� ���� " char * ", ������� ��������� �� ��� ���� �������� �� "����������" ����� - �����, ������� ������� � �������� ��������. ��� ����������� ������ ������� ��� ���� �������� � STREAM, �������� ����� ������ ����������, � ��������� ���������� PTR, ����� ��� ��������� �� ����� ���� ��������, ����� �� �� ��������� ������.

����������,���� ����������� ������������ ����� ������������ ������ ��� ������, ��� ��� ��� ���� ��������; �� ���� �� ������ ���������� �����, ������� �������� "%"-������������������ ��� ����������� ���������, �� ������ ������������ � ����������� ��������������. ��� ������ ���� ���� ����������, ��� PTR ������������� ��� ������ ������, ������� �� ������ ���������� ���������.

���� ���� ����������� �������� ��������, ��� ����� ���� ������� ��� �������� " recog_operand ".

���� ������������ ������ �� ����������, ������� ��������� ������� ��������.

" FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS) "

���� ����������, ��� �������� C, ������� ����� �������� ����� ����� ������� ���� ���������� ��� INSN, ����� �������� ����������� �������� ���, ����� ��� ���������� ��-�������.

���������� OPVEC �������� ������, ���������� ��������, ������ �� INSN, � NOPERANDS - ����� ��������� �������, ������� �������� �������� ������ ��� insn. ���������� ����� ������� - ��, ��� ����� ��������������, ��� �������������� ������� insn � ��� ����������, ��� ��� ����� �������� ������������ �����, ������� ���������� �������.

��� ������������ �������, ����� ������ ���������� ���������� ���������� ���� ���� �������� ����������; ��������� ��� ���- ��������� �����, ����� ��������� ������� ����� ������ ���������� ��-������� (��������, � ��������������� ����������). �������, ��������� � ���������� ����������, �������������� �� �������������� ������� insn, ������ ���� ���������� ��� ������ �������� �������� ������ � ���� ��������.

���� ��� ������������ �� ����������, ��� ������������ ������� ���������.

" PRINT_OPERAND (STREAM, X, CODE) "

��������� ��������� �, ����� ������� � stdio ����� STREAM ��������� ���������� ��� �������� ������� X. X - ��������� RTL.

CODE - ��������, ������� ����� �������������� ��� ����������� ������ �� ���������� �������� ������ ��������. ������������, ����� ���������� �������� ������ ���������� ��-������� � ����������� �� ���������. CODE ������� �� "%" ������������, ������� ��������������, ����� ��������� ������ ��������. ���� ������������ ���� ������ " %DIGIT ", �� CODE - 0; ���� ������������ ���� " %LTR DIGIT ", �� CODE - ASCII ��� ��� LTR.

���� X - �������, ��� ������������ ���������� ��� ��������. ����� ����� ���� ������� � ������� " reg_names ", ��� �������� - "char *[] ". " reg_names " ���������������� �� " REGISTER_NAMES ".

����� �������� �������� ����� ������������ " %PUNCT " (�� "%" ������� ������ ����������), ��� ������������ ���������� � ������� ���������� ��� X � �������� ���������� ��� CODE.

" PRINT_OPERAND_PUNCT_VALID_P (CODE) "

��������� C, ������� �������, ���� CODE - ���������� ������ ���������� ��� ������������� � ������������ " PRINT_OPERAND ". ���� " PRINT_OPERAND_PUNCT_VALID_P " �� ����������, ��� ��������, ��� ������� ���������� (����� ������������, "%") �� ������������ ����� �������.

" PRINT_OPERAND_ADDRESS (STREAM, X) "

��������� �������� C ��� ������ � stdio ����� STREAM ���������� ���������� ��� �������� �������, ������� �������� ������� ������, ��� ����� - X. X - ��������� RTL.

�� ��������� ������� ��������� ��� �������������� ������ ������� �� ������, �� ������� ����� ���������. �� ���� ������� ���������� ������������ " ENCODE_SECTION_INFO ", ����� ��������� ���������� � " symbol_ref ", � ����� ��������� �� �����. * ��.: ������ ����������::.

" DBR_OUTPUT_SEQEND (FILE) "

�������� C, ������� ������ ���� �������� ����� ����, ��� ���� �������� ��� ���������� ���������� ������. � ������ ������������� �������� "dbr_sequence_length ", ����� ���������� ����� ������, ����������� ��������������� (����, ���� � ��������� ����� �� ��������� ������������������), ����� ������, ������� ������� ������ ������.

�� ����������� ��� ������������, ���� �� ������ ������, �� ��� ������� ��� ������ ������, ���� ������ ������������������ �������� ������ ���� (�������� � ���������).

�������� ��������, ��� ��������� ������ ��� ������ �� ������� �������� ������ ���� ������������, ����� ����� ���� �� ����������� � ������ ������������������ (�� ���� ����� ������ ������������ �� ����������, ��� ����� ����������� ������ �� ���� �������). ���������� " final_sequence " ����� ����, ���� ������������������ �� ��������������, ����� ��� �������� ��������� " sequence " rtx.

" REGISTER_PREFIX "

" LOCAL_LABEL_PREFIX "

" USER_LABEL_PREFIX "

" IMMEDIATE_PREFIX "

���� ����������, �� ��� ��������� ��������� � ��� ������������� ��� " %R ", " %L "," %U ", � " %I " ����� " asm_fprintf " (��. " final.c "). ��� �������, ����� ��������� " md " ���� ������ ������������ ��������� �������� ����������. � ���� ������ ��������� " tm.h " ����� ����� ���������� ��� ������������ �� �������.

" ASSEMBLER_DIALECT "

���� ������� ������ ������������ ��������� �������� ����� ����������, (�����, ��� ��������� ���� ��������), ���������� ��� ������������ ��� ��������� C, ������� ���� �������� ������ �������� ����� ���������� ��� �������������, ���� - ������ �������.

���� ��� ������������ ����������, �� ������ ������������ ����������� " {option0|option1|option2...} " � �������� ������ �������� (*��.: ������� ������::.) ��� � ������ ��������� " asm_fprintf ". ��� ����������� ������� " option0 ", " option1 " ��� " �ption2 ", � �.�., ���� �������� " ASSEMBLER_DIALECT " ����� ����, ���� ��� ���, � �.�. ��� ����������� ������� ������ ���� ����� ��������� ���� ������� ��������.

���� �� �� ����������� ��� ������������, ������� " {", " | " � "} " �� ����� �������� ������������ ��������, ����� ��� ������������ � �������� ��� ��������� ��� " asm_fprintf ".

���������� ������������ " REGISTER_PREFIX ", " LOCAL_LABEL_PREFIX ", " USER_LABEL_PREFIX " � " IMMEDIATE_PREFIX ", ���� �� ������ �������� ��������� � ���������� ����� ���������� ���� ��������. ���������� " ASSEMBLER_DIALECT " � ����������� " {option0|option1} " ���������, ���� ������� ���������� ������ � �������� ����� ����, ��� ��������� ���� �������� ��� ������� ���������.

" ASM_OUTPUT_REG_PUSH (STREAM, REGNO) "

��������� C ��� ������ � STREAM ���������� ���� ����������, ������� �������� ���������� ������� ����� REGNO � ����. ��� �� ����������� ������ ���� �����������, ��� ��� ��� ������������ ������������ ������ ��� ��������������.

" ASM_OUTPUT_REG_POP (STREAM, REGNO) "

��������� C ��� ������ � STREAM ���������� ���� ����������, ������� ����������� ���������� ������� ����� REGNO �� �����. ��� �� ����������� ������ ���� �����������, ��� ��� ��� ������������ ������������ ������ ��� ��������������.

����� ������ �������������

��� �������� ������ �������������.

" ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, VALUE, REL) "

��� ������������ ����� ���������� �� �������, ��� ������ � �������� ������������� ����������.

����������� ������ ���� ���������� C ��� ������ � stdio ����� STREAM ���������������� ���������� ��� ��������� �������� ����� ����� �������. VALUE � REL - ������ ���� ���������� �����. ����������� ���� ����� ��������� � �������������� " ASM_OUTPUT_INTERNAL_LABEL ", � ��� ������ ���������� ����� ����� �� �������. ��������,

  fprintf (STREAM, "\t.word L%d-L%d\n",
  VALUE, REL)
" ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE) "

��� ������������ ����� ���������� �� �������, ��� ������ � �������� ������������� ���������.

����������� ������ ���� ���������� C ��� ������ � stdio ����� STREAM ������-���������� ���������� ��� ��������� ������ �� �����. VALUE - ����� ���������� �����, ����������� ������� ��������� � �������������� " ASM_OUTPUT_INTERNAL_LABEL ". ��������,

  fprintf (STREAM, "\t.word L%d\n", VALUE)
" ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE) "

���������� ��� ������������, ���� ����� ����� �������� �������� ������ ���������� ��������. ������ ��� ��������� - ����� ��, ��� ��� " ASM_OUTPUT_INTERNAL_LABEL "; ��������� �������� - ������� ��������, ������� ������� �� ����(" jump_insn ", ���������� " addr_vec " ��� " addr_diff_vec ").

��� ����������� ������������ �� ������� V, ��� ������ ��������� " swbeg " ��� �������.

���� ��� ������������ �� ����������, ��� ����� ��������� " ASM_OUTPUT_INTERNAL_LABEL ".

" ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE) "

���������� ���, ���� ���-������ ����������� ������ ���������� � ����� ������� ��������. ������������ ������ ���� �������� C, ������� ����� �������� ����� ����, ��� ����� ������� ��� ���������� ��� �������. �������� ������ ������ ��������������� ��� � stdio ����� STREAM. �������� TABLE �������� �������� �������� insn, � NUM - ����� ���������� �����.

���� ��� ������������ �� ����������, � ����� ������� �������� ������ ������������ �� ���������.

������� ���������� ��� ������������

����� ����������� ������� ��� ������������.

" ASM_OUTPUT_ALIGN_CODE (FILE) "

��������� C ��� ������ ������, ����� ��������� ������� ������� ��������, ������� �������� ����������� � ������� ����, ������� ����� ���� ��������� ������ ��� ������ ��������.

��� ������������ �� ����������� ����������, ���� � ������ ������ �� ����� �������� ������������ ������������. ����������� �������� �������� ������ ������ �� ���������� ��� ������������.

" ASM_OUTPUT_LOOP_ALIGN (FILE) "

��������� C, ��� ������ ������, ����� ��������� ������� �������, ������� �������� ����������� � ������ �����.

��� ������������ �� ����������� ����������, ���� � ������ ������ �� ����� �������� ������������ ������������. ����������� �������� �������� ������ ������ �� ���������� ��� ������������.

" ASM_OUTPUT_SKIP (STREAM, NBYTES) "

�������� C ��� ������ � stdio ����� STREAM ������� ����������, ����� ��������� ������������ �������� ����� �� NBYTES ����. ��� ����� ������ ��������� ���� ��� ��������. NBYTES - ��������� C ���� " int ".

" ASM_NO_SKIP_IN_TEXT "

���������� ��� ������������, ���� " ASM_OUTPUT_SKIP " �� ����� �������������� � ��������� �������, ������ ��� ��� �� ����� ��������� ���� � �����, ������� ���������. ��� ��� �� ������ Unix ��������, ��� ��������������� �������� ������ ���������� ������ ������ �������, ��� ����, ����� ��� ������������ � ��������� �������.

" ASM_OUTPUT_ALIGN (STREAM, POWER) "

�������� C, �������� ��� ������ � stdio ����� STREAM ������� ���������� ��� ����, ����� ��������� ������� ����� �� �������� 2 � ������� POWER ����. POWER ������ ���� ���������� C ���� " int ".

6.17 ���������� �������������� �������� �������

����� �����������, ��� ���������� ���������� ����������.

������������, ������� ������������ �� ��� ���������� �������

��� ������������ ������������ �� ��� ���������� �������.

" DBX_REGISTER_NUMBER (REGNO) "

��������� C, ������� ���������� ����� �������� DBX ��� ������ �������� ����������� REGNO. � ���������� ������� �������� ����� ��������� ����� ���� ����� REGNO. �� ������ ������� ��������, � ������� ���������� �����, � DBX - ���, ��� ��������. � ����� ������� ��������� �������� ������ ����� ���� ����� ��� ����������� � ������ - ��� DBX.

���� ��� �������� ����� ���������������� ������ ������ GNU CC, � ��� ����� �������������� ��� ����, ����� ��������� �������� �� ���������� ����, �� ��� *������* ����� ���������������� ������ ����� ������������� " DBX_REGISTER_NUMBER ". �����, ��������� �� ������ ���������� � ����� ����, ������ ��� ��� �������, ��� ����������� ���� ����� ����������������� � �� ����������� ����� ���������.

���� �� ����������� " DBX_REGISTER_NUMBER " ��������, ������� �� ��������� ���� ���������, �� �� ������ ������ ����� �������������� ����������� ����� ��������� ���������.

" DEBUGGER_AUTO_OFFSET (X) "

��������� C, ������� ���������� ������������� �������� �������� ��� �������������� ����������, ������� ����� X (��������� RTL). ���������� �� ��������� ������������, ��� X ������������� �� ��������� ����� � ���� �������� �� ��������� �����. ��� ��������� ��� ������� �����, ������� ���������� ����� ������� ��� DBX ��� COFF-��������� ����� ������� ��� SDB � ��������� ������� ��������� �����, ����� ������������ " -g " �����.

" DEBUGGER_ARG_OFFSET (OFFSET, X) "

��������� C, ������� ���������� ������������� �������� �������� ��� ���������, �������� ����� X (��������� RTL). ����������� �������� - OFFSET.

" PREFERRED_DEBUGGING_TYPE "

��������� C, ������� ���������� ��� ������ �������, ������� GNU CC ����������, ���� ������������ ��������� " -g " ��� " -ggdb ". ���������� ���, ���� �� ������������ GNU CC, ����� ������������ ����� ��� ���� ������ ������� ������. � ��������� ����� ���������� �������� - " DBX_DEBUG "," SDB_DEBUG ", " DWARF_DEBUG " � " XCOFF_DEBUG ".

�������� ���� ������������ ������������ ������ �� ���������� ����� �� ���������; ������������ ����� ������ �������� ���������� ��� ������, ��������� " -gstabs ", " -gcoff ", " -gdwarf ", ��� " -gxcoff ".

������������� ����� ��� ������ DBX

��� ������������� ����� ��� ������ DBX.

" DBX_DEBUGGING_INFO "

���������� ��� ������������, ���� GNU CC �������� ����� ������� ��� DBX � ����� �� ����� ` -g '.

" XCOFF_DEBUGGING_INFO "

���������� ��� ������������, ���� GNU CC �������� ����� ������� ������� XCOFF � ����� �� ����� ` -g '. ��� - ������� DBX �������.

" DEFAULT_GDB_EXTENSIONS "

���������� ��� ������������, ����� ��������������, ����� �� GNU CC �� ��������� ������������ ����������� ������ GDB �� ���������� ���������� DBX (������, ��� ���������� ���������� DBX-������� ������ ���������). ���� �� �� ����������� ��� ������������, �������� �� ��������� - 1: ������ ������������ ����������� ����������, ���� ��� ����� ������� �����������.

" DEBUG_SYMS_TEXT "

���������� ��� ������������, ���� ��� ".stabs " ������� ������ ���� �������� � ��������� �������.

" ASM_STABS_OP "

��������� ��������� �, ���������� ��� ������������� ���������������, ������� ����� ������������ ������ ".stabs", ����� ���������� ������� ������ �������. ���� �� �� ����������� ��� ������������, ������������ ".stabs". ��� ������������ ����������� ������ ��� DBX-������� ���������� �� �������.

" ASM_STABD_OP "

��������� ��������� �, ���������� ��� ������������� ���������������, ������� ����� ������������ ������ ".stabd", ����� ���������� ���������� ������,��������� �������� �������� ������� ������������. ���� �� �� ����������� ��� ������������, ������������ ".stabd". ��� ������������ ����������� ������ ��� DBX-������� ���������� �� �������.

" ASM_STABN_OP "

��������� ��������� �, ���������� ��� ������������� ���������������, ������� ����� ������������ ������ ".stabn", ����� ���������� ���������� ���������� ������. ���� �� �� ����������� ��� ������������, ������������ ".stabn". ��� ������������ ����������� ������ ��� DBX-������� ���������� �� �������.

" DBX_NO_XREFS "

���������� ��� ������������, ���� DBX �� ����� ������� �� ������������ ����������� " xsTAGNAME ". � ��������� �������� ��� ����������� ������������ ��� �������� ������ ������ �� ���������, ���������� TAGNAME. � ������ ��������, ��� ����������� �� �������������� ������.

" DBX_CONTIN_LENGTH "

���������� ��� � ���������� �� ������� DBX-������� ������ ������������ (����������� �� ��� ��������� ".stabs" ���������), ����� ��� ��������� ��������������� ����� (�� ��������� 80 ��������). � ��������� ������������ �������� DBX ������� ����� �����������; � ������ ����������� �� ������ �����������. �� ������ ��������� ����������� ������������ ���� ������������ ��������� ����. �� ������ �������� �������� �� ��������� ����� �����������, ��������� ��� ������������ ��� ��������� ��� �����, ������� ��� ���������.

" DBX_CONTIN_CHAR "

������ ����������� ������������ ����������� ������� "\" � ����� ".stabs" ������, ����� ����������� �������.��� ������������� ������ ���� ������� �������, ���������� ��� ������������ ��� ���������� ��������� ��� �������, ������� �� ������ ������������. �� ����������� ��� ������������, ���� ��������� ����� ����� �������� ��� ����� �������.

" DBX_STATIC_STAB_DATA_SECTION "

���������� ��� ������������, ���� ���������� ������� � ������� ������ ����� ���������� ".stabs" ��������������� ��� ������������ ����������� ����������.

" DBX_TYPE_DECL_STABS_CODE "

�������� ��� ������������� � ���� "code" ��������� ".stabs" ��� ����������� ����. �������� �� ��������� - " N_LSYM ".

" DBX_STATIC_CONST_VAR_CODE "

�������� ��� ������������� � ���� "code" ��������� ".stabs" ��� ����������� ����������, ����������� � ��������� �������. ������ DBX �� ������������ �������� "����������" ������� ������� ���. �������� �� ��������� - " N_FUN ".

" DBX_REGPARM_STABS_CODE "

�������� ��� ������������� � ���� "code" ��������� ".stabs" ��� ���������, ������������� � ���������. ������ DBX �� ������������ �������� "�����������" ������� ������� ���. �������� �� ��������� - " N_RSYM ".

" DBX_REGPARM_STABS_LETTER "

����� ��� ������������� � ���������� ������ DBX ��� ������������� ������� ��� ���������, ������������� � ���������. ������ DBX ������ �� ������������ ������-������ ������� ������� ���. �������� �� ��������� - " "P".

" DBX_MEMPARM_STABS_LETTER "

����� ��� ������������� � ���������� ������ DBX ��� ������������� ������� ��� ��������� �����. �������� �� ��������� - " "p" ".

" DBX_FUNCTION_FIRST "

���������� ��� ������������, ���� DBX ���������� ��� ������� � �� ���������� ������ �������������� ���� ���������� ��� ���� �������. ������, � ������� DBX, ���������� �� ������� ��������� ������� �� ����� ����������.

" DBX_LBRAC_FIRST "

���������� ��� ������������, ���� " N_LBRAC " ������ ��� ����� ������ �������������� ���������� �� ������� ��� ���������� � �������, ������������ � ���� �����. ������, � ������� DBX, " N_LBRAC " ������ ���� ������.

" DBX_BLOCKS_FUNCTION_RELATIVE "

���������� ��� ������������ ���� �������� �������, ������������ ������� ����� (" N_LBRAC " ��� " N_RBRAC "), ������ ���� ������������ ������ ��������� �������. ������ GNU C ���������� ���������� �����.

�������� ������� ��� ������� DBX

��� ������� ��� ������� DBX.

" DBX_OUTPUT_LBRAC (STREAM, NAME) "

���������� ��� ������������, ����� �������, ��� �������� � STREAM ���������� ���������� ��� ������ ������� ��� ���� ����������. �������� NAME - ��� ��� ������� ���������� (��� ������������� � " assemble_name "), �������� �������� - ����� ������ �������.

" DBX_OUTPUT_RBRAC (STREAM, NAME) "

������� " DBX_OUTPUT_LBRAC ", �� ��� ����� �������.

" DBX_OUTPUT_ENUM (STREAM, TYPE) "

���������� ��� ������������, ���� ������� ������ ������� ����������� ��������� ��� ������ ���� ������������. ��� ����������� ������ ���� C ���������� (��� ����� � �������) ��� ������ ��������������� ���������� � STREAM ��� ���� TYPE.

" DBX_OUTPUT_FUNCTION_END (STREAM, FUNCTION) "

���������� ��� ������������, ���� ������� ������ ������� ������������ ������ � ����� ���������� �� ������� ��� �������. ����������� ������ ���� ���������� C (��� ����� � �������) ��� ������ ��������������� ���������� � STREAM. FUNCTION - ��� " FUNCTION_DECL " ���� ��� �������.

" DBX_OUTPUT_STANDARD_TYPES (SYMS) "

���������� ��� ������������, ���� ��� ����� �������������� ������� ������ ����������� ����� ������ � ������ ����������. �������� SYMS - "������", ������� �������� �������� ���� ���������������� ���������� ��������, ������� ����� ����� ������.

������ DBX ����� ���������� � ����������� ����� ��� ����� ����� � ��������, ������ ������� ��� ������ ���������������� ���� �������������� �����, �� �� � ������������� �������.

�� ��������� �������, ���������� ������� ������� ��������� ���������� ����. ����� ������� ���, ���������� " DBX_OUTPUT_STANDARD_TYPES ", ����� ��� �������� ��� ������� � ����������� �������. ��� ���������������� ����, ������� �� ���� �� ��������, ����� ���������� ����� ��� �������������� �������.

������ ������������, ����� �� ���������� ��� ������������ ���, ����� ��� �������� ������ ��� C. ��� ������� ���������� ���������� ��� ������� � ����������� ���������� �����, ������ ��� ������ ���� ����� ����� ������ ����� �����. ������ ������ ������� ���� ������� � ���, ����� ����������� SYMS, ����� �������, ������ �� �� ��� �����. ��� ������:

           {
             tree decl;
             for (decl = syms; decl; decl = TREE_CHAIN (decl))
               if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
                            "long int"))
                 dbxout_symbol (decl);
             ...
           }
��� ��������� ������ �� ������, ���� ��������� ��� �� ����������.

��. ������� " init_decl_processing " � " c-decl.c ", ����� ����� �����, ������������ ��� ���� ���������� ����� C.

��������� ���� ���������� ������� ����:

           {
             tree decl;
             for (decl = syms; decl; decl = TREE_CHAIN (decl))
               if (TREE_CODE (decl) == TYPE_DECL
                   && (TREE_CODE (TREE_TYPE (decl))
                       == INTEGER_CST)
                   && TYPE_PRECISION (TREE_TYPE (decl)) == 16
                   && TYPE_UNSIGNED (TREE_TYPE (decl)))
           /* This must be `unsigned short'.  */
                 dbxout_symbol (decl);
             ...
           }

����� ������ � ������� DBX

����� ����������� ����� ����� � ������� DBX.

" DBX_WORKING_DIRECTORY "

���������� ���, ���� DBX �����, ����� ������� ������� ��� ������� � ������ ��������� ����.

�������� ��������, ��� ������� ������� ������ ������������, ���� �������� ���������� GDB.

" DBX_OUTPUT_MAIN_SOURCE_FILENAME (STREAM, NAME) "

�������� C ��� ������ DBX ���������� �� ������� � stdio ����� STREAM, ������� ����������, ��� ���� NAME - �������� ���� ��������� - ���� ���� ����������� ��� ������� ���� ��� ����������. ��� ������������ ���������� ������ �������, � ������ ����������.

��� ������������ �� ��������� � �����������, ���� ����������� ����� ������ ��� DBX ���������� ���������� �������� ����������.

" DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (STREAM, NAME) "

�������� C ��� ������ DBX ���������� �� ������� � stdio ����� STREAM, ������� ���������, ��� ������� ������� � ������� ���������� ���������� NAME.

��� ������������ �� ��������� � �����������, ���� ����������� ����� ������ ��� DBX ���������� ���������� �������� ����������.

" DBX_OUTPUT_MAIN_SOURCE_FILE_END (STREAM, NAME) "

�������� C ��� ������ DBX ���������� �� ������� � ����� ���������� ��������� ����� ��������� NAME.

���� �� �� ����������� ��� ������������, ������ ������������ �� ��������� � ����� ����������, ��� �������� ���������� ��� ����������� �����.

" DBX_OUTPUT_SOURCE_FILENAME (STREAM, NAME) "

�������� C ��� ������ DBX ���������� �� ������� � stdio ����� STREAM, ������� ����������, ��� ����� NAME - ������� ���� ���������. ���� ����� ������������ ������ ���, ����� ���� ������������ �� ������ �������� ���� � ���������� " #include ", ����� ����������� ����� ��� ������� " #line ".

��� ������������ �� ��������� � �����������, ���� ����������� ����� ������ ��� DBX ���������� ���������� �������� ����������.

������������ ��� SDB � ������ DWARF

��� ������������ ��� ������ DWARF � SDB.

" SDB_DEBUGGING_INFO "

���������� ��� ������������, ���� GNU CC ������ ������� ����� ������� � coff-������� ��� SDB � ����� �� ����� ` -g '.

" DWARF_DEBUGGING_INFO "

���������� ��� ������������, ���� GNU CC ������ ������� ����� ������� � DWARF ������� � ����� �� ����� ` -g '.

" PUT_SDB_... "

���������� ��� ������������, ����� �������� ��������� ���������� ��� ����������� SDB �������� ����������. ��. " sdbout.c " ��� ������ ���� ����������� � �� ����������. ���� ����������� ����������� ���������, ��� �� ����� ���������� �� ��������������.

" SDB_DELIM "

��������� ���������� �� ������������ ����� � ������� ��� �����������, ���� ����� SDB ����������� ����������. � ���� ������ ���������� ��� ������������ ��� ������������ ����������� (������ " \n "). �� ����������� ���������� ����� ����� " PUT_SDB_OP " �����������, ���� ��� - ����������� ��������� ���������.

" SDB_GENERATE_FAKE "

���������� ��� ������������, ����� �������� ������� ����� ���������� dummy ����� ��� ��������� ��������� � ����� �����������. ��. " sdbout.c " ��� ������� ����������.

" SDB_ALLOW_UNKNOWN_REFERENCES "

���������� ��� ������������, ����� ��������� ��������� ������ �� ���������, ����������� � ������������, ������� ��� �� ����������. �������� COFF �� ��������� ��������� ����������� ������, � MIPS ECOFF ������������ ��.

" SDB_ALLOW_FORWARD_REFERENCES "

���������� ��� ������������, ����� ��������� ��������� ������ �� ���������, ����������� � ������������, ������� ��� �� ����������. ��������� ���������� �� ������������ ��������� ������, � �� ����� ��� ��������� ������� ���.

6.18 �����-���������� � ����� � ��������� ������

� �� ����� ��� ��� ����������� ������ ���������� ���������� ������������� ��� ����� �����, ���������� ��������� ������������� ����� � ��������� ������. ��� ������, ��� ��� ������������ ���������� ������������� ����� � ��������� ������ (������������ �����) � ������������� ��������� ����� ���� ������� �� ������������� �� ������, �� ������� ���������� ����������.

�.�. ��������� ������� ������������� ����� ������������ ����� � ������� ��������� � ������ ��������, �� ������������ ���������� �� ����� ������������ ������������ ���������� ������� ������. �������������, ������������ ��������� ������ �������������� � ������� ������� ������. ��� ��������, ��� � ���� ������������ ���������� ������ ������������ `atof' ��� �������������� ������������ ��������. ������ ����� ������ �������������� ����������� ������������. ������� �������� ��� �� ������ ����������� ���������� ������� ������ (��� ������� �������� �� ������ ������������� ������).

������������ �� ��������� ������� ������ ���� ���������� ������ ���� �� ����������� ������������ ���������� ����� �������� � ���������� ��������� ����� � ��������� ������.

�����, �� ����������� �� ������. � ���� ������ ����� ����������� �������� �� ���������, ������������ ��� ������ `double' � `==' ��� �������� ���������, � �.�.

��� �� ����� ������������, ��� ����� ��� �� ����������� ������� ����� �� ���� �����������. ���������� ������� �� ���������� �������� ������� ����� �������� ������.

`REAL_VALUE_TYPE'

������������ ��� ���� ������ C, ������� ����� ������������, ����� ������� ������������ (� ��������� ������) �������� � ������� ������� ������. ������ ���� ��� ������ ���� `struct', ���������� ������ `int'.

`REAL_VALUES_EQUAL (X, Y)'

������������ ��� ��������� �� C, ������� ��������� ��������� ���� ��������, X � Y, ��� ���� `REAL_VALUE_TYPE'.

`REAL_VALUES_LESS (X, Y)'

������������ ��� ��������� �� �, ������� ��������� �������� �� X ������ ��� Y, ��� �������� ���� `REAL_VALUE_TYPE' � ���������������� ��� ����� � ��������� ������ � ������� ������� ������.

`REAL_VALUE_LDEXP (X, SCALE)'

������������ ��� ��������� �� C, ������� ��������� ����������� ������������ ������� `ldexp', �� ���������� ������������� ��������� ����� � ������� ������� ������. ��� X, ��� � �������� ��������� ����� ��� `REAL_VALUE_TYPE'. ������ ��������, SCALE - ����� �����.

`REAL_VALUE_FIX (X)'

������������, ������� ������������, ��� ��������� �� �, ������������� �������� � � ������������ ������� ������� ������ � ������ ��������� �����. � ����� ��� `REAL_VALUE_TYPE'.

`REAL_VALUE_UNSIGNED_FIX (X)'

������������, ������� ������������, ��� ��������� �� �, ������������� �������� � � ������������ ������� ������� ������ � ������ ������������ �����. � ����� ��� `REAL_VALUE_TYPE'.

`REAL_VALUE_RNDZINT (X)'

������������, ������� ������������, ��� ��������� �� �, ����������� �������� � � ������������ ������� ������� ������ � ������� ���� � ������ ����� (�� ��� ���� ��� �������� ������������). � ����� ��� `REAL_VALUE_TYPE'.

`REAL_VALUE_UNSIGNED_RNDZINT (X)'

������������, ������� ������������, ��� ��������� �� �, ����������� �������� � � ������������ ������� ������� ������ � ������� ���� � ������ ������������ ����� (�� ��� ���� ��� �������� ������������). � ����� ��� `REAL_VALUE_TYPE'.

`REAL_VALUE_ATOF (STRING, MODE)'

������������, ��� ��������� �� �, ������� ����������� ��������� ���� char* - STRING � ������������ ����� � ������� ������� ������, �������������� ����� MODE. � ����� ��� `REAL_VALUE_TYPE'.

`REAL_INFINITY'

���������� ��� ������������, ���� �������� ����������� ����������� ��������. � ����� ������ ������� �� ���� �������� ���������� ���������.

`REAL_VALUE_ISINF (X)'

������������, ��� ��������� �� �, ������� ���������� �������� �� ������������ ����� � ��������������. �������� ����� ��� `int'. �� ��������� ��� �������� `isinf'.

`REAL_VALUE_ISNAN (X)'

������������, ��� ��������� �� �, ������� ���������� �������� �� ������������ ����� "nan" (not-a-number [�� �����]). �������� ����� ��� `int'. �� ���������, ��� ����������, ����� ������� `isnan'.

���������� ��������� �������������� ������������, ���� �� ������ ����� �� ����� ������������ ���������� ����������� ������������ ������������ ��������. ���� �� �� �� ����������, �� ������������ ���������� ��� ��� ��������, �� ����������� ������������ ��������� �� �����.
`REAL_ARITHMETIC (OUTPUT, CODE, X, Y)'

������������, ��� ��������� �� �, ������� ��������� ��������� �������������� �������� ��� ��� ����� ���������� � ��������� ������. X � Y ���� `REAL_VALUE_TYPE`, ��������������� � ������� ������� ������. ��������� ����� ����� ��� �� ��� � ����� �� ������������� ����. ��������� ����������� � OUTPUT (OUTPUT ������ ���� ����������).

��������, ������� ����� ��������� ������������ CODE - �����, ������� ������ ���� �� ���������: `PLUS_EXPR', `MINUS_EXPR', `MULT_EXPR', `RDIV_EXPR', `MAX_EXPR' ��� `MIN_EXPR'.

���������� ���� ������������ ������������ �� �������� ������������. ���� ��������� ������������, ��������������� ������ ��������� �������� `return 0;', ������� ��������� �� ������������� ��������� ����������� �������������� ��������.

`REAL_VALUE_NEGATE (X)'

������������, ��� ��������� �� �, ������� ���������� ������������ �������� � � ���������� ������. ��� �, ��� � �������� ��������� ����� ��� `REAL_VALUE_TYPE' � ������������ � ������� ������� ������.

� ���� ������������ �� ������������ �������� ��������� � ������������, �.�. ������������ ����������.

`REAL_VALUE_TRUNCATE (MODE, X)'

������������, ��� ��������� �� �, ������� ��������������� ������������ �������� � � ��� MODE.

��� �, ��� � �������� ��������� ������������ � ������� ������� ������ � ����� ��� `REAL_VALUE_TYPE'. ��� �� �����, �������� ������ ����� ��������������� ������� �������, ����� ��� ����� ���� ��������� �������� ��� ��������� ���������, ��� ��� � �������� ����������� � ����� MODE.

� ���� ������������ �� ������������ �������� ��������� � ������������.

`REAL_VALUE_TO_INT (LOW, HIGH, X)'

������������, ��� ��������� �� �, ������� ��������������� ������������ ����� � � ����� ����� ������� ��������, ������� ����� ����������� � ���� ���������� ���� INT - LOW � HIGH.

`REAL_VALUE_FROM_INT (X, LOW, HIGH)'

������������, ��� ��������� �� �, ������� ��������������� ����� ����� ������� ��������, ������������� � ���� ���������� ���� INT - LOW � HIGH, � ������������ �����, ������� ����� ������������ � �.

6.19 ��������� ���������

����� ������������ ��������� ��������� ����������.

`PREDICATE_CODES'

���������� ���, ���� �� �������������� ���������� ����������� ��������� � ����� `MACHINE.c'. ��� ������������ ���������� � �������������� ������� ��������. ������ ���� � ��������� - ��� ���������, ������ - ������ ����� RTL. ��� ������� ��������� ���������� ������ ���� ����� RTL, ������� ����� ����������� � ����������, ��������������� ���������. �������� ����� ������ ������ ����������� ��������. ��� ������ ���� ������� �������� ��� RISC ������:

           #define PREDICATE_CODES \
             {"gen_reg_rtx_operand", {SUBREG, REG}},  \
             {"reg_or_short_cint_operand", {SUBREG, REG, CONST_INT}},
����������� ���� ������������ �� �������� �� ��������������� ��� (��� �� �����, ������������ �����������, � ������� �������� ��� ���, �������� ����� ���� ��������� � ������������ ��������, ����� �������� � ������ �����������). ������ ����� ��� ������� �������, ����������� � ������� `genrecog', ����� ���������� � �����������. � ��� ������� ����������. ������ ����� �������� � ������, ������������ ���� �������������, ���������, ������������ � ����������� insn.

`CASE_VECTOR_MODE'

��������� ��� ����� ����. ��� ���, ������� ������ ����� �������� ������� ���������.

`CASE_VECTOR_PC_RELATIVE'

���������� ��� ������������, ���� ������� ��������� �������� ������������� ������.

`CASE_DROPS_THROUGH'

���������� ��� ������������, ���� ����� �������� ��������� �� ����������� ������� �������� � ������ ���������� ��� 'case' insn. ��� ��������, ��� ������������ �� ��������� ����� � ���������������� ������������ 'case' insn-��.

`CASE_VALUES_THRESHOLD'

���������� ��� ������������, ��� ���������� �����, ��� ������� ����� ������������ ������� ���������, ��� ������ �������� ������. �� ��������� ��� ����� ������� ��� ����� � `casesi' ������������, � ���� ��� ���� ���������. ��� ����� ������ ��� ����������� ����� ��������.

`WORD_REGISTER_OPERATIONS'

���������� ��� ������������, ����� �������� ����� ���������� � ������������ ������� (�����) ������� ������, ��� ������ �����, ������ ����������� �� ���� ��������. ����������� RISC ����� ����� ����� �����������, � ����������� CISC ����� ���.

`LOAD_EXTEND_OP (MODE)'

���������� ��� ������������, ��� ��������� �� C, �����������, ����� insns, �������� �� ������ ��� MODE - ������������ ��� ��� ��� �����, ������ ���� �������� ����������, ���� ���������� �����, ������������ ���� ��� MODE. ��� ��� ����� MODE, ������� ���� ��������� ����� ������������ ������ ���������� `ZERO_EXTEND', ��� ����� ��������� ���������� - `SIGN_EXTEND', � `NIL' ��� ���������.

��� ������������ �� ���������� ���� MODE �� ������������ ���, ��� ���� ������ MODE ������ ��� �����, ��� `BITS_PER_WORD', ������� � ����� ������� ���� ������������ ����� ���������� ��� ������. �� ����������� ��� ������������ ���� ��� ������ ����� ���������� 'NIL'. �� �������, �� ������� ��� ������������ ����������, �� ������ ������ ���������� �� ��� ��������� `SIGN_EXTEND', ���� ��� ��������� `ZERO_EXTEND'.

`IMPLICIT_FIX_EXPR'

��������� ��� tree ����, ������� ������� ������������ �� ��������� ��� �������������� ������������ �������� � �������� � ������������� ������. ������ ������������ `FIX_ROUND_EXPR'.

`FIXUNS_TRUNC_LIKE_FIX_TRUNC'

���������� ��� ������������, ���� �� �� ����� �������, ������� ��������������� ������������ ����� � ����� � ��������� ������, ��� �� ��������� ��������������� � �����������.

`EASY_DIV_EXPR'

��������� ��� tree ����, ������� � ����� ������ �������� �������� ������� ����� ������� ��� ���������� ����. �� ����� ���� `TRUNC_DIV_EXPR', `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' ��� `ROUND_DIV_EXPR'. ��� ������ ��������� ������� ����������� ���, ��� ��� ��������� ���������� �� ������. `EASY_DIV_EXPR' ������������, ����� ��������� ������������ ����� �� ���� ���������� � ����� ������ ���� ������ ������ �� �� ������������� �������������.

`MOVE_MAX'

������������ ����� ������, ������� ���� ������� ����� ������ ����������� �� ������ � ������.

`MAX_MOVE_MAX'

������������ ����� ������, ������� ���� ������� ����� ������ ����������� �� ������ � ������. ���� ��� �� ����������, �� �� ��������� ������� `MOVE_MAX'. �����, ��� - ���������� ��������, ������� �������� ����� ������� �� ��������, ������� ��������� 'MOVE_MAX'.

`SHIFT_COUNT_TRUNCATED'

��������� �� C, ������� �� ����� ����, ���� �� ���� ������ ����� �����, ���������� ������������ ��� ����� �������� ������, ����� ����� �����, ������� ��������� ��� ������������� ������������� �������.

����� ��� ������������ �� ����, ���������� ������� �� �������������, ��� ���������� �������� �����-�����������, ����-����������� � ��������� ����������� ��������� "�" ����������, ������� ������� ������ ������. �� �������, ������� ����������, ������� ��������� �� ������� ���� � ��������� ��������, ������� ����� �������� � ���� ���������� `bit test', ��������� `SHIFT_COUNT_TRUNCATED' ����� ������������ ����������� �������� ��������, ������� ������ ����������� ��� ���������� ������� �����.

���� ��� ���� ���������� ������� ������ (�������) � ������� (��� �������� ������� �����), ��� ���� �� ���������� ���������� ������� ����� � ���������� ��������, ��� ������� ���������� ��� ������������.

��� �� �����, �� ��������� �������, ����� ��� 80386 � 680x0, �������� �������� ������ � ���������� ������ � �� �������� � (��������� ��� �������������) ���������� ������� �����. ���������� ��� ����� ����� �������� `SHIFT_COUNT_TRUNCATED' ������ ����. ������ ����� �������� ������� � ���� `md', ������� �������� ��������������� �������� ���������� �������.

�� ������ �� ���������� ��� ������������ ���� ��� ������ ����� ����� �������� ����.

`TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'

��������� �� �, ������� �� �������� �����, ���� �� ���� ������ ��������� "���������������" ����� ����� �������� INPREC ��� � ����� �������� OUTPREC (��� OUTPREC ������ ��� INPREC) ������� ���������� � ���, ��� ���� �� ��� ����� ������ OUTPREC ����.

�� ������ �������, ��� ��������� ����� ���� 1.

����� `TRULY_NOOP_TRUNCATION' ���������� 1 ��� ���� �������� �����, ��� ������� `MODES_TIEABLE_P' ����� 0, ����� ���� ������������ ������������� ���. � ����� ������ ���������� `TRULY_NOOP_TRUNCATION' ��̣� ��� ����� �������� ����� �������� ���������.

`STORE_FLAG_VALUE'

��������� �� C, ������� ��������� ��������, ������������ ���������� ��������� � ������������ ����� � ����������� �������� ���������� ����� (`sCOND') ����� ������� �������. ��� �������� ������ ����������� �� *����* `sCOND' ��������, � �� ���� ���������� ���������, ��� ���������� ����� ��� `MODE_INT'.

�������� 1 ��� -1 ��������, ��� ����������, ���������� ���������, ���������� �������������� 1 ��� -1, ����� ��������� - ������ � 0, ����� ��������� - ����. ������ �������� ��������� ����� ���� ���������� �������������� ����� 1, ����� ��������� - ������. ��� �������� ���������������� � ���� �������� ���������, ������� ������������ ����� ������� �������� � `sCOND' �������. ����� ���������� ���� ������, ���� �������� ��� `STORE_FLAG_VALUE'. ������������ ������������ ������ ��� ����.

���� `STORE_FLAG_VALUE' �� 1 �� -1, �� ���������� ����������� ���, ��������� ������ �� ������������� ����. �� ��� �� ����� �������� ��������� ��������� �� ������������� ��������, ���� ���� ��� ��������� ������ �� ��� ��������� ���� � ��������� ������ ���� ���������������. ��������, �� �������, ��� ��������� ��������� ���������� �������� ���� `SImode' � ��� `STORE_FLAG_VALUE' ��������� ��� `0x80000000', �.�. ������ �������� ��� ����� ��������, ���������:

           (ne:SI (and:SI X (const_int POWER-OF-2)) (const_int 0))
����� ���� ������������� �

           (ashift:SI X (const_int N))
��� N ���������� ������ �������� ������ ��� ����������� ������������ ���� � �������� ���.

�� ���������� ������� ������� ������, ������� ������ ������������� ��� �������� ������� ��� �������� ������, �� �� ����������� �������� ������� ������ �����, �� �� �� ����� ����� �����. ���� �� ��������� ���������� GNU CC �� ����� ������, �������� ����������, ����������� ���������� "�" � 1 � ������� ��� ���������� ��������� � ����� ��� ����� (��. ��� ������� ��������� �� ������).

����� ������ ����� ����� ����� ����������, ������� �������� �������� �� ��������� (��� ����� �������). ��� ������� ��� ������ �������� ��� `STORE_FLAG_VALUE', � ������������� ����������, ������� ����� ������������:

������ ������ ����� ������������ ��������, ��������� ��� `STORE_FLAG_VALUE', � ��� ��������� � ����� �� ����� ����������. �� ����� ������� ��� ������� ��� �� ���������� ������� ��� ���� �������, ��������, �������, ���������������

           (set A (neg:M (ne:M B C)))
��������� ������ ����� ��� �� ��������� �������� `and' ��� `plus' ��� ���������� ���� ������� � � ������� ����������� ����������, ��� ��������������� insn `sCOND', �������������� `and' ��� `plus'. �� ���� ������� ��� ������� ���������� ������ �������. ����������� ����� `incscc' � `decscc' ��������������, ��� ��������, ������� ��������� �������� `plus' ��� `minus' ��� ���������� ���� �������. ��� �������� �������� `rs6000.md'. �� ������ ������������ GNU Superoptizer, ��� �� ����� ����� ������������������ ���������� �� ������ �������.

��� �� ����� ���������� `STORE_FLAG_VALUE', ���� ������ �� ����� ���������� ���������� �����.

`FLOAT_STORE_FLAG_VALUE'

��������� �� C, ������� ���� ��������� ������������ ��������, ������������, ����� �������� ��������� � ������������ ����������� ������. ���������� ��� ������������ �� ������, ���� ��� ����� �������� ���������, ������������ �������� � ��������� ������. ���� �� ����� ������ ���, �� ���������� ��� ������������ �� ����.

`Pmode'

��������� ��� ��������� ������ ����������. �� ����������� �����, ��� ������������ ������������ ��� ������������� �������, ��������������� ������ ����������� ���������; `SImode' �� 32-������ ������� � `DImode' �� 64-������. �� ��������� ������� ��� ������������ ������ ���� ����� �� ��������� ����� �����, ����� ��� `PSImode'.

������ `Pmode' ������ ���� �� ������� ���� ������ �� �������, ��� �������� `POINTER_SIZE'. ���� ��� �� �����, �� �� ������ ���������� ������������ `POINTERS_EXTEND_UNSIGNED' ����� ����������, ��� ��������� ��������� �� `Pmode'.

`FUNCTION_MODE'

��������� ��� ����, ������������� ��� ������ �� �������, ���������� � RTL ���������� ������. �� ����������� ����� ���� ��� ������ ���� `QImode'.

`INTEGRATE_THRESHOLD (DECL)'

��������� �� � ��� ������������� ����� ����������, ��� ������� ������� DECL ����� ������� inline. DECL ���� ���� `FUNCTION_DECL'.

�������� ���� ������������ �� ��������� ����� 64 ���� ����� ����������, ������� �������� �������, ���������� �� 8. ��������� ���� ��������, ��� �� RISC ������� ������� ������������ ������� ��������� ��������.

`SCCS_DIRECTIVE'

���������� ��, ���� ������������� ������� ������������ ��������� `#sccs', � �� �������� ��������� �� �������.

`NO_IMPLICIT_EXTERN_C'

���������� ��� ������������, ���� ��������� ����� �������� ������������ �++ ��� ��, ��� � �. ��� ������������ ��������� ������� ����� ������������� ��������� ������ ��������, ������������, ��� ���������� ������ ��������� � `extern "C" {...}'.

`HANDLE_PRAGMA (STREAM)'

���������� ��� ������������, ���� �� ������ ��������� �����-������ ������. ���� ��� ����������, �� ���������, �������������, ����� �������� `#pragma', ������ ���� ���������� �� �. �������� STREAM ���� ������� ����� stdio �� �������� �������� ����� ���������.

���� ������������� ����� `#pragma' ��� ������� ������ ����. ������������ ������� ���������� ��� ������������ - ��� ������������� � ������� �������������, ��������������� `#pragma' ���� ��� ������������ �������� �����, ������� �� ����������.

`VALID_MACHINE_DECL_ATTRIBUTE (DECL, ATTRIBUTES, IDENTIFIER, ARGS)'

���� ���������, �� ��� ��������� �� �, ��� �������� �� ����, ���� IDENTIFIER � ����������� ARGS ���� ����������� ���������� �������� ������� ��� DECL. �������� � ATTRIBUTES ���� �������������� ��������� ��� DECL.

`VALID_MACHINE_TYPE_ATTRIBUTE (TYPE, ATTRIBUTES, IDENTIFIER, ARGS)'

���� ���������, �� ��� ��������� �� �, ��� �������� �� ����, ���� IDENTIFIER � ����������� ARGS ���� ����������� ���������� �������� ������� ��� TYPE. �������� � ATTRIBUTES ���� �������������� ��������� ��� TYPE.

`COMP_TYPE_ATTRIBUTES (TYPE1, TYPE2)'

���� ���������, �� ��� ��������� �� �, ��� �������� ����, ���� �������� �� TYPE1 � TYPE2 ������������, ���� ���� ����������, � ��� ���� ��� ����� ���������� (� ���� ������ �������� warning).

`SET_DEFAULT_TYPE_ATTRIBUTES (TYPE)'

���� ����������, ����������� C, ������� ��������� �������� �� ��������� �������� � ������� ������������� ����.

`DOLLARS_IN_IDENTIFIERS'

���������� ��� ������������, ��� �� �������������� ������������� ������� '$' � ������ ��������������. �������� ������ ���� 0, 1 ��� 2. 0 ������, ��� �� ��������� '$' �� ��������; 1 ������, ��� ��������, ���� ������������ `-traditional'; 2 ������, ��� ��������, ���� `-ansi' �� ������������. �� ��������� 1. � ���� ������ ��� ���������� ��������� ��� ������������.

`NO_DOLLAR_IN_LABEL'

���������� ��� ������������, ���� ��������� �� ��������� ������ � �������, ����������� ������ '$'. �� ��������� � ������ ������������� � ������������ � G ++ ���������� ������ '$'. ���� ��� ������������ ����������, �� ������ '$' ������������ `.'.

`NO_DOT_IN_LABEL'

���������� ��� ������������, ���� ��������� �� ��������� ������ � �������, ����������� ������ '.'. �� ��������� � ������ ������������� � ������������ � G ++ ���������� ������ '.'. ���� ��� ������������ ����������, �� ������ ����� ��������������, ��� �� �������� ����� �������.

`DEFAULT_MAIN_RETURN'

���������� ��� ������������, ���� ������� ������� �������, ��� ������� `main' ������ ��������� �� ��������� ��������� ����������� �������� "������" (���� ������� ������ �������� ���� �� ����������).

����������� ������ ���� ���������� �� � (� ';'), ������������ ��������������� rtl �������. ��� ������������ ������ ��� �������������� ����� `main'.

`HAVE_ATEXIT'

���������� ��, ���� ������� ������� ������������ ������� `atexit' �� ANSI C ��������. ���� ��� �� ����������, � �� ��������� `INIT_SECTION_ASM_OP', �� `exit' �������, �������� �� ���������, ����� ������������ C ++.

`EXIT_BODY'

���������� ��, ���� ���� `exit' ������� ������ ������ ���-������ ����� ������ ������� ������� `_cleanup' ����� ����������� � `_exit'. ������������ `EXIT_BODY' ��������� ������, ���� �� ���������� �� 'HAVE_ATEXIT' �� 'INIT_SECTION_ASM_OP'.

`INSN_SETS_ARE_DELAYED (INSN)'

���������� ��� ������������ ��� ��������� �� C, ������� ������� �� ����, ���� ����������� ����� �������� ����� ���������, ��������� ������� � ���� �������� INSN, ���� ���� �� ��������� ������������� ��� ���������� ������� � INSN. INSN - ������ ��� 'jump_insn' ��� 'insn'; GNU CC �����, ��� ������ 'call_insn' ����� ���� ���. �� �������, �� ������� ��������� 'insn' ��� 'jump_insn' ������������� �������� �������� ������� � ������������� ����� ����� ���������, �� ������ ���������� ��� ������������.

��� �� ���� ���������� ��� ������������ ���� ��� ������ ����� ���������� ����.

`INSN_REFERENCES_ARE_DELAYED (INSN)'

���������� ��� ������������ ��� ��������� �� C, ������� ������� �� ����, ���� ����������� ����� �������� ����� ���������, ��������� ������� � ���� �������� INSN, ���� ���� �� ��������� ������������� ��� ���������� ������� � INSN. INSN - ������ ��� 'jump_insn' ��� 'insn'. �� ��������� �������, �� ������� `insn' ��� `jump_insn' ���� ��������� ������ ������� � �� �������� - ��������, ������� ����������� ���������� � ��������� ������������, �� ������ ���������� ��� ������������. ����� ���������� ��������� ������������ ����� �������� ���������� �������, ���������� ��������� � �������� ���������� � ����� �������� INSN.

�� ���� �� ������ ���������� ��� ������������, ���� ��� ������ ���������� ����.

`MACHINE_DEPENDENT_REORG (INSN)'

� ������ �������(������), ���������� ��������� ���������� ���� ������� �������������� �������-�������� ��������� ����� ������ �������� ����������� ��������� � ����������� ������������� ��������. �� ����� �������, ���������� ��� ������������ ��� �������� �� C, ����� ����������� �� ���, ������������ � INSN.


������ ����� ����������