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

📄 local-reg-vars.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="Local%20Reg%20Vars">Local Reg Vars</a>,

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

Up:<a rel="up" accesskey="u" href="Explicit-Reg-Vars.html#Explicit%20Reg%20Vars">Explicit Reg Vars</a>

<hr><br>

</div>



<h4 class="subsection">Specifying Registers for Local Variables</h4>



   <p>You can define a local register variable with a specified register

like this:



<pre class="example">     register int *foo asm ("a5");

     </pre>



<p>Here <code>a5</code> is the name of the register which should be used.  Note

that this is the same syntax used for defining global register

variables, but for a local variable it would appear within a function.



   <p>Naturally the register name is cpu-dependent, but this is not a

problem, since specific registers are most often useful with explicit

assembler instructions (see <a href="Extended-Asm.html#Extended%20Asm">Extended Asm</a>).  Both of these things

generally require that you conditionalize your program according to

cpu type.



   <p>In addition, operating systems on one type of cpu may differ in how they

name the registers; then you would need additional conditionals.  For

example, some 68000 operating systems call this register <code>%a5</code>.



   <p>Defining such a register variable does not reserve the register; it

remains available for other uses in places where flow control determines

the variable's value is not live.  However, these registers are made

unavailable for use in the reload pass; excessive use of this feature

leaves the compiler too few available registers to compile certain

functions.



   <p>This option does not guarantee that GCC will generate code that has

this variable in the register you specify at all times.  You may not

code an explicit reference to this register in an <code>asm</code> statement

and assume it will always refer to this variable.



   <p>Stores into local register variables may be deleted when they appear to be dead

according to dataflow analysis.  References to local register variables may

be deleted or moved or simplified.



   </body></html>



⌨️ 快捷键说明

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