ARM bare-metal programming in D (cont) - volatile

eles eles at eles.com
Sat Oct 26 07:48:23 PDT 2013


On Friday, 25 October 2013 at 20:10:13 UTC, Walter Bright wrote:
> On 10/24/2013 4:13 AM, eles wrote:
>> Anyway, poke's and peek's are a bit more cumbersome than 
>> volatile variables,
>> since they do not cope so well, for example, with arithmetic 
>> expressions.
>
> Why wouldn't they work with arithmetic expressions?
>
>     poke(0x888777, peek(0x12345678) + 1);
>
>
>> Anyway, still better than nothing. *If* they would exist.
>
>     T peek(T)(T* addr) { return *addr; }
>
>     void poke(T)(T* addr, T value) { *addr = value; }

Frankly, if it is not a big deal, why don't you put those in a 
std.hardware or std.directaccess module?

If I have to compile those in D outside of main program, why 
don't allow me to disable the optimizer *for a part* of my D 
program? Or for a variable?

And if I have to compile those in C, should I go entirely with it 
and only let the D program to be an "extern int main()"?

OOH you show me it is not a big deal, OTOH you make a big deal 
from it refusing every support inside the compiler or the 
standard library.

Should I one day define my own "int plus(int a, int b) { return 
a+b; }"?


More information about the Digitalmars-d mailing list