At 11:39 10-05-05 +0200, you wrote:
> Hi, for your help about Re: Help about sizeof( struct ...)
>MSP430-GCC So, if i write the fowling function (Swap_TAB_UART), the
>result is not good. the function lose len, ix values. registers !!!
> Kind Regards, Thln! void Swap_TAB_UART(unsigned char ix, unsigned
>char len)
>void Swap_TAB_UART(unsigned char ix, unsigned char len)
>{
>unsigned char i, tmp, l;
>
>l = len/2;
>i = 0;
>do
> {
> tmp = TAB_UART[ix+i];
> TAB_UART[ix+i] = TAB_UART[ix+len-i-1];
> TAB_UART[ix+len-i-1] = tmp;
> i++;
> } while (i<l);
>}
Using 'complex' array indexes like these is asking for trouble (yes, I know
it should work...) I've seen commercial compilers choking on these sort of
constructions as well.
It is better to use a variable and pre-calculate the index like this:
void Swap_TAB_UART(unsigned char ix, unsigned char len)
{
unsigned char i, tmp, l;
short a,b;
l = len/2;
i = 0;
do
{
a=ix+i;
b=ix+len-i-1;
tmp = TAB_UART[a];
TAB_UART[a] = TAB_UART[b];
TAB_UART[b] = tmp;
i++;
} while (i<l);
}
Nico Coesel