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

Timo Sintonen t.sintonen at luukku.com
Fri Oct 25 12:16:29 PDT 2013


On Friday, 25 October 2013 at 18:12:40 UTC, Johannes Pfau wrote:
> Am Fri, 25 Oct 2013 17:20:23 +0200
> schrieb "Timo Sintonen" <t.sintonen at luukku.com>:
>> It seems that it is two different things here. As far as I 
>> understand, sharing means something like 'somebody may change 
>> my data' and volatility is something like 'I have to know 
>> immediately if the data is changed'. It has become obvious 
>> that these two are not easy to fit together and make a working 
>> model.
>> 
>> The original question in this thread was to have a proper way 
>> to access hardware registers. So far, even the top people have 
>> offered only workarounds. I wonder how long D can be marketed 
>> as system language if it does not have a defined and reliable 
>> way to access system hardware.
>> 
>> Register access occurs often in time critical places like 
>> interrupt routines. A library routine or external function is 
>> not a choice. Whatever the feature is, it has to be built in 
>> the language. I don't care if it is related to variables, 
>> blocks or files as long as I do not have to put these files in 
>> a separate  directory like I do now.
>> 
>> I would like to hear more what would be the options. Then we 
>> could make a decision what is the right way to go.
>
> What's wrong with the solution Iain mentioned, i.e the way 
> shared
> is implemented in GDC?
>
> http://forum.dlang.org/thread/bifrvifzrhgocrejepvc@forum.dlang.org?page=4#post-mailman.2475.1382646532.1719.digitalmars-d:40puremagic.com
> http://forum.dlang.org/thread/bifrvifzrhgocrejepvc@forum.dlang.org?page=4#post-mailman.2480.1382655175.1719.digitalmars-d:40puremagic.com

There is nothing wrong if it works.
When I last time discussed about this with you and Iain, I do not 
remember if this was mentioned. I have been on belief that gdc 
has no solution.

The second thing is, as I mentioned, that register access is such 
an important feature in system language that it should be in 
language specs.

A quick search did not bring any documentation about shared in 
general and how gdc version is different. TDPL mentions only that 
shared guarantees the order of operations but does not mention 
anything about volatility.
Can anybody point to any documentation?


More information about the Digitalmars-d mailing list