přístup na byty v int C

Radek Benedikt benedikt na lphard.cz
Úterý Říjen 29 01:17:31 CET 2013


Miroslav Draxal píše v Po 28. 10. 2013 v 23:10 +0100:
> Samozřejmě, tudy cesta vede. Mě vrtá spíš jak to udělat přes ukazatele.
> Určitě to nějak jde. Abych se něco naučil. Míra

> > Ještě jsem zapomněl přidat jak to dělám do teď. Ale moc se mi to
> > nelíbí.**
> > **
> >
> >                               Linear.Krok = eeprom_read
> > (EEpromLinearKorekce);****
> >
> >                               Linear.Krok <<= 8;****
> >
> >                               Linear.Krok |= eeprom_read
> > (EEpromLinearKorekce+1);****
> >
> > ** **
> >
> > Jak přistoupit přes ukazatele na int Linear.krok (byt1 ; byt2)?****

	Slo by pretypovat pointer na Linear.krok na typ pointer na byte,
protoze inkrement ukazatele je o delku typu, nikoliv o byte. Nicmene je
to trochu drbani levou rukou za pravym uchem.
	Ukazatele bych nechal na pokoji a napsal bych to nacteni na jeden
radek, misto na tri.Usnadni se tim kompilatoru prace s optimalizaci.
Tohle je zrovna dost bezna konstrukce a kompilatory ji obvykle umi.
Nesmi v ni byt ale neco co zavisi na poradi cteni te korekce z EEprom.
Pak se ale neda spolehnout ani na to rozepsani na tri
radky.Optimalizatory pri agresivnim nastaveni umi sahnout i do takoveto
konstrukce. Optimalizace pointrove aritmetiky v prekladaci uz obvykle
tak slusna neni, je to spis o rucni optimalizaci. Jenze pri ni se do
toho zacinaji michat strojove zavisle veci a je pak sranda ten zdrojak
portovat jinam. Objevi se napr. problem little/big endian.
	Navic na vyse popsane konstrukci je videt, ze v podstate prirazeni int
do int muze byt zpracovavane na nekolik kroku a neni proto atomicke. Je
to docela sranda pri preruseni, kdyz by se cela ta korekce jednou za cas
doladovala a skocila napr. z  0x3FF na 0x400. To ale jen na okraj.

	Radek (bendikt2hw.cz)




Další informace o konferenci Hw-list