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

📄 tm.texi

📁 GCC
💻 TEXI
📖 第 1 页 / 共 5 页
字号:
@table @code
@findex INT_TYPE_SIZE
@item INT_TYPE_SIZE
A C expression for the size in bits of the type @code{int} on the
target machine.  If you don't define this, the default is one word.

@findex MAX_INT_TYPE_SIZE
@item MAX_INT_TYPE_SIZE
Maximum number for the size in bits of the type @code{int} on the target
machine.  If this is undefined, the default is @code{INT_TYPE_SIZE}.
Otherwise, it is the constant value that is the largest value that
@code{INT_TYPE_SIZE} can have at run-time.  This is used in @code{cpp}.

@findex SHORT_TYPE_SIZE
@item SHORT_TYPE_SIZE
A C expression for the size in bits of the type @code{short} on the
target machine.  If you don't define this, the default is half a word.
(If this would be less than one storage unit, it is rounded up to one
unit.)

@findex LONG_TYPE_SIZE
@item LONG_TYPE_SIZE
A C expression for the size in bits of the type @code{long} on the
target machine.  If you don't define this, the default is one word.

@findex MAX_LONG_TYPE_SIZE
@item MAX_LONG_TYPE_SIZE
Maximum number for the size in bits of the type @code{long} on the
target machine.  If this is undefined, the default is
@code{LONG_TYPE_SIZE}.  Otherwise, it is the constant value that is the
largest value that @code{LONG_TYPE_SIZE} can have at run-time.  This is
used in @code{cpp}.

@findex LONG_LONG_TYPE_SIZE
@item LONG_LONG_TYPE_SIZE
A C expression for the size in bits of the type @code{long long} on the
target machine.  If you don't define this, the default is two
words.  If you want to support GNU Ada on your machine, the value of this
macro must be at least 64.

@findex CHAR_TYPE_SIZE
@item CHAR_TYPE_SIZE
A C expression for the size in bits of the type @code{char} on the
target machine.  If you don't define this, the default is
@code{BITS_PER_UNIT}.

@findex MAX_CHAR_TYPE_SIZE
@item MAX_CHAR_TYPE_SIZE
Maximum number for the size in bits of the type @code{char} on the
target machine.  If this is undefined, the default is
@code{CHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
largest value that @code{CHAR_TYPE_SIZE} can have at run-time.  This is
used in @code{cpp}.

@findex FLOAT_TYPE_SIZE
@item FLOAT_TYPE_SIZE
A C expression for the size in bits of the type @code{float} on the
target machine.  If you don't define this, the default is one word.

@findex DOUBLE_TYPE_SIZE
@item DOUBLE_TYPE_SIZE
A C expression for the size in bits of the type @code{double} on the
target machine.  If you don't define this, the default is two
words.

@findex LONG_DOUBLE_TYPE_SIZE
@item LONG_DOUBLE_TYPE_SIZE
A C expression for the size in bits of the type @code{long double} on
the target machine.  If you don't define this, the default is two
words.

@findex WIDEST_HARDWARE_FP_SIZE
@item WIDEST_HARDWARE_FP_SIZE
A C expression for the size in bits of the widest floating-point format
supported by the hardware.  If you define this macro, you must specify a
value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}.
If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE}
is the default.

@findex DEFAULT_SIGNED_CHAR
@item DEFAULT_SIGNED_CHAR
An expression whose value is 1 or 0, according to whether the type
@code{char} should be signed or unsigned by default.  The user can
always override this default with the options @option{-fsigned-char}
and @option{-funsigned-char}.

@findex DEFAULT_SHORT_ENUMS
@item DEFAULT_SHORT_ENUMS
A C expression to determine whether to give an @code{enum} type
only as many bytes as it takes to represent the range of possible values
of that type.  A nonzero value means to do that; a zero value means all
@code{enum} types should be allocated like @code{int}.

If you don't define the macro, the default is 0.

