OT:programovani v C

Ales Prochaska prochaska@alsoft.cz
Úterý Červen 16 10:00:51 CEST 2009


Nepomohlo by napsat vlastni memcpy ktere zkopiruje 0 az 3 byte po
bytech, pak pojede po zarovnanych dwordech a nakonec zase 0 az 3 byte?

Ales Prochaska

> 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