164
?
Disparage slightly the alternative that the
exactly. The compiler regards this alternative as one unit more costly for each
it.
!
Disparage severely the alternative that the
without reloading, but if reloading is needed, some other alternative will be used.
6.38.3. Constraint Modifier Characters
Here are constraint modifier characters.
=
Means that this operand is write-only for this instruction: the previous value is discarded and
replaced by output data.
+
Means that this operand is both read and written by the instruction.
When the compiler fixes up the operands to satisfy the constraints, it needs to know which
operands are inputs to the instruction and which are outputs from it.
identifies an operand that is both input and output; all other operands are assumed to be input
only.
If you specify
=
&
Means (in a particular alternative) that this operand is an earlyclobber operand, which is modified
before the instruction is finished using the input operands. Therefore, this operand may not lie in
a register that is used as an input operand or as part of any memory address.
applies only to the alternative in which it is written. In constraints with multiple alternatives,
&
sometimes one alternative requires
the 68000.
An input operand can be tied to an earlyclobber operand if its only use as an input occurs before
the early result is written. Adding alternatives of this form often allows GCC to produce better
code when only some of the inputs can be affected by the earlyclobber.
does not obviate the need to write
&
%
Declares the instruction to be commutative for this operand and the following operand. This
means that the compiler may interchange the two operands if that is the cheapest way to make
all operands fit the constraints. GCC can only handle one commutative pair in an asm; if you use
more, the compiler may fail.
#
Says that all following characters, up to the next comma, are to be ignored as a constraint. They
are significant only for choosing register preferences.
or
in a constraint, you put it in the first character of the constraint string.
+
&
=
Chapter 6. Extensions to the C Language Family
appears in, as a choice when no alternative applies
?
appears in. This alternative can still be used if it fits
!
while others do not. See, for example, the
.
that appears in
?
identifies an output;
=
insn of
movdf
+
Need help?
Do you have a question about the ENTERPRISE LINUX 3 - USING GCC and is the answer not in the manual?
Questions and answers