-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!peer01.fr7!news.highwinds-
media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.
neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Fri, 04 Dec 2015 09:43:18 +0100
From: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.24) Gecko/20100228
Thunderbird/2.0.0.24 Mnenhy/0.7.6.0
MIME-Version: 1.0
Newsgroups: pl.comp.programming
Subject: Re: Pakowanie struktur
References: <n3n4m5$grf$1@node1.news.atman.pl>
<a...@g...com>
<5...@g...com>
<f...@g...com>
<566030e8$0$22825$65785112@news.neostrada.pl>
<a...@g...com>
<566044c6$0$682$65785112@news.neostrada.pl>
<3...@g...com>
<56604c0e$0$679$65785112@news.neostrada.pl>
<6...@g...com>
In-Reply-To: <6...@g...com>
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 63
Message-ID: <56615224$0$678$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.187.17.90
X-Trace: 1449218596 unt-rea-a-01.news.neostrada.pl 678 79.187.17.90:44661
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 3973
X-Received-Body-CRC: 1294499503
Xref: news-archive.icm.edu.pl pl.comp.programming:208948
[ ukryj nagłówki ]W dniu 2015-12-03 16:08, M.M. pisze:
> On Thursday, December 3, 2015 at 3:05:24 PM UTC+1, Tomasz Kaczanowski wrote:
>> W dniu 2015-12-03 15:00, M.M. pisze:
>>> On Thursday, December 3, 2015 at 2:34:00 PM UTC+1, Tomasz Kaczanowski wrote:
>>>> W dniu 2015-12-03 14:08, M.M. pisze:
>>>>> On Thursday, December 3, 2015 at 1:09:14 PM UTC+1, Tomasz Kaczanowski wrote:
>>>>>
>>>>>> i gdzieniegdzie będzie mały bum, bo *((int*)(buf+2)); może mieć zdziebko
>>>>>> inną zawartość, niż nam się wydaje,
>>>>>
>>>>> Nie rozumiem. W jakich sytuacjach może mieć inną zawartość? Na moje
>>>>> albo reprezentacja bitowa się zgadza, albo nie. Jeśli nie, to w
>>>>> ogóle nie można używać kopiowania bitów.
>>>>
>>>> Tam gdzie zmienne muszą mieć wyrównane adresy. O ile w przypadku
>>>> spakowanej struktury przy odczycie kompilator wykona za nas odpowiednie
>>>> operacje, to w takim przypadku, gdy rzutujesz dane spod adresu, mówisz
>>>> kompilatorowi "wiem co robię, nie wtrącaj się", a, że wynik może w takim
>>>> przypadku być inny, cóż...
>>>
>>> To przy operacji:
>>> *((int*)(buf+2))
>>> kompilator nie wygeneruje takiego samego kodu jak przy wypakowaniu
>>> inta przesuniętego o 2 bajty w strukturze? Myślałem że na danej
>>> platformie kompilator bezpiecznie przerzuci dane na wyrównany adres i
>>> dopiero potem zacznie operować na tych danych.
>>
>>
>> z doświadczenia wiem, że nie poprawne było dopiero
>>
>> int zmienna;
>> memcpy(zmienna, (buf+2), sizeof(int));
>
>
> Jeśli wcześniej było:
> memcpy( buf+2 ,&zmienna , sizeof(int) );
> To też nie widzę zagrożenia. Rozmawiamy rzecz jasna o zgodnym formacie
> na poziomie bitów.
Cały czas zakładam zgodność bitów i endianów, bo inaczej żadne z tych
nie byłoby prawidłowe.
> Gdy ktoś upakował dane przy pomocy memcpy, a potem odzyskuje przez:
> *((int*)(buf+2))
> to obawiam się, że nie zawsze zadziała, o ile się nie mylę, to zadziała
> tylko na bigendian.
Nie - to zadziała, tam, gdzie jedyne wyrównanie odnośnie adresów dla
zmiennych jest adres parzysty, a to nie musi być prawdą. Przykład
częściej wysypujący się, to jeśli pierwsza dana będzie char, a następna
int. Wtedy będzie nieparzysty adres i na większej ilości
systemów/sprzętów zadziała to nieprawidłowo. Endianowość może co
najwyżej zmniejszyć efekt w niektórych wypadkach, ale nie zagwarantuje
ogólnie poprawnego działania.
Oczywiście pomijam fakt, ze wszelkie struktury transportowe winno raczej
opisywać się przez int32_t itp, wtedy mamy przynajmniej wielkość
zagwarantowaną.
--
Kaczus
http://kaczus.ppa.pl
Następne wpisy z tego wątku
- 04.12.15 14:18 Maciej Sobczak
- 04.12.15 21:26 M.M.
- 07.12.15 10:14 Tomasz Kaczanowski
- 07.12.15 12:02 M.M.
- 07.12.15 15:12 Maciej Sobczak
- 07.12.15 15:40 M.M.
- 07.12.15 16:22 witek
- 07.12.15 17:05 M.M.
- 07.12.15 18:40 witek
- 07.12.15 19:03 Sebastian Biały
- 07.12.15 19:29 M.M.
- 07.12.15 19:41 M.M.
- 07.12.15 19:55 witek
- 07.12.15 20:06 M.M.
- 07.12.15 20:25 witek
Najnowsze wątki z tej grupy
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-25 Re: Boeing Bad Dream (Koszmar) Liner rozbity w Delhi ...
- 2025-07-24 Re: Wypadek kolejowy na stacji Wiesiółka- analiza tragicznego zdarzenia z czerwca 2001 roku.
- 2025-07-23 Re: Tysiące wypadków na niebezpiecznych przejazdach kolejowych a Polskie Linie Kolejowe nic nie robią odlat, bo kierowca pociągu nie ginie
- 2025-07-23 Re: Tysiące wypadków na niebezpiecznych przejazdach kolejowych a Polskie Linie Kolejowe nic nie robią odlat, bo kierowca pociągu nie ginie
- 2025-07-23 Teoria Organizacji w Ujęciu Totaliztycznym - NOWA MONOGRAFIA
- 2025-07-24 Warszawa => MENA New Business Manager <=
- 2025-07-24 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-24 Fundacja Wolność od Religii domaga się wyjaśnień ws zawierzenia Powiatu Wschowskiego Maryi Królowej Polski
- 2025-07-23 Teoria Organizacji w Ujęciu Totaliztycznym - NOWA MONOGRAFIA
- 2025-07-23 Gdańsk => Programista Delphi <=
- 2025-07-23 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-23 Warszawa => Starszy inżynier DevOps (AWS) <=
- 2025-07-23 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-23 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-23 Wrocław => Senior Key Account Manager IT <=