Re: hii
- From: "Vladimir S. Oka" <novine@xxxxxxxxxxxxxxx>
- Date: 31 Jan 2006 02:08:25 -0800
Umesh wrote:
> Ganga wrote:
> > Please, will anyone explain me difference between 'register' and
> Register keyword for a variable will force the compiler backend to give
> register.
> so by this compiler can acess the variable without store
> instruction(i.e it can use mov instruction).
Not entirely correct. The `register` keyword will /suggest/ to the
compiler that a variable be stored in a register. Most modern compilers
are better at optimising than programmers, and will happily ignore the
`register` keyword.
> > 'volatile' variables
> Volatile Keyword for a variable will prevent variable from
> optimization.
Again, not entirely correct. The `volatile` keyword tells the compiler
that the variable may be changed by something outside the scope of the
current program (other programs in the system, hardware device, cosmic
rays...). Because of this, the compiler cannot be certain of the value
of the `volatile` variable, even if your code did not change it, and
will hence avoid optimisations that rely on that value not changing
between two points in the code.
For example, in the snippet:
int main(void)
{
volatile int i = 5;
int j = 6;
while (3 < i)
{
++j;
}
return 0;
}
The compiler cannot assume that `i` will be 5 when it is tested for the
`while` loop, and hence cannot replace it with the equivalent of `while
(1)`, but has to generate the code for the test. If `i` was not
`volatile`, the compiler could generate the equivavalent of:
int main(void)
{
int j = 6;
endless_loop:
++j;
goto endless_loop;
}
(Note that it could get rid of `i` altogether.)
<snipped not so good an example>
Cheers
Vladimir
.
- Prev by Date: Re: union
- Next by Date: Re: What u mean by this statemnet ?.
- Previous by thread: Re: hii
- Next by thread: Re: hii
- Index(es):
Relevant Pages
|