jfk
Guest
Tue May 25, 2004 9:35 am
Witam
Pytanie jak w temacie. Konkretnie chodzi mi o PC i mikroprocki takie jak
AVR, 8051, motorolki.
Który jak ma te bity ułożone - gdzie najstarszy bit w poszczególnych
prockach?
Wysyłam całe struktury (z polami bitowymi) danych szeregowo (po RS232 i po
SPI ) i chciałbym wiedziec jak to powinno być.
Pytanie dotyczy takze kolejności bajtów w słowie 16 lub 32 bit.
Czy to zależy takze od kompilatora C ?
Dzieki za wszelkie odpowiedzi.
jfk
Andy
Guest
Tue May 25, 2004 5:49 pm
Użytkownik "jfk" <jotefka@poczta.fm> napisał w wiadomości news:c8v7hd$mkn$1@inews.gazeta.pl...
Quote:
Witam
Pytanie jak w temacie. Konkretnie chodzi mi o PC i mikroprocki takie jak
AVR, 8051, motorolki.
Który jak ma te bity ułożone - gdzie najstarszy bit w poszczególnych
prockach?
Wysyłam całe struktury (z polami bitowymi) danych szeregowo (po RS232 i po
SPI ) i chciałbym wiedziec jak to powinno być.
Pytanie dotyczy takze kolejności bajtów w słowie 16 lub 32 bit.
Czy to zależy takze od kompilatora C ?
Dzieki za wszelkie odpowiedzi.
jfk
na PC'cie jest LITTLE ENDIAN
na prockach 8-bit owych to zalezy od kompilatora
KIEL na 8051 ma BIG ENDIAN
a avr-gcc ma LITTLE
--
Andrzej
Andy
Guest
Tue May 25, 2004 5:55 pm
Użytkownik "jfk" <jotefka@poczta.fm> napisał w wiadomości news:c8v7hd$mkn$1@inews.gazeta.pl...
Quote:
Witam
Pytanie jak w temacie. Konkretnie chodzi mi o PC i mikroprocki takie jak
AVR, 8051, motorolki.
Który jak ma te bity ułożone - gdzie najstarszy bit w poszczególnych
prockach?
Wysyłam całe struktury (z polami bitowymi) danych szeregowo (po RS232 i po
SPI ) i chciałbym wiedziec jak to powinno być.
po RS zaraz za bitem START leci najmlodszy bit (LSB)
po SPI jest konfigurowalne
w AVR'ach bit DORD, po resecie jest DODR = 0 czyli MSB fist
--
Andrzej
J.F.
Guest
Tue May 25, 2004 6:26 pm
On Tue, 25 May 2004 20:49:18 +0200, Andy wrote:
Quote:
na prockach 8-bit owych to zalezy od kompilatora
KIEL na 8051 ma BIG ENDIAN
a avr-gcc ma LITTLE
'51 jest dziwny :-)
adresy zaszyte w programie sa BE - Mov dptr,#..., Lcall, Ljmp.
Ale juz DPTR w rejestrach jest polozony jak LE [DPL 82, DPH 83).
CALL adresy na stos wrzuca LE.
Przy czym jest to praktycznie czysto 8-bit procesor, wiec kompilator
moze zastosowac dowolna konwencje ... no brak instrukcji DEC dptr
utrudnia operowanie na BE w XRAM.
Ale juz w takim 8080 czy Z80 - tylko LE.
J.
Adam Dybkowski
Guest
Tue May 25, 2004 10:01 pm
jfk wrote:
Quote:
Pytanie jak w temacie. Konkretnie chodzi mi o PC i mikroprocki takie jak
AVR, 8051, motorolki.
Który jak ma te bity ułożone - gdzie najstarszy bit w poszczególnych
prockach?
Jądro ARM ma endianess wybieralny, ale już konkretne implementacje mogą
tą swobodę ograniczać. Najczęściej (np. w ARMach Atmela) jest to little
endian (LSB first) i tak to widzi kompilator gcc. Podobnie jest w
gcc-avr - też little endian (tzn. gdy np. słowo 32-bitowe leży w pamięci
to najniższy adres zajmuje jego najmłodszy bajt).
--
Adam Dybkowski
adybkows@amwaw.edu.pl
http://www.amwaw.edu.pl/~adybkows/