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

📄 multi-alternative.html

📁 gcc手册
💻 HTML
字号:
<html lang="en">

<head>

<title>Using the GNU Compiler Collection (GCC)</title>

<meta http-equiv="Content-Type" content="text/html">

<meta name="description" content="Using the GNU Compiler Collection (GCC)">

<meta name="generator" content="makeinfo 4.3">

<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">

<!--

Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,

1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.



   <p>Permission is granted to copy, distribute and/or modify this document

under the terms of the GNU Free Documentation License, Version 1.2 or

any later version published by the Free Software Foundation; with the

Invariant Sections being "GNU General Public License" and "Funding

Free Software", the Front-Cover texts being (a) (see below), and with

the Back-Cover Texts being (b) (see below).  A copy of the license is

included in the section entitled "GNU Free Documentation License".



   <p>(a) The FSF's Front-Cover Text is:



   <p>A GNU Manual



   <p>(b) The FSF's Back-Cover Text is:



   <p>You have freedom to copy and modify this GNU Manual, like GNU

     software.  Copies published by the Free Software Foundation raise

     funds for GNU development.-->

</head>

<body>

<div class="node">

<p>

Node:<a name="Multi-Alternative">Multi-Alternative</a>,

Next:<a rel="next" accesskey="n" href="Modifiers.html#Modifiers">Modifiers</a>,

Previous:<a rel="previous" accesskey="p" href="Simple-Constraints.html#Simple%20Constraints">Simple Constraints</a>,

Up:<a rel="up" accesskey="u" href="Constraints.html#Constraints">Constraints</a>

<hr><br>

</div>



<h4 class="subsection">Multiple Alternative Constraints</h4>



   <p>Sometimes a single instruction has multiple alternative sets of possible

operands.  For example, on the 68000, a logical-or instruction can combine

register or an immediate value into memory, or it can combine any kind of

operand into a register; but it cannot combine one memory location into

another.



   <p>These constraints are represented as multiple alternatives.  An alternative

can be described by a series of letters for each operand.  The overall

constraint for an operand is made from the letters for this operand

from the first alternative, a comma, the letters for this operand from

the second alternative, a comma, and so on until the last alternative.



   <p>If all the operands fit any one alternative, the instruction is valid. 

Otherwise, for each alternative, the compiler counts how many instructions

must be added to copy the operands so that that alternative applies. 

The alternative requiring the least copying is chosen.  If two alternatives

need the same amount of copying, the one that comes first is chosen. 

These choices can be altered with the <code>?</code> and <code>!</code> characters:



     <dl>

<dt><code>?</code>

     <dd>Disparage slightly the alternative that the <code>?</code> appears in,

as a choice when no alternative applies exactly.  The compiler regards

this alternative as one unit more costly for each <code>?</code> that appears

in it.



     <br><dt><code>!</code>

     <dd>Disparage severely the alternative that the <code>!</code> appears in. 

This alternative can still be used if it fits without reloading,

but if reloading is needed, some other alternative will be used. 

</dl>



   </body></html>



⌨️ 快捷键说明

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