home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / bbs / gnu / gcc-2.3.3-src.lha / GNU / src / amiga / gcc-2.3.3 / gcc.info-18 (.txt) < prev    next >
GNU Info File  |  1994-02-06  |  49KB  |  900 lines

  1. This is Info file gcc.info, produced by Makeinfo-1.49 from the input
  2. file gcc.texi.
  3.    This file documents the use and the internals of the GNU compiler.
  4.    Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
  5.    Permission is granted to make and distribute verbatim copies of this
  6. manual provided the copyright notice and this permission notice are
  7. preserved on all copies.
  8.    Permission is granted to copy and distribute modified versions of
  9. this manual under the conditions for verbatim copying, provided also
  10. that the sections entitled "GNU General Public License" and "Protect
  11. Your Freedom--Fight `Look And Feel'" are included exactly as in the
  12. original, and provided that the entire resulting derived work is
  13. distributed under the terms of a permission notice identical to this
  14.    Permission is granted to copy and distribute translations of this
  15. manual into another language, under the above conditions for modified
  16. versions, except that the sections entitled "GNU General Public
  17. License" and "Protect Your Freedom--Fight `Look And Feel'", and this
  18. permission notice, may be included in translations approved by the Free
  19. Software Foundation instead of in the original English.
  20. File: gcc.info,  Node: Instruction Output,  Next: Dispatch Tables,  Prev: Macros for Initialization,  Up: Assembler Format
  21. Output of Assembler Instructions
  22. --------------------------------
  23. `REGISTER_NAMES'
  24.      A C initializer containing the assembler's names for the machine
  25.      registers, each one as a C string constant.  This is what
  26.      translates register numbers in the compiler into assembler
  27.      language.
  28. `ADDITIONAL_REGISTER_NAMES'
  29.      If defined, a C initializer for an array of structures containing
  30.      a name and a register number.  This macro defines additional names
  31.      for hard registers, thus allowing the `asm' option in declarations
  32.      to refer to registers using alternate names.
  33. `ASM_OUTPUT_OPCODE (STREAM, PTR)'
  34.      Define this macro if you are using an unusual assembler that
  35.      requires different names for the machine instructions.
  36.      The definition is a C statement or statements which output an
  37.      assembler instruction opcode to the stdio stream STREAM.  The
  38.      macro-operand PTR is a variable of type `char *' which points to
  39.      the opcode name in its "internal" form--the form that is written
  40.      in the machine description.  The definition should output the
  41.      opcode name to STREAM, performing any translation you desire, and
  42.      increment the variable PTR to point at the end of the opcode so
  43.      that it will not be output twice.
  44.      In fact, your macro definition may process less than the entire
  45.      opcode name, or more than the opcode name; but if you want to
  46.      process text that includes `%'-sequences to substitute operands,
  47.      you must take care of the substitution yourself.  Just be sure to
  48.      increment PTR over whatever text should not be output normally.
  49.      If you need to look at the operand values, they can be found as the
  50.      elements of `recog_operand'.
  51.      If the macro definition does nothing, the instruction is output in
  52.      the usual way.
  53. `FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS)'
  54.      If defined, a C statement to be executed just prior to the output
  55.      of assembler code for INSN, to modify the extracted operands so
  56.      they will be output differently.
  57.      Here the argument OPVEC is the vector containing the operands
  58.      extracted from INSN, and NOPERANDS is the number of elements of
  59.      the vector which contain meaningful data for this insn. The
  60.      contents of this vector are what will be used to convert the insn
  61.      template into assembler code, so you can change the assembler
  62.      output by changing the contents of the vector.
  63.      This macro is useful when various assembler syntaxes share a single
  64.      file of instruction patterns; by defining this macro differently,
  65.      you can cause a large class of instructions to be output
  66.      differently (such as with rearranged operands).  Naturally,
  67.      variations in assembler syntax affecting individual insn patterns
  68.      ought to be handled by writing conditional output routines in
  69.      those patterns.
  70.      If this macro is not defined, it is equivalent to a null statement.
  71. `PRINT_OPERAND (STREAM, X, CODE)'
  72.      A C compound statement to output to stdio stream STREAM the
  73.      assembler syntax for an instruction operand X.  X is an RTL
  74.      expression.
  75.      CODE is a value that can be used to specify one of several ways of
  76.      printing the operand.  It is used when identical operands must be
  77.      printed differently depending on the context.  CODE comes from the
  78.      `%' specification that was used to request printing of the
  79.      operand.  If the specification was just `%DIGIT' then CODE is 0;
  80.      if the specification was `%LTR DIGIT' then CODE is the ASCII code
  81.      for LTR.
  82.      If X is a register, this macro should print the register's name.
  83.      The names can be found in an array `reg_names' whose type is `char
  84.      *[]'.  `reg_names' is initialized from `REGISTER_NAMES'.
  85.      When the machine description has a specification `%PUNCT' (a `%'
  86.      followed by a punctuation character), this macro is called with a
  87.      null pointer for X and the punctuation character for CODE.
  88. `PRINT_OPERAND_PUNCT_VALID_P (CODE)'
  89.      A C expression which evaluates to true if CODE is a valid
  90.      punctuation character for use in the `PRINT_OPERAND' macro.  If
  91.      `PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no
  92.      punctuation characters (except for the standard one, `%') are used
  93.      in this way.
  94. `PRINT_OPERAND_ADDRESS (STREAM, X)'
  95.      A C compound statement to output to stdio stream STREAM the
  96.      assembler syntax for an instruction operand that is a memory
  97.      reference whose address is X.  X is an RTL expression.
  98.      On some machines, the syntax for a symbolic address depends on the
  99.      section that the address refers to.  On these machines, define the
  100.      macro `ENCODE_SECTION_INFO' to store the information into the
  101.      `symbol_ref', and then check for it here.  *Note Assembler
  102.      Format::.
  103. `DBR_OUTPUT_SEQEND(FILE)'
  104.      A C statement, to be executed after all slot-filler instructions
  105.      have been output.  If necessary, call `dbr_sequence_length' to
  106.      determine the number of slots filled in a sequence (zero if not
  107.      currently outputting a sequence), to decide how many no-ops to
  108.      output, or whatever.
  109.      Don't define this macro if it has nothing to do, but it is helpful
  110.      in reading assembly output if the extent of the delay sequence is
  111.      made explicit (e.g. with white space).
  112.      Note that output routines for instructions with delay slots must be
  113.      prepared to deal with not being output as part of a sequence (i.e.
  114.      when the scheduling pass is not run, or when no slot fillers could
  115.      be found.)  The variable `final_sequence' is null when not
  116.      processing a sequence, otherwise it contains the `sequence' rtx
  117.      being output.
  118. `REGISTER_PREFIX'
  119. `LOCAL_LABEL_PREFIX'
  120. `USER_LABEL_PREFIX'
  121. `IMMEDIATE_PREFIX'
  122.      If defined, C string expressions to be used for the `%R', `%L',
  123.      `%U', and `%I' options of `asm_fprintf' (see `final.c').  These
  124.      are useful when a single `md' file must support multiple assembler
  125.      formats.  In that case, the various `tm.h' files can define these
  126.      macros differently.
  127. `ASM_OUTPUT_REG_PUSH (STREAM, REGNO)'
  128.      A C expression to output to STREAM some assembler code which will
  129.      push hard register number REGNO onto the stack. The code need not
  130.      be optimal, since this macro is used only when profiling.
  131. `ASM_OUTPUT_REG_POP (STREAM, REGNO)'
  132.      A C expression to output to STREAM some assembler code which will
  133.      pop hard register number REGNO off of the stack. The code need not
  134.      be optimal, since this macro is used only when profiling.
  135. File: gcc.info,  Node: Dispatch Tables,  Next: Alignment Output,  Prev: Instruction Output,  Up: Assembler Format
  136. Output of Dispatch Tables
  137. -------------------------
  138. `ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, VALUE, REL)'
  139.      This macro should be provided on machines where the addresses in a
  140.      dispatch table are relative to th