On 2006-07-03, David Brown <da...@westcontrol.com> wrote:

>> but in this case, reading the C source code, I honestly can't
>> understand for sure what it meant....if I were to translate
>> manually that code into asm, I would have asked a
>> clarification to the programmer: did you want to sample twice
>> the port and then add these two samples ? (say for making an
>> average) or did you want two sample the port once and double
>> that reading ? IMHO the answer wasn't clear, even if I
>> considered all the volatile qualifiers;
>
> In that case, you simply don't have the experiance to
> understand volatiles properly.  The code was perfectly clear -
> the port should be sampled twice, and it's sum taken.  If
> Grant had wanted to sample it once and double it, he would
> have writen "two = 2 * P6IN;".  Of course, in real code the
> function and variable names would have given an indication of
> *why* he was doing this, but the code itself is perfectly
> clear.

I'd like to point out that 

 1) I didn't write that code originally, I ran across that
    example in a thread in the yahoo msp430 list.

 2) The example isn't supposed to do anything useful, it's just
    a simple test-case that demonstrates a bug in the compiler.    

> Local variables are, in general, more efficient than global variables - but
> they are not more efficient than calculations carried out internally by the
> compiler using registers.  Add variables when they make sense in your code,
> and make the logic of your code clearer - don't do it for the compiler's
> sake.

Especially since the compiler will usually just optimize the
temporary variables away and you'll end up with the same code
either way.  (At least for simple cases.)

-- 
Grant Edwards                   grante             Yow!  There's a SALE on
                                  at               STRETCH SOCKS down at the
                               visi.com            "7-11"!!


Reply via email to