Re: volatile vs aliased



Rolf wrote:
Do we have a difference to C/C++ increment operator here? consider

pragma Volatile (x);
x := x + 1;   -- (1)
        vs.
x++;          -- (2)

In the Ada case (1) we are forced to have "read from memory",
"increment" and "write to memory" instructions, whereas in C/C++ (2)
you can get a single "increment memory" instruction (presuming the
mentioned assembler instructions exist on a given processor)

Are there really memory chips with built-in arithmetic circuitry, so that the processor can send an "add one" instruction to the memory and have the variable incremented without reading it first? At least I've never heard of that. As far as I know, adding and subtracting is the processor's job.


And why would you use pragma Volatile on a variable stored in the memory, anyway? As Ludovic described it, it would only be useful on variables mapped to special hardware devices. I don't think you would want to store a counter there.

--
Björn Persson                              PGP key A88682FD
                   omb jor ers @sv ge.
                   r o.b n.p son eri nu
.