����������� ������ ����������� ����������� � ������������� �������������, ���������� register transfer language (RTL) .�� ���� ����� �������, ������� ����� ��������, ������� �������� �������� ���� �� ������ � �������������� �����, ������� ��������� ��, ��� ������ �������.
RTL �������� �� ����� ������� Lisp. �� ����� ��� ���������� �����, ��������� �� ��������, ������� ��������� �� ������ ���������, ��� � ��������� �����, ������� ������������ � �������� �������� � � ������������ ������ �������. ��������� ����� ���������� ��������� ������� ������, ����� ���������� ��������� �� ���������� �����.
RTL ���������� ���� ����� ��������: ���������, ����� �����, ������� ����� �����, ������ � �������. ��������� - �������� ������. ��������� RTL ("RTX", ��� ���������) - ��������� C, �� ��� ������ ���������� ��� ���������; ��� � ������ " rtx ".
����� ����� - ������ " int "; ��� ����� ������ ���������� ���������� �����. ������� ����� ����� - ������������ ������ ����" HOST_WIDE_INT " (* ��.: ������������::.); ��� ����� ������ ���������� ���������� �����.
������ - ������������������ ��������. � ���� ��� �������������� ��� " char * " ������� �������� C, � ��������� �� ������ ����� ��, ��� � C. ������, ������ � RTL ������� �� ����� ���� �������. ���� �� ������ ������ ������ � �������� ��������, ��� �������������� � ���� ������ ��� ������ ���������, ��� ��� ��������� �� ������� ������ . � ������������ ��������� ��� ������ ��������� ����� ������������� ������ �����. ������ ���� RTL ������ ���� ����� ��������� ������ ��������� ` symbol_ref ', �� ��� ���������� � � ������ ���������� � ���������� RTL, ������� ������� �������� ��������.
������ �������� ������������ ����� ���������� �� ���������. ����� ��������� � ������� ���� ������� � �������. ����� ������ ������� ������� �� ���������� ������ (" [...] "), � ������� ����������� ��������, ���������� ��������������� � ����������, ������������ ��. ������� ����� ���� �� ���������; ������ ��� ������������ ������ ���������.
��������� ���������������� �� "����� ���������" (����� ���������� RTX ������). ��� ��������� - ���, ������������ � " rtl.def ", ������� �������� ����� (� ������� ��������) ���������� ������������ C. ��������� ���� ��������� � �� �������� �������-����������. ��� RTX ����� ���� ������� � ������� ������������ " GET_CODE (X) " � ������� � ������� " PUT_CODE (X, NEWCODE) ".
��� ��������� ����������, ������� ��������� �������� ��������� � ������ ��� ���� ��������� ��������. � RTL, � ������� �� Lisp, �� �� ������ �������, ����� �� �������, ������ ��� ���� ������. ������� �� ������ �������� ��� �� ��������� - �� ���� ��������� ���������, ����������� ������. ��������, � ��������� � ����� " subreg " ������ ������� ������ ���� ����������, � ������ ������� - ����� ������. � ��������� ���� " plus " ��� ��������, � ��� ��� ������ ���� �����������. � ��������� " symbol_ref " ���� �������, ������� ������ ���� �������.
��������� ������������ ��� ������� ������, ���������� ��� ���� ���������, ��� ����� � �������� ���, ���� ��� ����, � ����� �������� ��������� (����������� ���������).
����� ���� ��������� � ����� " md " �������� ��������� �������, �� ����� ��� ���������� � ���� C, ��� ������������ � ������� ��������. � ���� ����������� ��� ������� ��������� �������: " const_int ".
� ���������� ���������� ������ ��������� ����� �������������� ��� ���������. ����� ������ ����� - " (nil) ".
��� ������� ���� ��������� " rtl.def " ��������� ���������� ������������ �������� � �� ���� ��������� ��������: " e " ��� ��������� (���������� ��������� �� ���������), " i " ��� ������ �����, " w " ��� �������� ������ �����, " s " ��� ������ � " E " ��� ������� ���������. ������������������ �������� ��� ���� ��������� ���������� ��� ��������. ����� �������, �������� " subreg " �������� " ei ".
������ ������������ ��������� ������ �������� ���������� ��������:
" u " ������������ " e " �� ����������� ����, ��� ��� ���������� ��-������� � ���������� ������. ��� ������������ ��� ���������� �� insns.
" n " ������������ " i " �� ����������� ����, ��� ��� ���������� ��-������� � ���������� ������. ��� ������������ ��� ������ ������ ��� ���������� ���� insn " note ".
" S " ���������� ������, ������� �������� ��������������. � �������� RTL � ���� " S " ������������ " s ", �� ����� ������ �������� �� " md " �����, ��������� �������� ����� �������� ����� ���� �������. ��������� ������ ��������� ������.
" V " ���������� ������, ������� �������� ��������������. � �������� RTL � ���� " V " ������������ " E ", �� ����� ������ �������� �� " md " �����, ��������� �������� ����� �������� ����� ���� �������. ��������� ������ - �� ��, ��� � ������, �� ������� ���������.
" 0 " �������� ����, ��� ���������� �� �������� �� � ����� ���������� ���������. " 0 " ����� �� ���������� ������ � ������, � ����� ������������ ������������ ��������� � ��������� ������ �����������.
����� ��������� RTX ���� CODE.
������ RTX ���� CODE ��� ������ C.
��������� ������, �������������� ��� �������� RTX, ������� ��������� ��� CODE.
RTX ���, ������� ������������ ����������� ������, ���� " reg " ��� " mem ". " subreg " �� ����������� � ����� ������.
RTX ��� ��� ���������. ���� � ���� ������ " NE ", " EQ ", " LE ", " LT ", " GE ", " GT ", " LEU ", " LTU ", " GEU ", " GTU ".
RTX ��� ��� ������� �������������� ��������, ���� " neg ".
RTX ��� ��� ������������� �������� ��������, �������� �� " NE " � " EQ " (������� ����� ����� " < ").
RTX ��� ��� ��������������� �������� ��������, ���� " MINUS ".
RTX ��� ��� �������� � ������� �����, " ZERO_EXTRACT " ��� " SIGN_EXTRACT ".
RTX ��� ��� ���� ������ ������� ��������, ���� " IF_THEN_ELSE ".
RTX ��� ��� ��������� insn (" INSN ", " JUMP_INSN " � " CALL_INSN ").
RTX ��� ��� ����,��� ������������� insns, ���� " MATCH_DUP ".
��� ������ RTX ����.
XEXP (X, 2)
���������� � �������� 2 ��������� X ��� � ���������.
XINT (X, 2)
���������� � ���� �� ������ �������� ��� � ������ �����. ������������" XSTR ",
�������������� ��� �� ����� ��������, �������� �� ���� ������� ��� ������.
� ������ �������� ����� ���������� ��� � ������ �����, ��������� ��� ������. �� ������ ������� ���������� ����� ������� ��� ���� ��������, ���������� ������������� � ��������. ��� �������� ��� ������ ���� ���������, ����������� �������. ����� �� ������� �� ������ ������, ������� ��� ��������� ����� ���������.
��������, ���� X - ��������� " subreg ", �� ������, ��� ��� ����� ��� ��������, � ������� ����� ��������� ���������� ��� " XEXP (X, 0) " � " XINT (X,1) ". ���� �� �������� " XINT (X, 0) ", �� �������� ����� ������� ��������� ��� ����� �����; ��� ����� ���� ������ �������, �� ����� �������� ����� ���������, ����� ������ " (int) XEXP (X, 0) ". " XEXP( X, 1) " ���� �������������� ��� ������ � ��������� ������, ������������� �������,����������� � ��������� �� ���������, ��������� � ��������, ������ �����, �������� � ���������� ������. ����� �� ��������� ��� ������ " XEXP( X, 28) ", �� ��� ������ ��������� � ������ ����� ����� ��������� � ���������������� ������������.
������ � ���������, ������� �������� ���������, �������. �� ������ ������������ ������������ " XVEC ", ����� �������� ��������� �� ������ ���������������, ��� ������������ " XVECEXP " � " XVECLEN ", ����� ���������� � ��������� � ����� �������.
�������� ��������� �� ������, ������� �������� ��������� ����� IDX � ��������� EXP.
�������� ����� (����� ���������) � �������, ������� �������� ��������� ����� IDX � ��������� EXP. ��� �������� ���� " int ".
���������� � �������� ����� ELTNUM � �������, ������� �������� ��������� ����� IDX � ��������� EXP. ��� �������� RTX.
��� ������ ���� ������������ ����� ���� ���������, ��� ELTNUM �� ������ ���� � ������ ��� " XVECLEN (EXP, IDX) ".
��������� RTL �������� ��������� ������ (������� ����� � ����� �����), ������� ������������ � ��������� ����� ���������. �������� ����� � ��� ���������� ���������� ��������������:
� ���������� " mem " ������� �� ���� ��� ���������� ������ ������. ����������� � ���� " volatil " � ���������� ��� " /v ".
� ���������� " mem " ������� �� ���� ��� ������ �� ��� ���������, ����������� ��� ������, ��� �� �� ���������. ���� ��� ������ �� ��������� ���������� ��� ����� ��������� �� ������. ����������� � ���� " in_struct " � ���������� ��� " /s ".
� ���������� " reg " ������� �� ����, ���� ���� ������� "�����" ������ � ���� �������� �� ����� ���������� �����. ����������� � ���� " in_struct " � ���������� ��� " /s ".
� " reg " ������� �� ����, ���� ������������� ����������, ��������� � �������� ������ ������������. ���� ��� ��������� ����������, ��������� ��������������� ������������. ����������� � ���� " volatil " � ���������� ��� " /v ".
������� �� ���� � " reg ", ���� ��� - �����, � ������� ������ ���� ���������� �������� �������. (��� �������� ������ ��� ����������� ��������.) ����������� � ���� " integrated " � ���������� ��� " /i ".
��� �� ����� ���������� ������� ����� �������������� ����� ��� �������� �������, ���������� ����, �� " REG_FUNCTION_VALUE_P " - ���� ��� ����� ���� �������������.
������� �� ���� � " subreg ", ���� �������� �� ����� ������� � �������, ������������ �� ����� ������� ��� � ������������ � ������������� ��������� �������� " PROMOTED_MODE " (* ��.: ���������� ������::.). � ���� ������ ��� " subreg " �������� ����������� ����� ������� � ��� " SUBREG_REG " �������� ����� ��������, ������� �������� ������. ����������� �� ���������� ������ ����������� ����� ��� ������ � ����� ������� ��� ��� ������ ������������. ����������� � ���� " in_struct " ���� � ���������� ��� " /s ".
������� �� ���� � " subreg " ������� ����� " SUBREG_PROMOTED_VAR_P " �������� �� ����, ���� ���������� ������ �������� �����, � ����, ���� �� �������� ������. ����������� � ���� " unchanging " � ���������� ��� " /u ".
������� �� ���� � " reg " ��� " mem ", ���� �������� �� ��������. (���� ���� �� ��������������� ��� ������ �� ��������� ����� ���������. ����� ��������� ����������� ������, ��� ������ ����� �� ������� ���� ������� ��������. ������ ����� �� ���� ������� ������� ��������� ��� ����� ���������� ����.) ����������� � ���� " unchanging " � ���������� ��� " /u ".
������� �� ���� � insn, ���� �������� �� ������ ���������� �������. ����������� � ���� " integrated " � ���������� ��� " /i ". ����� ���� �������; � ��������� ����� �� ���� ������ �� �������.
� " symbol_ref " ���������, ��� X �����������. ������ ������������ ������ ��� ����, ����� �������������, ��� X ������ ������� �������� �������. ����������� � ���� " used ".
� " symbol_ref " ������������ ��� ���� ��� ������������� ��� ������ �����. ����������� � ���� " volatil " � ���������� ��� " /v ".
� ���������� ` label_ref ' ������� �� ����, ���� ��� - ������ �� �����, ������� ��������� ������� ������ ����������� �����, ����������� ������ �� �����. ����������� � ���� " in_struct " � ���������� ��� " /s ".
� insn ������� �� ����, ���� insn ��� ������. ����������� � ���� " volatil " � ���������� ��� " /v ".
� " insn " � ����� �������� ����� insn ���������, ��� ������ �������������� ������������ �����. ��. ���������� " sequence " ����. ����������� � ���� " unchanging " � ���������� ��� " /u ".
� " insn " � ����� �������� ����� ���������, ��� insn - �� ������ ��������. ���� ��� ����� insn " INSN_ANNULLED_BRANCH_P " ����������, ���� insn ������ �����������, ������ ���� ������� ������������. ��� �������������� ������ � ���� �����, ������ 0, insn ������ �����������, ���� ������� �� ������������. ����������� � ���� " in_struct " � ���������� ��� " /s ".
������� �� ���� � " symbol_ref " ���� �� ��������� �� ����� �������� "���� ��������" �������. ��� ������, ������� � ������ �������, � GNU CC ������������, ��� ��� ����� ���� ���������� ��������������� (��������, � ������� ������� ���������). ����������� � ���� " unchanging " � ���������� ��� " /u ".
� " call_insn " ���������, ��� insn ������������ ��������� � ���������� �������. ����������� � ���� " unchanging " � ���������� ��� " /u ".
� " code_label " ���������, ��� ����� ������� �� ����� ���� �������. �����, ���������� ����������� ���������, ����� ����� ���� ����� �����. ����������� � ���� " in_struct " � ���������� ��� " /s ".
� ������� ������������ ������ � insn ���������, ��� ���������� insn ������ ������������� ������ � ���� insn. ��� ������������, ����� �������������, ��� ������������ ������ ������ �� ����� ����������� �� ����� �������� ������������ ������, ��������, " use " insns ����� " call_insn " �� ����� ���������� �� " call_insn ". ����������� � ���� " in_struct " � ���������� ��� " /s ".
������ ���� ���� ������������ ������ � ���� ������, � ������ - � ����� ��������� RTL �������, ����� ���������, ������� ��� � insns ���������� ���������. ���������, ������� ���������� ������ ��� �������, ����������, �������� �������� ����������� ������������� �������� (* ��.: ���������� �������������::.).
� " symbol_ref " �� ��������� ��� ������� ���������� ��� ������� ��� ���� ��������.
� " reg " �� ������������ ��������� �����, ������������������ ���, ����� �������������, ��� ������ ������� ������������������ ������ �������.
���� ���� ������������ � ���������� " mem ", " symbol_ref " � " reg " � � insns. � ������ ����� RTL �� ���������� ��� " /v ".
� ��������� " mem " �� ����� 1, ���� ������ ������ ����������. ���������� ������ ������ ������ �������, ����������������� � ����������.
� ��������� ` symbol_ref ', ��� ������������ ��� ������������� ��� ������ �����.
� ��������� ` reg ' �� ����� 1, ���� �������� - ���������������� ����������, � 0, ���� ��� ���������� ��������� ���������� �����������.
� insn, �������� 1 ��������, ��� insn ��� ������.
� ���������� " mem " �� ����� 1, ���� ������ �������� ��������� �� ���� ������ ��� ��������� ��� �� ����� ; 0, ���� ��� - ��������� ���������� (��� ����� ���� ��). ������ ����� ��������� C ������������� 0, ������ ��� ��������� ����� ��������� �� ��������� ����������. ��� ���������� ��������� ����������� �������� ������������ ���������� ������������ ��������� ������� ���������� ����.
� insn � ����� �������� �������� 1 ��������, ��� ���� insn - �� ������ ��������.
�� ����� ������������ ������ � insn 1 ��������, ��� ���� insn ������ ������������� ��� ����� ������ ������ � ���������� insn.
� ���������� " reg " �� ����� 1, ���� ������� "�����" ������ � ���� �������� �� ����� ���������� �����.
� ���������� " subreg " 1 ��������, ��� " subreg " ���������� � �������, ������� ���� ���, ���������� �� ����� �������� ����.
� ���������� " label_ref " 1 ��������, ��� ������ �� ����� ��������� ������� ������ ����������� �����, ����������� insn, � ������� ���� ������� " label_ref "
� ���������� ` code_label ' �� ����� 1, ���� ����� ������� ������ �������. ��� ������������ ��� �����, �� ������� ������� ����������� ��������.
� ����� RTL ���� ���� �������������� ��� " /s ".
� ���������� " reg " � " mem " 1 ��������, ��� �������� ��������� ������� �� ����������.
� ���������� " subreg " �� ����� 1, ���� " subreg " ��������� �� ������ ��� �����, ��� ��� ��� �������� �� ����� �������� ���.
� insn 1 ��������, ��� ��� - ������������ �����.
� ��������� " symbol_ref ", 1 ��������, ��� ���� ������ �������� ���-�� � ���� �������� �������.
� " call_insn " 1 ��������, ��� ��� ������� - ��������� � ����������� �������.
� ����� RTL ���� ���� �������������� ��� " /u ".
� ��������� ����� ���������, ������� insns, ���� ���� ��������, ��� RTL ��� ���������� ����������� ���������.
� ��������� " reg " ���� ���� ��������� �������, ���������� ��������, ������� ����� ���������� ������� ��������. �� ������� ������� �������� ��������� � ���������, �� �� ���������� ��������� ����� �������������� � ��� ����������, �� ���� ���� �� ��������������� ��� ����� �������������.
��� ��������� ������ ������ ������� � ������������� ��� �������������. � �-���� �������� ������ (����) �������������� ������������ ����� `enum machine_mode', ������������ � `machmode.def'. � ������ RTL ��������� ������� ����� ��� ����. ����� �������� � ��������� ����� tree-��������� (������ � ���������� �����).
� ���������� ������ � ��������� �������� ��� RTL-��������� ������� ����� ���� ��������� ����� ���������. ������ 'mode', ������� ������ ������ � ����� �������� ������� ���� ������. ��������, `(reg:SI 38)' - ���������� ��������� 'reg' ���� SImode. ���� ��� `VOIDmode' �� ��� �� ������� ������.
����� ������������� ������� �����. ����� "byte" - ��� ������ �������� `BITS_PER_UNIT' ���.
"Quarter-Integer" - ���, � ������� ���� ��������������� ��� �����.
"Half-Integer" - ���, �������������� ����� ����� �������.
"Partial Single Integer" - ���, �������������� �����, ���������� ������ �����, �� ��� ������ ������� �� ������������. �� ��������� ������� ��� ���������� ����� ��� ������������� ����������.
"Single Integer" - ���, �������������� ����� �������� �������.
"Partial Double Integer"- ���, �������������� �����, ���������� ������ ����, �� ��� ������ ������� �� ������������. �� ��������� ������� ��������� ������������ ��������� ���� �����.
"Double Integer" - ���, �������������� ����� ������� �������.
"Tetra Integer" (?) - ���, �������������� ����� ������������ �������.
"Single Floating" - ��� ����� � ��������� ������, �������� ��������� �������� (������ �����).
"Double Floating" - ��� ����� � ��������� ������, �������� ������� �������� (������ ����).
"Extended Floating" - ��� ����� � ��������� ������, ������� ������� �������� (���������� �����). ���� ��� ������������ ��� �������� ����� � ��������� ������ � ������� IEEE. � ��������� �������� �� ��� ���� ������� ������������.
"Tetra Floating"- ��� ����� � ��������� ������, �������� ��������� �������� (����������� ����).
"Condition Code" - ��� �������������� �������� �������� ���������. ��������� ��������� ��������������, ��� ����� ��� �� ������ ������ �� ������. ���� ��� �� ������������ �� �������, ������������ `cc0'.
"Block" - ���, �������������� �������� ������� ������ ����������� ������� ������ �����. � RTL ���� ��� ������������ ������ ��� ������ �� ������, � ������ � ��� ������� ���� ��� ������������ � �������� ����������� � ������� � ��������. � �������, �� ������� ������ ������ ���� ���� ��� ������ �� ����������.
��� Void ������ ���� ���������� ���� ���� �������������� ���. ��������, RTL-��������� `const_int' ����� ��� VOIDmode, ������ ��� ��� ��� ������� �� ���������. � ���������� ���������� RTL ��������� ���� `VOIDmode' ������������ ����������� ������ �� �� �� ���� ����.
���� ��� ����������� �����, �������������� ����� ����� � ��������� ������. �������� ����� � ��������� ������ ����� �������������� ���� 'SFmode', `DFmode', `XFmode', ��� `TFmode'.
���� ��� ����������� �����, �������������� ����� ����� �����. �������� ������ ����� ����� �������������� ���� `QImode', `HImode', `SImode', `DImode', `TImode', ��� `OImode'.
������������ ���, ������� ������ �������������� ������� - `QImode' � ���� ��������������� �������� `BITS_PER_WORD', `FLOAT_TYPE_SIZE' � `DOUBLE_TYPE_SIZE'. �� ���������, ���������� ����� �������� ������������ ��� 8-������� �������� ��� "DImode", �� ��� ����� ���� ������������� � ������� ������ ������� ����������� `MAX_FIXED_MODE_SIZE'. ���������� ��� 16-������ �������� ���������� ���������� `TImode', � ���������� �� ������ ��������� ���� ��� �������� �-���� 'short int', ��� �� �������� ������������� 'HImode'.
� ����������� �������� ����� ���� ������ �������� �����, �� ����� �� ��������� ���� �����. ������ ����� ���� ������� �� ������. ������ �������������� ������������� `enum mode_class', ������������ � `machmode.h'. ���� ��������� ��������� ������:
����� ����. �� ��������� ���: `QImode', `HImode', `SImode',`DImode', � `TImode'.
��������� ����� (�� ��� ���� ������������): `PSImode' and `PDImode'.
���� ����� � ��������� ������. �� ��������� ���: `SFmode', `DFmode', `XFmode' � `TFmode'.
����������� �����. (���� ��� �� �����������).
����������� ����� (� ��������� ������). �� ��������� ���: `SCmode', `DCmode', `XCmode', � `TCmode'.
������������ � ����������� �������������� ����������, ������� ����������� �������. (���� ��� �� �����������).
���� ��������������� ����������� ���������. ��� `CCmode' � ��� ����, ������������� � ������� `EXTRA_CC_MODES'. ��. ������� ���������, ��. ����� *Note ��� �������
���� ����� ���������� ����, �� �������� �� � ���� �� ����������������� �������. ���� ��� ��� ���� `VOIDmode' � 'BLKmode'.
����� ���� ��������� �������, ����������� � �����:
���������� ��� ���������� X.
������ ��� ���������� X �� NEWMODE.
���������� ���������� �����, ��������� �� ������, ��� ������� ���������� ����������. ��� ����� �� ������� ������ ������������� ������ ���������� ����.
���������� �������� ���� M � ���� ������.
���������� ����� ���� M.
���������� ��������� �� ������� ���. ��������, ��������� `GET_MODE_WIDER_MODE (QImode)' ���������� `HImode'.
���������� ���������� ����, ������� �������� ������ ���� M.
���������� ���������� ���, ������� �������� ������ ���� M.
���������� ������� �����, ���������� 1 � ��� �����, ������� ������������ ����� M. ���� ������ ����� ���� ����������� ������ ��� ����� ��� ������ �� ������ `HOST_BITS_PER_INT' ���.
���������� ���������� ���, ����������� ��� ������������ ������� ���� M.
���������� ������ � ������ ������ ���� ������� ���� M. ��� ���� �����, ��� � `GET_MODE_SIZE' ��� ���� ������������� �����, ��� ����������� ��� ������ ������������ ��� ������ �����.
���������� ���������� ����� � ���� M. ���� ����� ��� `GET_MODE_SIZE' ���������� �� `GET_MODE_UNIT_SIZE'.
���������� narrowest ��� � ������ C.
���������� RTL-��������� - ��� ���������, ����������� ����������� ��������.
��������� ������ ���� ������������ ����� ��������� �� ��������� I. � I ������ ���������� � ������� ������� `INTVAL' ��� � `INTVAL (EXP)', ������� ������������ `XWINT (EXP, 0)'.
���������� ������ ���� ����������� ������ ��������������� ������ �������� ����. ��� �������� ���������� `const0_rtx'. ����������, ����� �������� '�������' ������������ � `const1_rtx', � ������ � `const2_rtx'. ��� �� �������� ����� ����� ������� ������������ � `constm1_rtx'. ��� �������� ����� ��������� �� ��������� ����, �������, ������ ��� ����� ������� ����� �������������� ���������� ��������� `const0_rtx', `const1_rtx', `const2_rtx' ��� `constm1_rtx'.
���������� ���������� ������ ���� ����� ��������� �� ��������� `STORE_FLAG_VALUE' - ��� `const_true_rtx'. ���� `STORE_FLAG_VALUE' ����� ������� �� `const_true_rtx' � `const1_rtx' ����� ��������� �� ����� ��� �� ������. ���� `STORE_FLAG_VALUE' ����� -1, �� �� ���� � ��� �� ������ ����� ��������� `const_true_rtx' � `constm1_rtx'.
����� ��������� ��� ��������� � ��������� ������, ��� � ����� ��������� ������� �������, ��� �� ���������� � `HOST_BITS_PER_WIDE_INT' ����� �� ���������� ���������, ��� �� ���������� � 2*`HOST_BITS_PER_WIDE_INT' �����(GNU CC �� ������������� ��������� ��� �������� �������� �������� �������). � ��������� ������ ��������� ����� ����� ��� 'VOIDmode'.
ADDR ������������, ����� ��������� ��������� 'mem', ������� ��������� �� ������������ ��������� � ������. ���� ������ �� ���� �������� ������, �� ��������� � ������� ���� ��������� `const_double' � ������ ���������� (�������������� ������������� �������������� �����), ADDR ��������� �� `const0_rtx'. ���� �� ��������� �� � �������, ADDR ��������� �� `cc0_rtx'. � ADDR ������ ���������� ����� ������ `CONST_DOUBLE_MEM' � � ���� ���� ����� `CONST_DOUBLE_CHAIN'.
���� M - "VOIDmode", �� ���� �������� ��������� � I0 � I1. � I0 ������ ���������� � ������� ������������ "CONST_DOUBLE_LOW" � � I1 � ������� "CONST_DOUBLE_HIGH".
���� ��������� - ��������� � ��������� ������ (���������� �� ��������), �� ����� ����� �����, ������������� ��� ���������� �������� ������� �� ������� `REAL_VALUE_TYPE'. ����� ����� ������������ ����� � ��������� ������, �� �� ����� � ������� ������� ��� ������� ������. ����� ������������� �� (����� �����) � ������, ������������ �� ������� ������, ������������ ������ `REAL_VALUE_TO_TARGET_DOUBLE' � ��� � ��� (��.Data Output::. ).
������ `CONST0_RTX (MODE)' ��������� �� ��������� ���� MODE �� ��������� ����. ���� ��� MODE �� ������ `MODE_INT' �� ������ ����� ��������� �� `const0_rtx'. � ������ ������ �� ��������� ��������� `CONST_DOUBLE' � ����� MODE. ���������� ������ `CONST1_RTX (MODE)' ���������� ��������� �� ��������� 1 ���� MODE, ���� ����� � ��� `CONST2_RTX'.
��������� ����������� ������ �� ��������� STR. � ��������� ����� ��� ������������ ������ ��������� insn (��. �������� Insn.) � ��� ���, ��� � � �������� ��������� ������������ � ������.
��������� ������������ ����� ��� ������. SYMBOL - ��� ������, ���������� �������� �����. ���� ��� ���������� � '*' �� ���� ������ � �������� ����� �� ����������. � ��������� ������ � �������� ����� ������� ����������� ������ `_'.
`symbol_ref' �������� ���, ������� ������ `Pmode'. ������ ��� ������������ ��� � ������� �������� ������ �������� ���������.
��������� ������������ ����� ��� ����. ��� �������� ���� ������� - ���������, ������� ������ ���� `code_label', ������� ����������, � ������������������ ������, ������������� �����, ���� ��������� �����.
������ ����� ��� ���� ������������ ��� ����, ����� �� ����� ���� �� �������� � ������ ����������� ���������.
��������� ���������, ������� �������� ����������� ���������, �������� �������� ����� ���� ������� �� ����� �������������� �����������. ������� EXP - ��� ��������� ������� �������� ������ ��������� (��������� ���� 'const_int', `symbol_ref' � `label_ref') � �������� `plus' � `minus'. �� ��� ���������� �������� �����������, �.�. ��������� �� ����� ��������� ������������ �������������� ��������� ��� ������������� ���������.
M ������ ���� ���� `Pmode'.
��������� ������� ���� EXP, ������ - `symbol_ref'. ���������� ��� �������� �������-��������� � ������ ��� ���������� � �������, ������� �������������� ���������� ������� ����� ��������. ��� ������� ������������ � `lo_sum' ��� ������������� �������� ������������������� � ����� ���������, ������������ � RISC �������, ��� ������������ ������������ � ���������� ������.
M ������ ���� ���� `Pmode'.
���� ����������� ���� ��������� ��� ������� � �������� ��������� � �������� ������.
��� ��������� �������� ������ ����� N (������, ��� `FIRST_PSEUDO_REGISTER') ��� ����� ������ �� �������� ������� � ������� N - "���������� ������". ��� ������� �������� ����� N, ������������ ������ �� ��������� �������� ��� "������ �������". ������� �������� ����������� - ��������� ���, ����������� �������������� ����� ����� ������ ���������, � ���� �������� �� �� ���������� �������� ��� �� ������ ������.
M - ��� ������. ��� ����������, �.�. ������ ������ ����� ������������ ������ ������� ����� ��� � ����� ������. �������� ����� ������������ ����������, ������� ���������� �������, ���������� �����, ��� �������� ��� ��� ����, ����� ����, ����� ���� ����������, ����������� �� ���� ������� ��� �� ����� � ��������� ������ ��������� ��������.
��� ���������� ��������� ���� ��� ��������, ������� ������ ����� ������������ ������ ����� ��������.
������ `FIRST_PSEUDO_REGISTER' ������������ � ������������ � ��������� ������, �.�. ��� ��� ����� ���������� ��������� �� ������ - ������������ �������������� ������. ������, �������� ��������, ��� �� ��� �������� �������� ������� ���� ���������� ������ ����������. ��� �������� ��������, ������� ����� ������������ ��� �������� ������ ������ � ����� ���������� ���������, ���� ��, ������� ����� �������������� ������ � ��������� ��������� ��� ��������� ������ ������������ ���� ������. All
� ���������� ��������� ����� ��������� � ��������� ������� � ������� ����� �������, �� � ������ �������� ����� ���������� ������ � ������, � ������� �� ��� ������. ���� ���������� ������� ������ � ������ �������� � ������ ������ ����������� ��������� `subreg'.
��������� 'reg' ���� M, ������� ������� ����� ������ ����� ������, ����� �� ����� ���� �������� �� ���������� ���������������� ���������. ���� ����� ���� ����� �������� ������������� ����������� ��������, �� ���������� �� �������������� ����������� ����������������� ����������� ����������, ������� � �������.
������ ����� ������ ��������, �������������� ���� RTL-������� �������������� ���������� ���������� `reg'.
��������� ������ ������ ���������, �� `FIRST_VIRTUAL_REGISTER' �� `LAST_VIRTUAL_REGISTER' ���������� ������ � ���� RTL � ������������ ����� ����� �����������. ���� �� ��������� RTL ����������� �������, ��� ������������ ������������ � �����, ������� �� ����� ���� ���������� ���� �� ���������� RTL-��������� �������.
���������� ��������� ������ ��� ���������:
��������� �� ������ ����� ����������, ���������� � ����. ������ ��� ���������, ���������� ���������� ����������, �� ���������� ��������� ����� �������� � ���� ��������� ���������, ������� �� ����� ���� � ���������.
����� RTL-���� ���������, ���� ����������� ������� ���������� ������ ��������, ����������� � ������� `ARG_POINTER_REGNUM' � �������� 'FIRST_PARM_OFFSET'.
���� `FRAME_GROWS_DOWNWARD' ���������, �� ��� ��������� �� ����� ����� ����� ������ ���������� � �����. �����, ��� ��������� �� ������ ���������� � �����.
`VIRTUAL_STACK_VARS_REGNUM' ������� �� ����� ��������, ����������� � ������ `FRAME_POINTER_REGNUM' � �������� 'STARTING_FRAME_OFFSET'.
��������� �� ������������ ����������� �������������� ������ � ����� ����� ����� ����, ��� ��������� ����� ��������������� ����������� ������� ������.
���� ����������� ������� ���������� ������ ��������, ����������� � ������� `STACK_POINTER_REGNUM' � �������� `STACK_DYNAMIC_OFFSET'.
�������� �� ����� � �����, ���� ������� ��������� ���������, ����� ���� - pre-pushed (���������� ���������, ������������ push insn ������ ���������� `STACK_POINTER_REGNUM')
���� ����������� ������ ���������� �� ����� ��������, ����������� � ������� `STACK_POINTER_REGNUM' � �������� `STACK_POINTER_OFFSET'.
��������� `subreg' ������������ ��� ��������� � ��������� �������� � ������, �������� �� ������������, ��� ��� �� ��������� � ������-�������� 'reg', ������� ���������� �������� ����������� ����������.
������ ������ ������� ����� ���� ������������ �����. ���� ���������� �������� � ���� ��������� � ������ ������ - ��������, ��������� ������� ����������� ����� ��� ���������, ������� �������� ���� ����, ������ ������� ������ ���� ������� � 'subreg'. � ���� ������ WORDNUM - ����.
������ ������ M �� ������� ���� �� ������ ������� ���� REG, ����� ��� ������������ ������������ ������ ��� ��� REG, ������� ��������� � M.
������ ����� M ������ ��� ������ ���� REG. ����� ��� ��������� `subreg' ����� ���������� "���������������". ��� ������������ � �������, ����� �� ����� ���������� � ������� � ������ � ������� ��������, �� �� ����������, ����� �������� ����� �������������� ����. ��������������� ������ �����������, ��� "��������������" ������ ������� ������ �� ���������� ��������.
��� 'subreg' ������������ ��� ���������� ���������� �������� �� �������� �����-��������. ����� ���� ��� `DImode' � `TImode' ����� ��������� ����� ������� ��� ����� - ����� ������� ������ ����������� � ���� ��� ����� ���������. ����� ��������� � ������ �� ��������� ����������� 'subreg' � ������� 'SImode' � WORDNUM, ������� ���������� ����� ����� �������.
����������� � ��-�������������� 'subreg' ���� �������������� ��������� ��� ����� ������ �����, ��� � 'subreg'. ��� ���������� ������ ��������� ���� ��� ����� ���������� ����� ����������. ��� ������������� �������, ������� ��������� ��� ���� 'subreg' ����������� `strict_low_part' around the `subreg'.
���� �������� ���������� `WORDS_BIG_ENDIAN' ���������� � 1, �� ��� ��������, ��� ����� ����� ���� �������� ������������(significant) �����, �����, ��� �������� ������������ �����
�������� ����� �������� �������������� � �������� ������������, ��� ����� ������������ �������������� 'subreg', ������� �������� ������ ���������� 'mem' ������ 'reg'. ����� ������� ������������ �������� ����� ������������ ���������������� 'subreg', ������� �������� 'mem'; ������ ��� ����������, ����� 'mem' �������� ������ �����, ������� ������� �������������.
�������� ��������, ��� ����������� ���������� � ����� � ������ `DFmode', ��� ����� � ������ 'SFmode' ����� 'subreg'. �� ��������� ������� �������� �������� ����� `DFmode' ����� ������ ������, ��� ����� � ��������� ������ ��������� ��������.
��� �� ����������� ���������� � ���������� ����� ����������� ������ ��������, ������� ����� ��������� ����� ������ �����. �������� ��������� 32-������ ������ ����� �������� ������������ �����, ������� ����� ��������� ����� ���� ���� `DFmode'. ���� �� �������� ����� �������� ��� �� 10 �� `(subreg:SI (reg:DF 10) 1)' ���� �� ������������, �.�. �� ���������� ������� ����������� ��� �������� ��� ��������� ���������� �������. ������� ������������ ������������� ������������ ��������� ������ ����.
� ������� �������� 'subreg' ������ ���������� � ������� ������������ `SUBREG_REG' � �� ������� � ������� `SUBREG_WORD'.
��������� ��������� �������, ������� ��������� ��� ���������� ��������� �������� � �� ������������ ������������. �� ������������� � 'reg' ���� ��������� ��������� allocator ���� �������� ������������.
`scratch' ������ ����������� ������ �������� `clobber'.
��������� � �������� ���� �������. ��� ��������� �� ����� ���������� � ����. ���������� ��� ������� ��� ��� �������������:
������� ����� ������������� ��� ������� ������. �� ������ �������, ����� ��� ������� ������������� ��� �������, � ����������� �� ��������, ������� ��� ��������� ��� ��������. ��� ������������� ���������� ��� �������� � RTL ����, �.�. �������� �������� �������� ����������� ��� ������������� ����� ������ (����������� ������������ "NOTICE_UPDATE_CC"). *�� ��� �������. � ���������� ��������� ������ �� �������, ������� ������ �� ������, ����� ��������� ��� ������������� ���� �������.
�� ��������� ������� ������� ���� ������� �������� ��������� � �������, � ����� ������ '(cc0)' ������������`reg'. ������ ��� ����� �������� ������, ���� ��� ������� �������� ������ ��������� ���������� ������. �� ������ ������� ��� ������� ����������� � ����� ���������, � ����� ������ ������ �������������� ������ ��������.
��������� ������, ���� Sparc � RS/6000, ����� ��� ������ �������������� ������, ����, ������� �������������, � ������, ������� �� ������������� ��� �������. ������� ����� ��� ������������ � ������, ����� �� ��������� ������������ ����������, �� ��������������� ��� �������, � ���� �������, ������� � ��������� ���������� � ������������� ������� ���� �������, ������� � ���� ������ �� `(cc0)'. ��� ��������, ����� "addcc" � "andcc" � "sparc.md".
�� ������������ �������� ������� �������. �� �� ����� ��������� � ����� �� ����� ����. '(pc)' ����� ���� ��������� ����������� ������ � ��������� ������������� ���������� ���������� ��������.
���������� ������ ���� ������, ��������������� ���� '(pc)' ��� �������� ���������� `pc_rtx'. ����� ������� ������� ��������� � ����� `pc' ������ `pc_rtx'..
��� ����������, ������� �� ��������� �������, �������� ������� ��������� ������, ���������� ���, �� ��������� ��� � RTL �� �����.
��� RTX ������������ ������ �� �������� ������ �� ������, ��������������� ���������� ADDR. M ����������, ������� ����� ������ ��������.
4.7. RTL-��������� ��� ������ � �����������
����� ���� �� ���������� ���������, �� ��� �������� � �������������� ��������� ������ ���� ��������� � ���� M. ������� �������� � ���� M, ���� �� ����� ��� M, ��� ��� `const_int' ��� `const_double' � M - ����� ������ `MODE_INT'.
� �������� ������������� ��������� ��������� ������ ���� ������ ����������.
���������� ����� �������� X � Y ���������� � ������ M.
����, ��� � `plus', ������ ������������ X � ���� ������� �������� Y. ���������� ��� �������� ������� �������� ��������� ���������, �� ������ ��� ���������� ��� � ���� 'Pmode' ����� ���������� ��� ������������� � ������� 'high'. (*��. Constants::.).
M ������ ���� ���� `Pmode'.
��� `plus' ������ ��������� ���������.
������������ ��������� ��������� Y �� X � ����� ���������. ��������� ����������� ��� ������������, ��� ���� �� ��� � ����������� ���������.
�������, ������ �� ����� �������� � ����������� ���������. ������, ����� ����� ������ ����, ��� ����� ������������ ��� ����� ������ ���. � ������������ ������, ������� ��� ��������� ����� ���� ��������� �������������� - ��� ���������� ��� � ���� �������.
��� � �� ������ � ������ X � Y, � �������� ����� �������� ���� �������. ���� ������������ `(cc0)', �� ��� `VOIDmode'. ����� ��� �����-�� ��� ������ `MODE_CC', ������ `CCmode'. ��. ��� �������.
������ X � Y ������ ����� ���� � ��� �� ���. ����� ��������� ��������� ������ � ������, ����� ��� X ����������� ������ `MODE_INT' � Y - `const_int' ��� `const_double' � ����� `VOIDmode'. ��� X ���������� � ������ ������ ����� ��������� ���������, ������� �� �� ����� ���� 'VOIDMode'.
���� ���� �� ��������� - ���������, �� ��� ������ ���� ������ ���������� � ��� ��������� �������������� ��� ���������������.
��������� ���� �������� �����������, ��� ��� ���������� ������ ����� � ������� ��������� ���������. ��������� ������ ����� ���� �������� � ������� ����������, ��� ������ ������� ������ ���� �������� � �������, � �� ����� ���� ����� ��� ��������.
���������� X � �������� ������ (��������� �� ����), �������� ����������� � ������ M.
���������� ������������ �������� X � Y �� ������, ���������� � ������ M.
��������� ������ ������������ ���������, ��� ������� ������������ ����� ������� ������, ��� ��������. ��� ����� ���� ������ ��������� � ��������� �������:
(mult:M (sign_extend:M X) (sign_extend:M Y))
��� M ���, �������, ��� ���� X � Y, ������� �� ������� ����
�����������.
��� ������������ ��������� ��� ����� ����������, ������ ���������� `zero_extend' ������ 'sign_extend'.
���������� ������� �� ������� �� ������ X �� Y, ����������� � ������ M. ���� ��� M - ��� ����� � �������� ������ �� ������������ ������ �������, ����� �����������.
�� ��������� ������� ������� ���������� ������� � ������� ��� ��������� � �������� �� ����������. �� ������ ����������� ����� ����������, ���������� `truncate' � `sign_extend' � ���:
(truncate:M1 (div:M2 X (sign_extend:M2 Y)))
������� `div' �� ������� �����������.
������� `div' � `udiv' �� ���������� �������, ������ ��������.
���������� ������� � �������� ��������������. X � Y ���������������� ��� ����� ����� �� ������ ���� �.
������� `smin' � `smax', �� �������� ���������������� ��� ����������� �����.
���������� ��������� ��������� �������� X, ���������� � ������ M, ������� ������ ���� ������� � ������������� ������.
���������� ��������� ���������� '�' �������� X � Y, ���������� � ������ M, ������� ������ ���� ������� � ������������� ������.
���������� ��������� ����������� ��� �������� X � Y, ���������� � ������ M, ������� ������ ���� ������� � ������������� ������.
���������� ��������� XOR �������� X � Y, ���������� � ������ M, ������� ������ ���� ������� � ������������� ������.
���������� �������� �������� X �� C ��� �����. X ����� ��� M - ��� � ������������� ������. � ������ ����� ��� � ������������ ������ ��� ���� ���������� ���� 'VOIDmode', ����� ������� ������������ �� �������� ������ ��� ��� ��� �������� ������. ��������, �� Vax, ����� C - 'QImode' ���������� �� M.
������� `ashift', �� ��� ������ ������. � ������� �� ������ ������ �����, ��� ��� �������� �������.
����������, �� ���������� ����� ��� ������ ��������. ���� C - ���������, ����������� - `rotate'.
���������� ���������� �������� (������) X, ����������� � ������ M.
���������� ���������� ������ �� X, ����������� � ������ M. ������ M - ��� � ��������� ������.
���������� ���� ���� ������ �������� ��������� ���� � �, �������������� ��� ����� ����� ���� �. (���� �-����, �� ������������ ����.) ��� � �� ����������� ������ ���� �; � ����������� �� ������� ������, ����� ���� ����������� ��������� ���������� �����.
��������� ��������� ��������� ��������� ���� ��������� � ������ ������������ �������-����������� ��������� ��������, ����������� � ������� `STORE_FLAG_VALUE', �� �� ����������� ��� ������ (��. ������) ���� ��������� �����������, ��� ����, ���� �� �����������. ��� �������� ��������� �� ������� �� ���� ������, ������� ��� ����������. ���� ��������� �������� ��������� ������������ � �������� (�������� ������ ������� � `if_then_else'), �� ��� ������ ���� `VOIDmode'. ���� �������� ��������� ���������� ������, ������� ������ ���������� � ��������� ����������, �� ��� ������ ���� ������ `MODE_INT'. ��� �������� ���������, ������������ ������ ������ ������������ ���� ���, ������� ������� �� ������.
���������� ��� �������, ��� ����� ���� ������������ �������� ���������. �������� ��������� ����� ���� ������������ ��� ��������� ����� ������� `(cc0)' � �����, ��� � `(eq (cc0) (const_int 0))'. ����� ����������� � ���������������� ��������� �� ��������� ���������� ����������, � ������� ���� ����������� ���� �������. ����������, �������������� ��� ������� ������ ���� ������ � �����������, ������������ ��� �������; �� ����� ��������� ������ 'note' insn.
��������, �������� ��������� ����� ��������������� ���������� ��� ������� ������. ��� ��������� ������������ ����������; �� ���� ������ �������������� ��� ����������� ����. ��������� ���� ����������� ���������� �����������, �.�. ������ ������ �� ���, �� ����� ��������� �� ������ ���������� � RTL, �.�. ��� ����� ����� ��������.
� ���������� �������, ���� `(cc0)' ��� � ��������� ��� ���������� ��� `(compare X Y)', �� �������� ��������� ��������� '(eq X Y)'. ������ �� ����������� ������ �������������� ������ ���� ����� ���������, �� ������ �������������� ���������� ��������� �������� ��� ��������� 'eq' � ��� ������, ���� ��� �������� � ��������� ������� insn.
����������� ����������� �� ��� ����: �������� � �����������. ����� �������, ���������� ��������� ���� ��������� `gt' � `gtu' ��� ������� � ����������� "������". ��� ����� �������� ��������� ���������� ��� ���������� ��� ����� �����: �������� 1 ������� ������ ��� -1, �� �� ���������� ������. �������������, -1, ����� ��������������� ���������� ���� `0xffffffff', ��� ������ 1.
�������� ��������� ������������ ����� ��� ��������� �����. ������������ ��������� ����������� �� ���� ���������.
1 ���� �������� X � Y �����, ����� 0.
1 ���� ��������, �������������� X � Y �� �����, ����� 0.
1 ���� X ������ Y. ���� X � Y - ����� � ������������� ������ �� ��������� ����������� � ������ ����� .
���������� `gt' �� �� ������ � ������������� ������ ��������� �����������.
������� `gt' � `gtu' �� ������ ��� '������'.
������� `gt' � `gtu' �� ����������� '������ ��� �����'.
������� `gt' � `gtu' �� ����������� '������ ��� �����'.
��� - �� �������� ���������, �� ����������� �����, ������ ��� ��� ������ ������������ ������ � ���������� ���������. ������, COND - ��������� ���������. ��� ��������� �������� COND, ���������� �������� THEN ��� �������� ELSE.
�� ����������� �����, ��������� ` if_then_else ' ��������� ������, ����� �������� �������� ��������.
���������� 'if_then_else', �� ����� ����. ������ �� TEST1, TEST2,... ����������� � ���� �������. ��������� ����� ��������� - VALUE, ��������������� ������� ����� ��������� �� ����, ��� DEFAULT, ���� ��� ����� ����.
���� ��� �������� ���������� ��� ��� ����������� � �������������� ������ ��� insn ���������. ��. �������� Insn
���������� ����������� ��������� ��� ������������� �����������, �.�. ��� ������������ ������� ����. ��� ��������� � RTL �������� lvalue - ��� ����� ������ � ����� ����� ����������, ������� ���������� ����������� � ��������� ������� ����.
��� ��������� ������������ ������ �� �����-����������� ������� ����, ������������ ��� ������������ � LOC (������ ������ ��� �������). ������� ���� ����� ������, ������ SIZE, � ���������� � ���� POS. ����� ���������� `BITS_BIG_ENDIAN' �������, � ������ ����� ������ ������ ������������� POS.
���� LOC ��������� � ������, �� ���� ��� ������ ���� ����� ������������ ������. ���� �� LOC - �������, �� ������������ ��� ������������ � ������� �������� ������� 'insv' ��� `extv' (��. ����������� �����), � ������ ��� ����� ���, ���������� �����.
��� POS �������� �������-��������� � ��� �� ������������ � ������� `insv' ��� `extv'.
��� M ����� ��, ����� ������ ��� �� �������������� ��� LOC ���� �� ��� ��� �������.
��� `sign_extract', �� ��������� �� ����������� ��� ����-����������� ������� ����. ����������� �� �� ����� ������������������ �����, �� ��� ��������� ����� ����� � ������ ������ �����-����������.
��� �������������� ����� ������ ���� ������������ ������ ���������� ��������������. ��������, ���������, ������� �������� ������ ����� � ����� �� ����� ���� ������� ��������� �������: `(plus:SI(reg:QI 34) (reg:SI 80))' ������ ��� �������� 'plus' �������, ��� �� �������� ����� ���������� ���. ������� �������� ������� ������� � �������� �������������� ���:
(plus:SI (sign_extend:SI (reg:QI 34)) (reg:SI 80))
�������� �������������� �� ������ 'placeholder', �.�. ����������
����� ������ ������� �������������� ������� ���� � ��������. ��������
�������������� ��������� �� ��, ��� ��� ������.
��� ���� ��������� �������������� X �� ������ ����� ��� `VOIDmode', �.�. ������� ����� � �������������� ������ ���� ��������. �������������� ������ ���� ������� �� ����� ����������, ��� X ������ ���� ������� � �������.
������������ ��������� ��������� ���������� �������� X �� ���� �. M ������ ���� ����� � ������������� ������, � � �������������� (� ������������� ������) ��������� � �����, ����� �����, ��� M.
������������ ��������� ���������� ����� �������� X �� ���� �. M ������ ���� ����� � ������������� ������, � � �������������� (� ������������� ������) ��������� � �����, ����� �����, ��� M.
������������ ��������� ��������������� �������� X �� ���� �. M ������ ���� ����� � ��������� ������, � � ������������ ��������� � �����, ����� �����, ��� M.
������������ ��������� �������� �������� X �� ���� �. M ������ ���� ����� � ������������� ������, � � �������������� (� ������������� ������) ��������� � �����, ����� �����, ��� M.
������������ ��������� �������� �������� X �� ���� �. M ������ ���� ����� � ��������� ������, � � ������������ ��������� � �����, ����� �����, ��� M.
������������ ��������� �������� ��������������� �������� X, ������� ��� ��������, � ������������ (� ��������� ������) ��� �.
������������ ��������� �������� ��������������� �������� X, ������� ��� �����������, � ������������ (� ��������� ������) ��� �.
���� M - �������������� ���, �� ������������ ��������� �������� ������������� �������� �, ������� ��� �������� � ��� M. ��� ���������� ���������� �� ����������, ������� ��� �������� ����� ���� ��������� ������������ � ���� ���������� � ������ ��� �������� ����� ����������.
���� M - �������������� ���, �� ������������ ��������� �������� ������������� �������� �, ������� ��� ����������� � ��� M. ��� ���������� ���������� �� ����������.
���� � - ������������ ���, �� ������������ ��������� ������������� ������������� �������� � (����������� � ������ �) � ������, ��������� ��� ���� ������������ ��������� � ����� �. ���������� ���������� � ������� 0.
��������� ���������� �� ������������ ����� �������������� ��������, �� ������������� ����������� ������������ ���������:
���� ��� ��������� ������������ ������ � ����� ���������: ��� ������� �������� ��������� `set'. ����� ����, ������� ����� ��������� ������ ���� ��-�������������� ���������� `subreg '.
����������� " strict_low_part " ������� � ���, ��� ����� ��������, �������� � ���� N (�� �� �������� � ���� M) �� ����� ���� ��������. ������, ���������� � ����� 'subreg' ����� ����� �������������� �������� �� ��������� ����� ��������, ���� ��� � ������ ��� �����.
���� M - �������������� ���, �� ������������ ��������� �������� ������������� �������� �, ������� ��� �������� � ��� M. ��� ���������� ���������� �� ����������, ������� ��� �������� ����� ���� ��������� ������������ � ���� ���������� � ������ ��� �������� ����� ����������.
���� M - �������������� ���, �� ������������ ��������� �������� ������������� �������� �, ������� ��� ����������� � ��� M. ��� ���������� ���������� �� ����������.
���� � - ������������ ���, �� ������������ ��������� �������������� ������������� �������� � (����������� � ������ �) � ������, ��������� ��� ���� ������������ ��������� � ����� �. ���������� ���������� � ������� 0.
���� ���������, ��������� �� ��� ���, ������������ ��������, � �� ��������. �� �������� ������� ������� �� ���������� ��������; ��� ������� ������ ��-�� �� �������� �������� �� ��������� ������. ����������� ���� ��������� ������������, ����� ����������� �������� �������.
���� ������� - ������ ���� �� ���� ����� ��������� �������; ����, ��������� ����, ������� ������������ ��������, ���������� ������ ��� �������� ����.
������������ �������� ���������� �������� X � �����, �������������� LVAL. LVAL ������ ���� ����������, �������������� �����, � ������� ����� ����������� ����������: " reg " (��� " subreg " ��� " strict_low_part "), " mem ", " pc " ��� " cc0 ".
���� LVAL - " reg ", " subreg " ��� " mem ", ��� ����� �������� ���; ����� X ������ ��������� ��� ����� ����.
���� LVAL - " reg ", ��� �������� ��� ������, ��� ������ ������ ��������, �� ��� ��������, ��� ����� ��������, ������������ �������� �����, ������������� ��������� ��������, � ������� �������� ������������� �������������� ��������. ����������, ���� LVAL - " subreg ", ��� �������� ��� ������, ��� ��� ��������, �� ��������� ����� �������� ����� ���������� ������������ �������.
���� LVAL - " strict_low_part " ��� " subreg ", �� ����� ��������, ������������ �������� ����� " subreg ", ������������� �������� X, � ��������� ����� �������� �� ����������.
���� LVAL - " (cc0) ", ��� �� ����� ��������� ����, � X ����� ���� ���������� " compare " ��� ���������, ������� ����� ����� ����� ���. ��������� ������ ������������ ������� " test ". ��������� " (set (cc0) (reg:M N)) " ������������ ��������� " (set (cc0) (compare (reg:M N) (const_int 0))) ". ����������� �������������� ���������, ����� ��������������� ������ �� ����� ����������.
���� LVAL - " (pc) ", �� ����� ������� ��������, � ����������� ��� X ������ ����������. ��� ����� ���� ��������� " label_ref " (����������� �������). ��� ����� ���� " if_then_else " (�������� �������), � ���� ������ ������ ��� ������ ������� ������ ���� " (pc) " (��� ������, ����� ��� ��������), � ������ �� ��� ������ ���� " label_ref " (��� ������, ����� ���� �������). X ����� ����� ���� " mem " ��� " (plus: SI (pc) Y) ", ��� Y ����� ���� " reg " ��� " mem "; ��� ��������� �������� ������������ ��� ������������� ��������� ����� ������� ���������.
���� LVAL �� �������� �� " (cc0) ", �� " (pc) ", �� ��� LVAL ������ �� ���� " VOIDmode " � ��� X ������ ��������� ��� ���� LVAL.
� LVAL ������ ���������� ������������� " SET_DEST ", � � X - ������������� " SET_SRC ".
������������ ��������� � �������, �������������� ������� �� ������� �������, �� �������, ��� ��� ����� ���� ��������� ����� ��������, ���� Vaxes. �� �������, ��� ��� ����������� �� ������� ������ ���� �������� �������������� "������" , ������� ����������� ��������� � �����, ������� ������������ �������, � ��� ��������� " return " ������� �� ������������.
������ ��������� " if_then_else " ������������ ��������, ������� ������ ���� �������� � " pc " ��� �������� � ���������� �������.
�������� ��������, ��� ������� insn " (return) " ��������� ������������ " (set (pc) (return)) ", �� ��������� ����� ������� �� ������������.
������������ ��������� � �������. FUNCTION - ��������� " mem ", ��� ����� - ����� �������, ������� ����� �������. NARGS - ���������, ������� ����� �������������� ��� ���� �����: �� ��������� ������� ��� ������������ ����� ������ ���������� � �����; �� ������, ��� ������������ ����� ��������� � �����������.
������ ������ ����� ����������� �������� ���, ������� ������ ����� FUNCTION. �������� �������� ���������� ������������ " FUNCTION_MODE ", ��������������� � ����������� ��� ����. ���� ����� ���� - ������� ��������� ���� ��������� �� �������, ��� ��������� ���� ��������� ������� �� ��������� ����.
������������ ���������� ��� ��������� ���������� ����������������, ������������ �������� � X, ������� ������ ���� ���������� " reg ", " scratch " ��� " mem ".
���� �� ����, ��� ��� ������������ - � ��������� ��������, ������� ��������� ����������� �������� � ��������� ���������� ��������. ��������� ����������� �������� �� �����-�� ����������, �� ����� �������� �����������, ��� �������� ����� ��������, ����� ��� �� �� ������� ������� ������ � ��� �� ����� ���������� ��������� �������.
���� X - " (mem: BLK(const_int 0)) ", ��� �������� ��� ��� ������ ������� ������������ ���������� �� ����� ������.
�������� ��������, ��� �������� �������� �������������� ������������ ���������� �������� ��� "call-clobbered". ��� ������ ������� ��������� �� ��������� ������������� ��� ��������, ��� ��� �� ����� ������������ ��������� " clobber ", ����� ������� ���� ����. ����� ��������������, ��� ������ ����� ������� ����� �������� ����� ������� ������, ���� ������� �� ��������� " const ".
���� � ��������� ������ ��������� � " parallel " ������ �������� ���������� " clobber ", � �����������-����������� " reg " ��� " match_scratch " (* ��.: RTL ������::.), ��� �������������� ����� ����������� ��������������� ��������� " clobber " � ������������ insn, ���� ��� ����������� ��� ������������.
��� ����������� ����� ��������������, ��������, �� ������, ������� ����� ������� �������� � ���������, �� ������������ ������� MQ, �� ������� ����� ������� ����������, ������� ����������� MQ �������. ����������, ���������������� ������� ����� �� ��������� ��������� �������, � �� ��������� ����� - ���.
����� ��������� " clobber " ��� �������� ���������� ������ a " parallel " � ������� ��������� ���������, �������������� ��������� �����������, ��� ������� �������� ���������, � ��, � ����� ����� insn. ������, ���� ������������ ����� ������������ �������, ������������ ��� ������ �� ������, ���� ��� ���������� �������� �� ������� ����������� " & " (* ��.: ������������::.). �� ������ ��������� " clobber " ��� ����������� �������, �������������� ��� ��������� " scratch "; � ��������� ���� �������, GNU CC ����������� ��������� ��� ���������� ������� ��� ���������� �������������.
��� ������, ������� ������� ���������� ��������, �� ������ ������������ " scratch " ������ ��������������, ������ ��� ��� �������� ���� �������������� �������� " clobber " ����� ���������. ��� �������� ������������ (" clobber " (" match_scratch " ...)). ���� �� ����������� " clobber " ��� ��������������, ����������� ���, ������� ������ ����� �� ���������� � ����������� ������ ��� �����. ����� ����� ��������� CSE.
������� ������ ��������� ������������� ��������� �������������� � " parallel ": ����� ���� �� ������� ��������� insn ����� ���������� insn. � ���� ������, ������������� ������ � ���� �� �������������� ��� ��������� � � ������ ����� � insn �������� � ��������� �����������.
������������ ������������� �������� X. ��� ���������, ��� �������� X � ���� ����� ��������� ����������, ���� ���� ��� ����� ���� ����������. �������������, ���������� �� ����� �������� ������� ���������� �������, ������� �������� ������ � ���������� �������� X. X, ������ ���� ���������� " reg ".
� ������� ���� ������������ ����������� ��������� X ����� ���� insn. ��� ���������, ��� X �������������� ��� �������� � ���� ����� ���� � ����������� ��� ������ ������ ���� ������� �� ��������. ��� " use " insns ����� ������� ����� ���������� ���� ������������ ����������� ���������.
������������ ��������� �������� ��������, ����������� �����������. ���������� ������ ���������� ������; ������� " parallel " �������� �������� �� ���������. X0, X1 � ��� ����� - �������������� ��������� � �������� �������� - ��������� ���� " set ", " call ", " return ", " clobber " ��� " use ".
" In parallel " �������� ��� ������� ��� ��������, ������������ � �������������� �������� ������� ���������, � ������� ���� ����������� �������� ������� �����������. ��������,
(parallel [(set (reg: SI 1) (mem: SI (reg: SI 1)))
(set (mem: SI (reg: SI 1)) (reg: SI 1))])
�������������� �������, ��� �������� ����������� �������� 1 �
������� ������, ������������ ��, ������������ �������. � ����� ������,
��� " (reg: SI 1) " ���������� ��� ����� ������, ��� ��������� �
�������� � �������� 1 *�����* ����������� insn.
�� ����� �������, ��� *�����������* ������������ " parallel " � �������, ��� ��������� ������ " set " ����� �������� ��� ����������. ��������, ������� "�������, ���� ����" ������ �������� ������������ ���:
(parallel [(set (cc0) (reg: SI 34))
(set (PC) (if_then_else
(eq (cc0) (const_int 0))
(label_ref ...)
(pc)))])
�� ��� �����������, ������ ��� ����� ��� �������, ��� ������� ��������
������� �� �������� ���� ������� *�����* ���� ��������, � �� ��
������ ��������, ������� ��������������� ���� ��������.
���������� �����������, ������� ���������� ������ � �������������� ������� ������������� ����, ����� ����������� insns, ��� ������� ������� �� " parallel ", �������� ������� - ��������, ����������� ��� ������ ������������ � ���������� ������������� ���� - ����� " reg ", " mem " ��� ����������� ���������. ��� �� ��� �� ��������� ����������� RTL � ����� ������ ������ ����������, �� � ���� ������ ��� ���������, ������ ��� � ���������� ������� ����������� �� ������������. ������, ����������� ������������ " NOTICE_UPDATE_CC ", ���� ��� �������, ������ ����� ���� � ������ insns ���� �� ����������� �����-���� ���������� �����������.
������������ ������������������ insns. ������ �� INSNS, ������� ���������� � �������, �������� ��� ��������� � ������� insns, ��� ��� ��� ������ ���� " insn ", " jump_insn ", " call_insn ", " code_label ", " barrier " ��� " note ".
" sequence " RTX ������� �� ���������� � ����������� insn �� ����� ��������� RTL. ��� ������������ ������������������ insns, ������� ���������� " define_expand " *������*, ��� �� insns ���������� " emit_insn " ��� ������� �� � ������� insns. ��� ����������� ������� ��������� sub-insns ���������� � " sequence " ��������.
����� ����, ��� ������������ ������ �������� ���������, insn � ���� insns, ������� ��������� � ������ �������� ������������ ������ � " sequence ". Insn ������� ���� �������� ������ insn � �������; ����������� insns ������ ���� �������� � ���� ��������.
" INSN_ANNULLED_BRANCH_P " ��������������� �� insn � ����� ��������, ����� �������, ��� insn �������� ������ ��������������, ��� ����� ������� ������������ ������ insns � ������ ��������. � ����� ������, " INSN_FROM_TARGET_P " ���������, ��� insn - �� ������ �������� � ������ ����������� ������, ���� ������� ����������; ����� insn ������ ����������� ������, ���� ������� �� ����������. * ��.: ����� ��������::.
��� ���� ��������� ���������� ������ ��������� �������, ��� ���� insn, ����, ������ ������, ��� �� ������ ��������� �������� ������� ��� �������:
������������ ����������� ��� ���������� � ������� ������ S.
������������ �������-������������� �������� ��� OPERANDS. INDEX ������ �������-������������� ��������. " unspec_volatile " ������������ ��� volatile �������� � ��������, ������� ����� �����������; " unspec " ������������ ��� ��������� ��������.
��� ���� ����� ���������� ������ " pattern " insn, ������ " parallel " ��� ������ ���������.
������������ ������� ������� ��������. ��������� �������� LR0,LR1 � �.�., �������� ����������� " label_ref ". ��� M ����������, ������� ����� ���������� ������� ������; ������ M ������ ���� " Pmode ".
������������ ������� ������� ��������, ���������� ��� �������� �� BASE. ��������� �������� LR0,LR1 � �.�. �������� ����������� " label_ref ", � BASE ����.����� M ����������, ������� ����� ���������� ������� ������.
������ ����������� ���� ��������� ��������� ������� ���������� ��� ������ ������.
������������ �������� ������ ���������� X �� ����������� �����, � ����� ��������, ������� X ����� ����� ����������. X ������ ���� " reg " ��� " mem ", �� ����������� ����� ��������� ������ " reg ". � ������ ���� �������� ����� ��� ����������,������������ �� ������. �����, �� ������� ����������� X - ����� � ������ ��������� ���� ������ ������, ��� ������� ��� ��������� ������ �������. ��� ������ �������������:
(mem: DF (pre_dec: SI (reg: SI 39)))
��� �������� ���������� �������������� 39 �� ����� ��������
" DFmode " � ������������� ���������� ��� ��������� �������� " DFmode ".
����������, ���������� �� ����������, � ���������� X.
������������ ��� �� ����� �������� ������, ��� � " pre_dec ", �� ������ ��������. ��������, �������������� ����� - �������� X ����� �����������.
����������, ���������� �� ����������, � ���������� X.
���� �������, ������������ ��� ������� ���� ���������, ������������ ��� ������� ������ � insn, ������������ �������������� �������� ��������. ������������� �������� ��� ������ ������ ���� �� ������ insn �� �����������, ��� ��, ��� � ������������� � ��������� � ��������� �������� ��������, ������ ��� ����� insns ����� ���� ��-������� �� ������ ������� �, �������������, ������ �������������� ������������ � �����������.
�������, ������� ����� ���� ������������ ��� ������ ���������� ��������� �������, ����� ����� �����������, ��������� " parallel ", ���������� �������������� " set ", ����� �������, ��� ���������� ������� ������. ��� �� �������, ������ ��� ������, ������� ������ ��������� ��� ��������, ������ ��������� �� �����, ��� ������������� ����� ������. �������� �� ��� �������������� ���������� " parallel " ����������� �� �������� ����� ������ � �������� ��������.
RTX ��� " asm_operands " ������������ ��������, ������������ �� ������������ ������������� ������� ����������. ��� ������������ ��� ������������� ���������� " asm " � �����������. ��������� " asm " � ��������� ��������� ������, ���� �����:
asm ("foo %1, %2, %0" : "=a" (outputvar): "g" (x + y), "di" (*z));
�������������� � �������������� ���������� " asm_operands " RTX, �������
������������ ��������, ������� ��������� � " outputvar ":
(set RTX-FOR-OUTPUTVAR
(asm_operands "foo %1, %2, %0" "a" 0
[RTX-FOR-ADDITION-RESULT RTX-FOR-*Z]
[(asm_input: M1 "g")
(asm_input: M2 "di")]))
����� �������� " asm_operands " RTX - ������ ������������
������, ����������� ��������� ��������, ��������� ����� ��������� ��������
����� ��������� �������� ���������, ������ �������� ��������
RTX � ������ ����� � ����������� �������� ��������. �����
M1 - ��� ����� " x+y "; M2 - ��� ��� "*z".
����� �������� " asm " ����� ��������� �������� ��� ������, ��� insn ����� ��������� ����� RTX " set " ������ " parallel ". ������ " set " �������� " asm_operands "; ��� ��� ��������� ���������� ���� � ��� �� ������������ ������ � �������, �� ������ �������� ����������� ��� ���������������� �������� ������. ��� ����� ����������� �� ������� �������� ������, ������� ����� 0, 1, ... ��� ���������������� ��������� ������.
RTL ������������� ���� ������� - ��������� � ��� ������� ������� ��������, ���������� "insns". Insns - ��������� �� ������������ ������, ������� �� ������������ �� ��� ����� ������ ����. ��������� insns ���������� �������� ���������; ������ ������������ ������� ���������� ��� ���������� " switch "; ������ ������������ ����� �������� ��� ��������� ����� ��������.
� ���������� � ����������� ������������� ������, ������ insn ������ ����� ���������� ���������������� �����, ������� �������� ��� �� ���� ������ insns � ������� ������� (����� ������������ ������������ �������� ����� insn � ����������� ����������������� �������� ����� �������������� � ���������� ������ � �������, �� ��� ����� ������ ����� ��������� � ����� ���������� ������ ������ " sequence "), � ��������� �� ���������� � ��������� insn ��� ��������� �������. ��� ��� ���� �������� ���� � �� �� ������� � ������ insn, ���������� �� ���� ��������� insn. ������ ������, � ��� ����� ���������� ��� ������ " XEXP " � " XINT ", �� ������ ��� ������ ������������ ��� ����������� ������������:
���������� � ����������� �������������� insn I.
���������� � ��������� ������� �� insn, �������������� I. ���� I - ������ insn, ��� - ������� ���������.
���������� � ��������� ������� �� insn ����� I. ���� I - ��������� insn, ��� - ������� ���������.
NEXT_INSN (PREV_INSN (INSN)) == INSN
������ �����������, � ���� INSN - �� ��������� insn,
PREV_INSN (NEXT_INSN (INSN)) == INSN
������ �����������.
����� ������������ ������ ��������, ��������� �� insns � ������� ����� ���� ����������� " sequence ", ������� �������� ������ insns. �������� " NEXT_INSN " ��� ����, ����� ����������, �� ���� insns - ��������� insn � ������; �������� " NEXT_INSN " ��� ���������� insn � ������� - ����� ��, ��� � �������� " NEXT_INSN " ��� " sequence ", � ������� �� ����������. ����������� ������� ����������� ��� " PREV_INSN ".
��� ��������, ��� �������������� ���������� - �� ����������� ������ ��� insns ������ ��������� " sequence ". � ������, ���� INSN - ������ insn � " sequence ", " NEXT_INSN (PREV_INSN (INSN)) " - ��� insn, ���������� ��������� " sequence ", � �������� " PREV_INSN( NEXT_INSN (INSN)) " - ��� insn, ���������� ��������� � ��������� " sequence ". �� ������ ������������ ��� ���������, ����� ����� ��������� " sequence ", ���������� ������ insn.
������ insn ����� ���� �� ��������� ����� ����� ���������:
��� ��������� " insn " ������������ ��� ������, ������� �� ������ ��������� � ��������� � ��������. ��������� " sequence " ������ ���������� � insns � ����� " insn ", ���� ���� ���� �� �� insns ������ ������� ��� ��������� � �������.
Insns � ����� " insn " ����� ������ �������������� ���� ����� ���� ������������, ������������� ����. ��� ������ ���� ������� ���� � �������.
��� ��������� " jump_insn " ������������ ��� ������, ������� ����� ������ ������� (���, ����� ����, ����� ��������� ��������� " label_ref "). ������� �������� �� ������� ������� �������������� ��� " jump_insn ".
" jump_insn " insns ����� �� �� ����� �������������� ����, ��� � " insn " insns, ��������� � ������� ������������ ����� �� �������, �, ����� ����, �������� ���� " JUMP_LABEL ", ������� ������������ ����� ��������� ����������� ��������.
��� �������� ��������� � ������������ �������� ��� ���� �������� " code_label ", � �������� ���� insn ����� ����������� (��������, ��������) �������. � ����� ������� ��������, � " JUMP_LABEL " ������������ ���� �� �����, � ������� insn ����������; ����������� ���� ��� ����, ����� ����� ��������� - ����������� ��� ���� insn.
insns �������� ��������������� ��� ��������, �� ��� ��� ��� �� ���������� �� � ����� ������, ��� ����� ���� � ���� " JUMP_LABEL ".
��� ��������� " call_insn " ������������ ��� ������, ������� ����� ������ ��������� � �������. ����� �������� ��� �������, ������ ��� ��� �������������, ��� ��������� �������� � ������� ������ ����� �������������� ����������.
" call_insn " insns ����� �� �� ����� �������������� ����, ��� � " insn " insns, ��������� � ������� ������������ ����� �� �������, �, ����� ����, �������� ���� " CALL_INSN_FUNCTION_USAGE ", ������� �������� ������ (������� ��������� " expr_list "), ���������� " use " � " clobber " ���������, ������� ���������� ���������� ��������, ������������ ��� ���������� ���������� ��������. �������, ��������� � " clobber " � ���� ������, ���������� *�����* ���������� " call_insn ", � �� ����� ��� ������� � " clobber " � ���� " call_insn " ���������� ������, ��� insn ��������� ����������. " clobber " ��������� � ���� ������ ����������� ��������, ��������� � " CALL_USED_REGISTERS " (* ��.: �������� �������� � ���������::.).
" code_label " insn ������������ �����, �� ������� �������� ������� ��� ������ insn ��������. �� �������� ��� ����������� ���� ������ � ���������� � ���� �����������. " CODE_LABEL_NUMBER " ������������ ��� ���������� " label number ", �����, ������� ���������� �������������� ��� ����� ����� ���� ����� � ���������� (�� ������ � ������� �������). � �������� �����, ����� �������������� �� ������������ ������ ��� ����� ����������, ������ � ����� " LN ", ��� N - ����� �����.
����� " code_label " ���������� � ��������� RTL, ��� ������ ���������� ������ " label_ref ", ������� ������������ ����� ����� ��� �����.
���� " LABEL_NUSES " ������������ ������ ����� ���������� ���� ����������� �������� � �������� ���������� ������ �� ��� ����� � ������� �������.
������� ���������� � ����� ������, ���� ���������� �� ����� ������������ ���� ����� ���. ��� ���������� ����� ������� ������������ ��������, ����� �������, ��� �������� �������� ������������, � ����� ��������� � �������� " volatile ", ������� �� ������������ (��������, " exit "). ��� �� �������� ������� ����������, ����� ���� ����������� �����.
" note " insns ������������ ��� ������������� �������������� ���������� � ������������� ����������. ��� �������� ��� ������������� ����, ����� �����, � �������� ���������� ������������� " NOTE_LINE_NUMBER " � ������, � ������� ���������� " NOTE_SOURCE_FILE ".
���� " NOTE_LINE_NUMBER " ������������, ���������� ������������ ����� �������� ������, � " NOTE_SOURCE_FILE " - ��� ��������� �����, ����������� ��� ������. ��� ���������� ��������� ���������� ������� ����� � ������������ ������.
� ��������� ������, " NOTE_LINE_NUMBER " �� �������� ����� ������, � ��� � ����� �� ��������� �������� (� " NOTE_SOURCE_FILE " ������ ��������� ������� ���������):
����� ���������� ��������� ������������. ��������� ������� ����������� ������� insns, ���������� �� � ���������� ����� ����.
��� ���� ���������� ��������� ������� ������ � ����� ������ ������ ���� ����������. ��� ��������� ������� ���������� �� �������.
��� ���� ���������� ��������� ������� ������ � ����� ������ "while " � " for ". ��� ��������� ������������ ������ ������ �������� �����.
���������� � ����� �����, �� ������� ������ ������� �������� " continue ".
��� ���������� ��������� ����� � �����, ��� ���������� �������� �� ����� ��� ��� ������, � ������� �������� �� ����� ��������������. ��� ������� ���������� ������ ����������� ������� ����� ��� ������������ ����������� �����.
���������� ����� ����� ���� �������, ��������������� ����� ������, �� ������� ��������� �������� " return " (�� �������, �� ������� ��������� ������� �� ���������� ��� ��������). ��� ���������� ����� ���� ������� ������������ ��������.
���������� ����� ������� ��������� � " setjmp " ��� ��������������� �������.
��� ������� �������������� ����� " insn ", " jump_insn " � " call_insn " insns:
���� insn ����������� ��������� c �������� ��������. ��� ������ ���� ���� �� ��������� �����: " set ", " call ", " use ", " clobber ", " return ", " asm_input ", " asm_output ", " addr_vec ", " addr_diff_vec ", " trap_if ", " unspec ", " unspec_volatile ", " parallel " ��� " sequence ". ���� ��� " parallel ", ������ ������� " parallel " ������ ���� ����� �� ���� �����, �� ����������� ����, ��� " parallel " ��������� �� ����� ���� ������� � " addr_vec " � " addr_diff_vec " �� ����������� ������ ��������� " parallel ".
����� �����, ������� ��������, ����� ������� � �������� �������� ������������� ����� insn, ��� -1, ���� ������������ ��� �� ���������������.
����� ������������ ������� �� ��������������� � ��� ���� �������� -1 ��� insn, ��� ������� ������� �� ���������� ��������� " use ", " clobber ", " asm_input ", " addr_vec " ��� " addr_diff_vec ".
������������ ����� ������� �� ��������������� ��� insns, ������� ���������� �� ���������� " asm ". ��� �������� �� ������� ���� ���� ��������� " asm_operands ". ������� " asm_noperands " ���������� ��������������� �������� ��� ����� insns.
��� ���������� ������ ��� ���� ���������� ��� ����� � ����������� ������������� ��������������, ������� ���������� ����������������� ������� � " md " ����� ��� ��������� ��������� ������������� ��� ������������� �������� �� ���������� �������.
������ (������� ��������� " insn_list ") ������������� ���������� � ������������ ����� ��������� ������ ��������� �����. ����� ��������� insns �� ����� ���� �� ��������, �� �����.
������ (������� ��������� " expr_list " � " insn_list ") ������������� ��������� ���������� ������������ insn. ����� ��� ���������� ������������ ���������, ������������ � ���� insn.
���� ������ ������������� ��������������� �������� ���������� �������; �� ���� ��� ������� ���������. �������� ������ ������ ��������� ����� ��� ��� ������������ ������, ������� ����� �������������� ��� ���������� ������. ��� ������� insn ������ ���������� ������� ��������� ����� � insns, ������� ��������� � �������� ��������, ������� ������������ ������� � ���� insn. ������ ������������ ������ ��������� �������������� ����� ���, ����� ������ ����������� ���� ������������. ����� ������������ ����������� ������, ��������������� � ����������� ������; �������� ��� ����� ��������� ��� ��� ����: ��������������� ����� ��� " REG_DEP_ANTI ", ����������� ������ ����� ��� " REG_DEP_OUTPUT ", � ����������� ������ ����� ��� " VOIDmode ".
���� " REG_NOTES " insn - �������, �������� ���� " LOG_LINKS ", �� ��� ��������, ������ ��������� " insn_list ", ��������� " expr_list ". ������� ��������� ����� ����������� ����������, ������� ����������� �������� �����, ������� � ����������� ���������� ������������� ���������� ��� ���������� " enum reg_note ". ������ ������� OP ���������� - ������, ��� ������������� ������� �� ���� ����������.
������������ " REG_NOTE_KIND (X) " ���������� ��� ������������ ����������. ������ � ��� ������������ " PUT_REG_NOTE_KIND (X, NEWKIND) " ������������� ��� ������������ ���������� X � NEWKIND.
����������� ���������� ������ ���� �������: ��� ����� �������� ���-���� � ����� � insn, �������� ���-���� � ������ insn ��� ��������� ����� ����� ����� insns. ������� ����� ����� ��������, ������� ������������ ������ � " LOG_LINKS ".
��� ����������� ���������� ���������� ���� � insn:
�������� � OP ������� � ���� insn; �� ���� ��������� �������� ���������� ����� ����� insn �� �������������� �� �� ���������� ��������� ���������.
��� �� ����������� ��������, ��� ������� OP �� �������� �������� ��������� �������� ����� ����� insn, ��� ��� ��� ����� ����� ���� ����� insn. � ����� ������, ������, " REG_DEAD " ���������� ���� �� ��������� � ������ �� �������������� �� ��������� ������� ������������, �� ������� ��� �� ���������� ���� ����.
������� OP ������������� (��� �����������; �� ���� ������ �� ������� �������� ��������) ��������� �������� �������� ������ ����� insn. ��� ��������, ��� �� ���������� � ��������� " post_inc ", " pre_inc ", " post_dec " ��� " pre_dec ".
������� OP ����� ��������������� ��������, ����� ���� insn �����������. ��� ������������ ���, ��� ������� ���������� � �������� �� ����, ���� m68k dbra, ����� ���� �����������.
" REG_NONNEG " ���������� ����������� � insns, ������ ���� �������� �������� ����� ������� " decrement_and_branch_until_zero ".
���� insn �� �������� ��������� ����� OP � ���������, ��������������� ���� insn, ���� ���� ����� ����� �����������. ������� �������, ���� ��������-�������� � OP ��� �� ���� ����� �������� ���� � ��� �� �������, ���� insn �� ������������� ����� ������������.
Insns � ���� ����������� - ������ ����� �����, ������� ���������� � a " clobber " insn, ������������ ������������� �� ���������� ���� (������� ����� ������� �����), ������ insns, ������ �� ������� ������������� ���� ����� �������� � ����� ���������� " REG_NO_CONFLICT ", � �������������� insn, ������� �������� ����� � ���� � ����������� " REG_EQUAL ", �������� ���������. ���� ���� ��������������� ������������ " REG_LIBCALL " � " REG_RETVAL " ��� ������� � ���������� insns, ��������������.
���� insn ���������� OP, " code_label ", �� - �� " jump_insn ". ����������� ����� ���������� ��������� ����������� �������� ����� ��� OP, �� ����� ����, ������������.
��������� ���������� ��������� �������� ������� insn:
��� ���������� ����� ���� ������ ��� insn, ������� ������������� ������ ���� ������� � ���������, ��� ���� ������� ����� ����� OP �� ����� ����������; �������� ���� ��������������� ����������� � ����������� �� ���� ����������. ��������, ������� insn ���� �������� � �������, ����� �������� �������� �� OP, �� ��� ����� ����� �� ����� ����������. ���� ����� ��������� " set " �������� ���������� " strict_low_part ", ���������� ��������� � ��������, ������� ���������� � " SUBREG_REG " ��������� " subreg ".
��� " REG_EQUIV " ������� ������������ OP ��������� �� ���� �������, � ��� ��� ��������� ����� ������� �������� �� OP. ("�������" ����� ��������� � ������ ������ ���������; ������� ������ ����� ������ ��������� insns �������������.) ��������, ����� ��������� ����������� � �������, �������� ������ ������� �� ������������� ������� ������ ��������, ������������ ���� ��� ����������.
����� �������� ���������� � ������������� ��� ����� � �������, ���������� ����� ���� ��������, ��� ������� ����� ����� �����, � ������� ���������� ��������. ���� � ���� ������ ������� ����� ���� ���������� ������� insns, ��-�������� �������� �������� ������� ������ ����� �� ����� ���������� �������.
� ������ " REG_EQUAL ", �������, ������� ��������������� ���� insn, ����� ����� OP �� ����� ���������� � ����� ����� insn, �� �� ����������� � ������ ����� � �������. � ���� ������ OP ������ �������������� ���������. ��������, ����� ������������ ������������������ insns ���� ������ ���������� ��� ���������� �������������� ��������, ���� ��� ���������� ������������ � insn, ������� ���������� ��� �������� ��������-���������.
��� ��� ���������� ������������ ���������� ��������� ��������� �����������. " REG_EQUAL " ������������ ��������� �� ������������� ��������� (������, ��� ����� �������� ������������ � ����������� �����), ����� �������� ��, ��� ������ �� ���� ��������. " REG_EQUIV " ���������� ������������ �� ����� ������������� ���������, ����� �������, ��� ������� ��������� ��������� ������ (��� ����������� ��� " mem " ��������� ��� ������������ ��������� �� �����), ������� ����� �������������� ������ ��������, ���� �������� ������������� ���������� ���������.
����� ������������ ���������� � �����, ������� ����������� ����������� " REG_EQUIV " � �� ������������ ��� �������� ������ ����������� � ���������������, ������� �������� �������������� ������ ������ � ������� ����� ������� ������ �������������, ������� ���� �� ���������� ��� ����������, ��� ��������������� ������������� ������������ ����������� " REG_EQUAL ". �� ������ ������� ������������� ��������� ���������� " REG_EQUAL " ���������� �� ���������� " REG_EQUIV ", ���� OP - ���������, � insn ������������ ����������� ����� ��� ��������� ����������.
����� �������, ������� ����������� �� ������������� ��������� ������ ��������� ������ ���������� " REG_EQUAL ", � �������, ��������� ����� ������������� ���������, ������ ��������� ������ ���������� " REG_EQUIV ".
������� OP, ��������������� ���� insn, �� ����� �������������� � ����������� insn. ��� ���������� �� ���������� " REG_DEAD ", ������� ���������, ��� �������� �� ����� �� ����� �������������� ������������. ��� ��� ���������� ���������� � ����� ��� �������������� ��� ������ � ���� �� ��������.
��������� ����� ����� insn, ���������� ���� ����� ���� insn. OP - insn, ��������������� ��� � ����. �� ������ ���������� �� ��� ����������, ���� ��� ������������ � OP �� ��� ������ ��� ��������� � ���������� ; ��� ���������� �� ������������� ������.
���� insn �������� �������� ������������������ �� ������ insn (��������, ������ ����������), � OP - ������ insn ������������������ (��� ������ ���������� - ������ insn, ������� ��� ������������ ��� ��������� ���������� ������ ����������).
����������� ������ ���������� ��� ���������� ��� ��������� ����� ������������������, ��� ��������� �������� ��� ����������� ����, � ��������� ������ ���������� ��� ����������, ����� ������� ������������������, ���������� ������� "������".
����������" REG_EQUAL " ����� ����� ������ �������������� � ����� insn ��� ����������� ���������, ������������ �������������������.
��� - �������� " REG_RETVAL ": ��� ���������� � ������ insn ������������������ �� ������ insn � ��������� �� ���������.
�� �������, ������� ���������� " cc0 ", insns, ������� ������������� � ���������� " cc0 ", ��������� � ������������� " cc0 " �������� ��������. ������ �� ��������� ���������� ������ �������� �������� ��� ��� ����� �� ���� ���. � ���� ������ ���������� " REG_CC_USER " ����� �������� � insn, ��������������� " cc0 ", ��� �������� insn, ������������� " cc0 ", � ���������� " REG_CC_SETTER " ����� �������� � insn, ������������ " cc0 ", ��� �������� insn, ���������������� " cc0 ".
��������� ��������������� (���� ����������� ������ ����� ������).
��������� ����������� ������ (���� ����������� ������ ����� ������).
����������� �������� ����� ������ ��������� " insn_list " � " expr_list " - ��, ��� ������ ������� " insn_list " ��������� insn � ���������� � ���������� ������ ��� ���������� ������������� insn; ������ ������� " expr_list " ���������� ������� �������� ��� ���������.
Insns, ������� �������� ������������, ����� ��� ��������� RTL " call_insn ". ��� insns ������ ������������� ����������� ��������, � �� ���� ������ ������������ ����������� ��� ��������� RTL, " call ".
��������� " call " ����� ��� ��������, � ������:
(call (mem: FM ADDR) NBYTES)
NBYTES - �������, ������� ������������ ����� ������
������ ����������, ������������ ������������, FM - �������� ���
(������� ������ ��������� � ������������ ������������ " FUNCTION_MODE " �
�������� ��������), � ADDR ������������ ����� ������������.
��� ������������, ������� �� ���������� ��������, ��������� " call ", ��� �������� ����, ���� ��� ���� insn, �� ����������� ����, ��� insn ����� ����� ��������� ��������� " use " ��� " clobber ".
��� ������������, ������� ���������� ��������, ��� ��� - �� " BLKmode ", �������� ������������ � ���������� ��������. ���� ����� ����� �������� R, �� ���� insn ������ �������� �������� ���:
(set (reg: M R)
(call (mem: FM ADDR) NBYTES))
��� ��������� RTL �������� (�������� ������������), ���
��������������� �������� ������������� �������� �������� � ���� insn.
����� ������������ ���������� �������� " BLKmode ", ��� �������������� ����� �������� ������������ ������ �����, � ������� ������� �������� ��������. ��� ��� ���� insn ������ �� " ���������� " �������� �������� � ����� ��� �� ����� ��� RTL, ��� � �����, ������� �� ���������� ������.
�� ��������� ������� ������� ������ ��������������� ����������� ��������� ��������, �������� ��� �������� ������ ��������. " call_insn " insns �� ���� ������� ������ ����� ����, ������� �������� " parallel ", ���������� ��� ��������� " call ", ��� � ��������� " clobber ", ������� ���������, �������� ����� ��������� ��������. ����������, ���� ������� ������ ��������� ��������� �������, �������� �� ��������� �����, ������� �� �������� ���� � ��� RTL, �� ������ ���� �������� � ������������ " use ".
��������������, ��� ���������� ������� �������� ��� ��������, ������������� � ������������ ������������ " CALL_USED_REGISTERS " (* ��.: �������� �������� � ���������::.) �, �� ����������� ������� " const " � ���������� �������, �������� ��� ������.
Insns, ���������� ������ ��������� " use ", ��������������� ������������ " call_insn " insn, ����� �������, ����� �������� �������� ������� ������ ��� �������. ����������, ���� ��������, �������� �� ��������� � " CALL_USED_REGISTERS ", ���������� ���������� ��������, insns ���������� ��������� " clobber ", ������� ���������� ����� ������, ����� ������� ����� ��������.
���������� �������, ��� ��������� ���� ��������� RTL ���������; �� ���������� ���� ��������� ��������, �������������� ���� � �� �� ��������. � ������ ������� �� ������ ��������������� �������������: ������� ������ RTL ��������� ������������� ���� �� ���������� ����� ��� � ����� ����� � ���������� ���������.
��� ������������� ��������� � ��������� �������; ����� RTL ��������, ������� ��������� ���������� ���������� � ������� �������, � ���������� ����������� �������� ���� ��������� ������������� ��������, ������� ������� RTL �� �������� ������ ��� ���� �������.
����� ������ ������ RTL �� �����, �������� " read_rtx ". ��� ��������� ���� ��������, ����� ������������ �����, � ���������� �� ���� ������ RTL.
������ RTL �� ����� ���������� ����� ��������. ��� �� �������� � ��������� �����, ��������� ������ RTL ���������� ������ ��� ����� ������������ �����������.
���� ����� ������������ ������������� RTL, ������������ ��� ����� � �����, ��� ��������� ����� ������� ����������� ����� � ������� ������ GNU CC. ��� ���� �� ���������.
GNU CC ��� ����������, ����� ������������ RTL ������ ���������. ���������� RTL ��� ������ ��������� ����� ������ ������� �� ���������� ������� ������. � RTL �� �������� ���� ���������� � ���������.
��������������� ������ ��������� � ������� ���������� GNU CC �� ����� ������� ��������� ����� �� ���������� ������ "������". �� ������� �������� ����������� ��� ���� ��������� ������, �� ��� ������� � ������ " tree.h " � " tree.def ".