OT:programovani v C

Jaroslav Buchta jaroslav.buchta@gmail.com
Úterý Červen 16 10:40:54 CEST 2009


Ale to byla nejaka spatna knihovna, ne? Co jsem pouzival ja a zrovna memcpy
jsem zkoumal, tak si to pekne zarovnalo kopirovanim zacatku a konce po
bytech a zbytek to vzalo po 32b slovech...

-----Original Message-----
From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On
Behalf Of Miroslav Šinko
Sent: Tuesday, June 16, 2009 12:38 AM
To: HW-news
Subject: Re: OT:programovani v C


Odbocka od sizeof, take pojednanie o memcpy...

Pekne sme sa na memcpy popalili pri vyvoji pre WinCE na platforme ARM4T.
Tento procesor vyzaduje 32-bit pristup do pamati zarovnany na 4 byte. Majme
lokalne premenne typu poli DWORD-ov v nezarovnanych strukturach, t.j. aj na
adresach nedelitelnych 4. Pouzime na ne memcpy... Kym sme sa hrali na debug
verzii bez optimalizacii, vsetko behalo k spokojnosti. Ako sme urobili
optimalizovany release, zamrzol cely "geret" komplet aky je aj s celym OS,
kde bol nas konkretny proces iba suciastkou skladacky. Co sa stalo..
neoptimalizovana verzia memcpy kopirovala byte po byte - OK; optimalizovana
chcela nacitat celych 32-bit do 32-bit registra. Z adresy nedelitelnej 4 to
proste nejde. Riesenim je explicitne pretypovanie memcpy((BYTE*)dw1,
(BYTE*)dw2, sizeof(array)); alebo prisne pouzivat zarovnane struktury, co
vsak pri roznych datovych elementoch definovanych v protokoloch 3. stran nie
vzdy ide.

miro
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list