|
From: Anton S. <an...@so...> - 2012-03-18 20:42:34
|
Borja,
One thought I had was to use the word datum, instead of pointee.
in your third example.
-Anton
On Sun, Mar 18, 2012 at 12:03 PM, Borja Ferrer <bor...@gm...> wrote:
> Ok Eric :)
>
> Btw, can you think of better and more formal error messages as listed in
> message 2?
>
> 2012/3/18 Weddington, Eric <Eri...@at...>
>
>>
>>
>> > -----Original Message-----
>> > From: Borja Ferrer [mailto:bor...@gm...]
>> > Sent: Sunday, March 18, 2012 9:35 AM
>> > To: Weddington, Eric
>> > Cc: Anton Staaf; avr...@li...
>> > Subject: Re: [avr-llvm-devel] Flash data
>> >
>> > Heh I knew Eric was going to get a bit mad about what you said Anton
>> xDD
>> >
>> > Anton, those examples you wrote work exactly the same way as you
>> described.
>> > However you can't make that everything that is declared with const to
>> mean
>> > that it comes from flash memory, because it may be a ptr to ram, it's
>> not a
>> > safe assumption to do. That way, __flash has to be used explicitly, so
>> the
>> > user is telling the compiler to change the storage of that piece of
>> data from
>> > the generic address space to a custom one.
>> >
>> > Eric, about my decision of declaring variables always const, it is
>> because
>> > they are really read-only by hardware, so writing to them is illegal
>> and this
>> > way you're defining the data type as it should be, always readonly.
>> Another
>> > reason is that by telling the compiler the data is not going to change
>> > throughout execution you benefit from a decent amount of optimizations
>> and
>> > alias analysis, avoiding lots of memory reloads and many other goodies
>> you get
>> > when using the const qualifier.
>> >
>> > Even if something is declared const, with a cast the constness can be
>> removed
>> > and one could write to the variable, but I've added an error to handle
>> this
>> > sort of behavior. In theory nobody should want to do this because it
>> would be
>> > going against what flash memory does, so it would be more like wanting
>> to
>> > trick the compiler, but erroring in this case would show it's robust
>> and that
>> > you cant really trick it.
>> >
>>
>> Ok, it sounds reasonable to me. :-)
>>
>> Thanks for the explanation!
>>
>> Eric
>
>
|