📄 local-reg-vars.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.6"><!--Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. <p>Permission is granted to copy, distribute and/or modify this documentunder the terms of the GNU Free Documentation License, Version 1.2 orany later version published by the Free Software Foundation; with theInvariant Sections being "GNU General Public License" and "FundingFree Software", the Front-Cover texts being (a) (see below), and withthe Back-Cover Texts being (b) (see below). A copy of the license isincluded 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.--><meta http-equiv="Content-Style-Type" content="text/css"><style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller }--></style></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><h3 class="subsection">Specifying Registers for Local Variables</h4><p>You can define a local register variable with a specified registerlike this:<pre class="smallexample"> register int *foo asm ("a5"); </pre><p>Here <code>a5</code> is the name of the register which should be used. Notethat this is the same syntax used for defining global registervariables, but for a local variable it would appear within a function. <p>Naturally the register name is cpu-dependent, but this is not aproblem, since specific registers are most often useful with explicitassembler instructions (see <a href="Extended-Asm.html#Extended%20Asm">Extended Asm</a>). Both of these thingsgenerally require that you conditionalize your program according tocpu type. <p>In addition, operating systems on one type of cpu may differ in how theyname the registers; then you would need additional conditionals. Forexample, some 68000 operating systems call this register <code>%a5</code>. <p>Defining such a register variable does not reserve the register; itremains available for other uses in places where flow control determinesthe variable's value is not live. <p>This option does not guarantee that GCC will generate code that hasthis variable in the register you specify at all times. You may notcode an explicit reference to this register in an <code>asm</code> statementand assume it will always refer to this variable. <p>Stores into local register variables may be deleted when they appear to be deadaccording to dataflow analysis. References to local register variables maybe deleted or moved or simplified. </body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -