1<html lang="en"> 2<head> 3<title>Explicit Reg Vars - Using the GNU Compiler Collection (GCC)</title> 4<meta http-equiv="Content-Type" content="text/html"> 5<meta name="description" content="Using the GNU Compiler Collection (GCC)"> 6<meta name="generator" content="makeinfo 4.13"> 7<link title="Top" rel="start" href="index.html#Top"> 8<link rel="up" href="C-Extensions.html#C-Extensions" title="C Extensions"> 9<link rel="prev" href="Asm-Labels.html#Asm-Labels" title="Asm Labels"> 10<link rel="next" href="Alternate-Keywords.html#Alternate-Keywords" title="Alternate Keywords"> 11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 12<!-- 13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 152010 Free Software Foundation, Inc. 16 17Permission is granted to copy, distribute and/or modify this document 18under the terms of the GNU Free Documentation License, Version 1.3 or 19any later version published by the Free Software Foundation; with the 20Invariant Sections being ``Funding Free Software'', the Front-Cover 21Texts being (a) (see below), and with the Back-Cover Texts being (b) 22(see below). A copy of the license is included in the section entitled 23``GNU Free Documentation License''. 24 25(a) The FSF's Front-Cover Text is: 26 27 A GNU Manual 28 29(b) The FSF's Back-Cover Text is: 30 31 You have freedom to copy and modify this GNU Manual, like GNU 32 software. Copies published by the Free Software Foundation raise 33 funds for GNU development.--> 34<meta http-equiv="Content-Style-Type" content="text/css"> 35<style type="text/css"><!-- 36 pre.display { font-family:inherit } 37 pre.format { font-family:inherit } 38 pre.smalldisplay { font-family:inherit; font-size:smaller } 39 pre.smallformat { font-family:inherit; font-size:smaller } 40 pre.smallexample { font-size:smaller } 41 pre.smalllisp { font-size:smaller } 42 span.sc { font-variant:small-caps } 43 span.roman { font-family:serif; font-weight:normal; } 44 span.sansserif { font-family:sans-serif; font-weight:normal; } 45--></style> 46<link rel="stylesheet" type="text/css" href="../cs.css"> 47</head> 48<body> 49<div class="node"> 50<a name="Explicit-Reg-Vars"></a> 51<p> 52Next: <a rel="next" accesskey="n" href="Alternate-Keywords.html#Alternate-Keywords">Alternate Keywords</a>, 53Previous: <a rel="previous" accesskey="p" href="Asm-Labels.html#Asm-Labels">Asm Labels</a>, 54Up: <a rel="up" accesskey="u" href="C-Extensions.html#C-Extensions">C Extensions</a> 55<hr> 56</div> 57 58<h3 class="section">6.44 Variables in Specified Registers</h3> 59 60<p><a name="index-explicit-register-variables-2680"></a><a name="index-variables-in-specified-registers-2681"></a><a name="index-specified-registers-2682"></a><a name="index-registers_002c-global-allocation-2683"></a> 61GNU C allows you to put a few global variables into specified hardware 62registers. You can also specify the register in which an ordinary 63register variable should be allocated. 64 65 <ul> 66<li>Global register variables reserve registers throughout the program. 67This may be useful in programs such as programming language 68interpreters which have a couple of global variables that are accessed 69very often. 70 71 <li>Local register variables in specific registers do not reserve the 72registers, except at the point where they are used as input or output 73operands in an <code>asm</code> statement and the <code>asm</code> statement itself is 74not deleted. The compiler's data flow analysis is capable of determining 75where the specified registers contain live values, and where they are 76available for other uses. Stores into local register variables may be deleted 77when they appear to be dead according to dataflow analysis. References 78to local register variables may be deleted or moved or simplified. 79 80 <p>These local variables are sometimes convenient for use with the extended 81<code>asm</code> feature (see <a href="Extended-Asm.html#Extended-Asm">Extended Asm</a>), if you want to write one 82output of the assembler instruction directly into a particular register. 83(This will work provided the register you specify fits the constraints 84specified for that operand in the <code>asm</code>.) 85</ul> 86 87<ul class="menu"> 88<li><a accesskey="1" href="Global-Reg-Vars.html#Global-Reg-Vars">Global Reg Vars</a> 89<li><a accesskey="2" href="Local-Reg-Vars.html#Local-Reg-Vars">Local Reg Vars</a> 90</ul> 91 92 </body></html> 93 94