@findex SIZE_TYPE
@item SIZE_TYPE
A C expression for a string describing the name of the data type to use
for size values.  The typedef name @code{size_t} is defined using the
contents of the string.

The string can contain more than one keyword.  If so, separate them with
spaces, and write first any length keyword, then @code{unsigned} if
appropriate, and finally @code{int}.  The string must exactly match one
of the data type names defined in the function
@code{init_decl_processing} in the file @file{c-decl.c}.  You may not
omit @code{int} or change the order---that would cause the compiler to
crash on startup.

If you don't define this macro, the default is @code{"long unsigned
int"}.

@findex PTRDIFF_TYPE
@item PTRDIFF_TYPE
A C expression for a string describing the name of the data type to use
for the result of subtracting two pointers.  The typedef name
@code{ptrdiff_t} is defined using the contents of the string.  See
@code{SIZE_TYPE} above for more information.

If you don't define this macro, the default is @code{"long int"}.

@findex WCHAR_TYPE
@item WCHAR_TYPE
A C expression for a string describing the name of the data type to use
for wide characters.  The typedef name @code{wchar_t} is defined using
the contents of the string.  See @code{SIZE_TYPE} above for more
information.

If you don't define this macro, the default is @code{"int"}.

@findex WCHAR_TYPE_SIZE
@item WCHAR_TYPE_SIZE
A C expression for the size in bits of the data type for wide
characters.  This is used in @code{cpp}, which cannot make use of
@code{WCHAR_TYPE}.

@findex MAX_WCHAR_TYPE_SIZE
@item MAX_WCHAR_TYPE_SIZE
Maximum number for the size in bits of the data type for wide
characters.  If this is undefined, the default is
@code{WCHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
largest value that @code{WCHAR_TYPE_SIZE} can have at run-time.  This is
used in @code{cpp}.

@findex WINT_TYPE
@item WINT_TYPE
A C expression for a string describing the name of the data type to
use for wide characters passed to @code{printf} and returned from
@code{getwc}.  The typedef name @code{wint_t} is defined using the
contents of the string.  See @code{SIZE_TYPE} above for more
information.

If you don't define this macro, the default is @code{"unsigned int"}.

@findex INTMAX_TYPE
@item INTMAX_TYPE
A C expression for a string describing the name of the data type that
can represent any value of any standard or extended signed integer type.
The typedef name @code{intmax_t} is defined using the contents of the
string.  See @code{SIZE_TYPE} above for more information.

If you don't define this macro, the default is the first of
@code{"int"}, @code{"long int"}, or @code{"long long int"} that has as
much precision as @code{long long int}.

@findex UINTMAX_TYPE
@item UINTMAX_TYPE
A C expression for a string describing the name of the data type that
can represent any value of any standard or extended unsigned integer
type.  The typedef name @code{uintmax_t} is defined using the contents
of the string.  See @code{SIZE_TYPE} above for more information.

If you don't define this macro, the default is the first of
@code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long
unsigned int"} that has as much precision as @code{long long unsigned
int}.

@findex OBJC_INT_SELECTORS
@item OBJC_INT_SELECTORS
Define this macro if the type of Objective C selectors should be
@code{int}.

If this macro is not defined, then selectors should have the type
@code{struct objc_selector *}.

@findex OBJC_SELECTORS_WITHOUT_LABELS
@item OBJC_SELECTORS_WITHOUT_LABELS
Define this macro if the compiler can group all the selectors together
into a vector and use just one label at the beginning of the vector.
Otherwise, the compiler must give each selector its own assembler
label.

On certain machines, it is important to have a separate label for each
selector because this enables the linker to eliminate duplicate selectors.

@findex TARGET_PTRMEMFUNC_VBIT_LOCATION
@item TARGET_PTRMEMFUNC_VBIT_LOCATION
The C++ compiler represents a pointer-to-member-function with a struct
that looks like:

@example
  struct @{
    union @{
      void (*fn)();
      ptrdiff_t vtable_index;
    @};
    ptrdiff_t delta;
  @};
@end example

@noindent
The C++ compiler must use one bit to indicate whether the function that
will be called through a pointer-to-member-function is virtual.
Normally, we assume that the low-order bit of a function pointer must
always be zero.  Then, by ensuring that the vtable_index is odd, we can
distinguish which variant of the union is in use.  But, on some
platforms function pointers can be odd, and so this doesn't work.  In
that case, we use the low-order bit of the @code{delta} field, and shift
the remainder of the @code{delta} field to the left.

GCC will automatically make the right selection about where to store
this bit using the @code{FUNCTION_BOUNDARY} setting for your platform.
However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY}
set such that functions always start at even addresses, but the lowest
bit of pointers to functions indicate whether the function at that
address is in ARM or Thumb mode.  If this is the case of your
architecture, you should define this macro to
@code{ptrmemfunc_vbit_in_delta}.

In general, you should not have to define this macro.  On architectures
in which function addresses are always even, according to
@code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to
@code{ptrmemfunc_vbit_in_pfn}.

@findex TARGET_BELL
@item TARGET_BELL
A C constant expression for the integer value for escape sequence
@samp{\a}.

@findex TARGET_TAB
@findex TARGET_BS
@findex TARGET_NEWLINE
@item TARGET_BS
@itemx TARGET_TAB
@itemx TARGET_NEWLINE
C constant expressions for the integer values for escape sequences
@samp{\b}, @samp{\t} and @samp{\n}.

@findex TARGET_VT
@findex TARGET_FF
@findex TARGET_CR
@item TARGET_VT
@itemx TARGET_FF
@itemx TARGET_CR
C constant expressions for the integer values for escape sequences
@samp{\v}, @samp{\f} and @samp{\r}.
@end table

@node Registers
@section Register Usage
@cindex register usage

This section explains how to describe what registers the target machine
has, and how (in general) they can be used.

The description of which registers a specific instruction can use is
done with register classes; see @ref{Register Classes}.  For information
on using registers to access a stack frame, see @ref{Frame Registers}.
For passing values in registers, see @ref{Register Arguments}.
For returning values in registers, see @ref{Scalar Return}.

@menu
* Register Basics::		Number and kinds of registers.
* Allocation Order::		Order in which registers are allocated.
* Values in Registers::		What kinds of values each reg can hold.
* Leaf Functions::		Renumbering registers for leaf functions.
* Stack Registers::		Handling a register stack such as 80387.
@end menu

@node Register Basics
@subsection Basic Characteristics of Registers

@c prevent bad page break with this line
Registers have various characteristics.

@table @code
@findex FIRST_PSEUDO_REGISTER
@item FIRST_PSEUDO_REGISTER
Number of hardware registers known to the compiler.  They receive
numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
pseudo register's number really is assigned the number
@code{FIRST_PSEUDO_REGISTER}.

@item FIXED_REGISTERS
@findex FIXED_REGISTERS
@cindex fixed register
An initializer that says which registers are used for fixed purposes
all throughout the compiled code and are therefore not available for
general allocation.  These would include the stack pointer, the frame
pointer (except on machines where that can be used as a general
register when no frame pointer is needed), the program counter on
machines where that is considered one of the addressable registers,
and any other numbered register with a standard use.

This information is expressed as a sequence of numbers, separated by
commas and surrounded by braces.  The @var{n}th number is 1 if
register @var{n} is fixed, 0 otherwise.

The table initialized from this macro, and the table initialized by
the following one, may be overridden at run time either automatically,
by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
the user with the command options @option{-ffixed-@var{reg}},
@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}.

@findex CALL_USED_REGISTERS
@item CALL_USED_REGISTERS
@cindex call-used register
@cindex call-clobbered register
@cindex call-saved register
Like @code{FIXED_REGISTERS} but has 1 for each register that is
c

⌨️ 快捷键说明

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