-
Data: 2009-10-16 11:24:37
Temat: Re: Dlaczego ATmega128 przek?amuje?
Od: cepu69 <c...@t...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]T.M.F. wrote:
> W dniu 15.10.2009 20:11, MiSTER pisze:
>>> Cos sie zapetliles, to w koncu te pola bitowe sa rozmieszczane dowolnie
>>> czy nie?
>>> IMHO kompilator rozmieszcza je w kolejnosci w jakiej sa zdefiniowane - w
>>> koncu to struktura, a elementy struktury wystepuja w kolejnosci zgodnej
>>> z definicja.
>>
>> Nie zaleca si? korzysta? z p?l bitowych je?eli soft ma by? kompilowany
>> pod
>> r?nymi platformami gdy? standard NIE DEFINIUJE kolejno?ci przypisania
>> bit?w.
>>
To kompilator ustala kolejnosc bitwo we bajcie, np GCC vs propriety
compiler:
typedef union {
unsigned short word;
#ifndef __GNUC__
struct
{
unsigned short :1; /* reserved */
unsigned short CodeAssertLine :13;
unsigned short EventOverflowTrigger :1;
unsigned short EventCodeAssertTrigger :1;
} bit;
#else
struct
{
unsigned short EventCodeAssertTrigger :1;
unsigned short EventOverflowTrigger :1;
unsigned short CodeAssertLine :13;
unsigned short :1; /* reserved */
} bit;
#endif
aczkolwiek GCC dostarcza makra __BIG_ENDIAN_BITFIELD oraz
__LITTLE_ENDIAN_BITFIELD informujace o ukladzie bitow w slowie
struct atapi_mechstat_header {
#if defined(__BIG_ENDIAN_BITFIELD)
__u8 fault : 1;
__u8 changer_state : 2;
__u8 curslot : 5;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
__u8 curslot : 5;
__u8 changer_state : 2;
__u8 fault : 1;
#else
#error "Please fix <asm/byteorder.h>"
#endif
#if defined(__BIG_ENDIAN_BITFIELD)
__u8 mech_state : 3;
__u8 door_open : 1;
__u8 reserved1 : 4;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
__u8 reserved1 : 4;
__u8 door_open : 1;
__u8 mech_state : 3;
#else
#error "Please fix <asm/byteorder.h>"
#endif
byte curlba[3];
byte nslots;
__u8 short slot_tablelen;
};
>
> Ale to jak sadze jest raczej kwestia big/little-endian.
Nie endian mowi o kolejnosi bajtow w slowie :
http://pl.wikipedia.org/wiki/Kolejność_bajtów
> Dla programu nie ma to znaczenia - o ile wlasnie nie przenosze pomiedzy
> architekturami danych wygenerowanych na innej. Bo w samym programie
> odwolanie do pola struktury zawsze bedzie jednoznaczne.
Oczywiscie dopoki nie jest to unia i odwolujesz sie do niej zarowno przez
pola bitowe jak i slowa ;)
Następne wpisy z tego wątku
- 16.10.09 11:32 T.M.F.
- 16.10.09 11:40 T.M.F.
- 16.10.09 11:58 Piotr Gałka
- 16.10.09 12:49 T.M.F.
- 16.10.09 14:22 Konop
- 16.10.09 14:24 Piotr Gałka
- 16.10.09 14:39 Piotr Gałka
- 16.10.09 15:22 T.M.F.
- 16.10.09 15:31 Ghost
- 16.10.09 15:33 Piotr Gałka
- 16.10.09 20:12 ELP
- 16.10.09 21:08 Ghost
- 16.10.09 21:26 Konop
- 17.10.09 10:25 T.M.F.
- 17.10.09 22:50 Adam Dybkowski
Najnowsze wątki z tej grupy
- 8080
- Portowanie CP/M
- radyjko
- Re: Basen i chłodzenie w w wentylacji mechanicznej
- Akumulatory VRLA
- ładowarka zmarła
- Podstawa bezpiecznikowa jako rozłącznik DC
- Napięcie akumulatora wyłączające UPS / jakie nowe akumulatory do UPS?
- nawigacja satelitarna
- SmartLife/Tuya i osuszanie -- mordowanie z zimną krwią...
- Głośnik piezoelektryczny
- Mala autonomiczna kamera monitoringu
- czas na emeryturę i EB
- Generowanie sumy kontrolnej z fragmentu pliku bin
- Re: Mala autonomiczna kamera monitoringu
Najnowsze wątki
- 2024-07-11 Tokarze CNC czyli ciężkie życie prototypiarza
- 2024-07-12 Zgody na przetwarzanie danych
- 2024-07-13 IObit Uninstaller Pro 13.6.0.5 Multilingual: Installation Guide
- 2024-07-12 stare graty młode kozy
- 2024-07-11 8080
- 2024-07-13 Przyłącze dolne grzejnika
- 2024-07-13 IObit Uninstaller Pro 13.6.0.5 Multilingual Overview
- 2024-07-12 Czym wykonać otwór fi 100 w betonie komórkowym?
- 2024-07-12 Warszawa => Senior Rust Software Engineer <=
- 2024-07-12 Warszawa => Business Unit Manager (Recruitment Business) <=
- 2024-07-12 Warszawa => Head of WMS Competence Center for IT&D Contract Logistics
- 2024-07-12 Warszawa => Head od WMS Competence Center dla IT&D (Blue Yonder) <=
- 2024-07-12 Kraków => Ruby Backend Developer <=
- 2024-07-12 Warszawa => UX/UI Designer <=
- 2024-07-12 Częstochowa => Specjalista ds. Marketingu (E-Commerce) <=