Automaticke pretypovani u AVR-GCC
Petr Tomasek
tomasek@etf.cuni.cz
Středa Červenec 22 14:23:31 CEST 2009
> > unsigned long x;
> > unsigned char a1, a2, a3, a4;
> >
> > a1 = x;
> > a2 = x >> 8;
> > a3 = x >> 16;
> > a4 = x >> 24;
> >
> > který se přeložil tak, že první tři přiřazení prostě vybraly ten správný
> > byte z dwordu x, zatímco to čtvrté se přeložilo jako smyčka s 24
> > iteracemi rotace po jednom bitu.
> >
> > Lukáš Grepl
>
> To by mozna melo nasledujici reseni:
> a4 = ((x >> 16) >> 8);
> :-)
Lepsi je v takovem pripade pouzit union, treba jako:
typedef union {
unsigned long val32;
struct {
unsigned char a4;
unsigned char a3;
unsigned char a2;
unsigned char a1;
} val8;
} int32;
(Samozrejme je nutne vedet, jaci indiáni rostou v dane architekture...)
P.T.
--
Petr Tomasek <http://www.etf.cuni.cz/~tomasek>
Jabber: butrus@jabbim.cz
SIP: butrus@ekiga.net
Další informace o konferenci Hw-list