[elektro] C kérdés
Fuzesi Arnold
arnold.fuzesi.lista at gmail.com
Wed Sep 23 17:25:58 CEST 2009
pontosabban:
"István, amit akarsz az nem hordozható kódot generál, nem gond?"
Ha nem gond akkor a megoldas amit irtam.
A.
On 2009. 09. 23. 17:23, Fuzesi Arnold wrote:
> 16 bitesre ott sincs.
> Ha meg van akkor a fordito is azt forditja.
>
> -
>
> István, amit akarsz az nem hordozható kódot generál.
>
> A megoldas:
> (uchar*)&valtozo[x];
>
> ahol x [0;1] 16 bites valtozo eseten... igy tudod byteosan cimezni.
>
> A.
> On 2009. 09. 23. 14:53, Acs Gabor wrote:
>> Nem lenne jó egy asm betét? Mivel ott van bit test parancs.
>>
>>
>> Gábor
>>
>> 2009.09.23. 14:40 keltezéssel, Ágó István írta:
>>> Üdv mindenkinek
>>>
>>> Kellene csinálni egy makrót egy változó adott bitjének vizsgálatára, de
>>> minél gyorsabb kellene, hogy legyen, mert sokszor fut le sok darab belőle
>>> egymás után. A változó 16 bites tipus, az egyszerű if (valtozo&(1<<bit))
>>> sajnos nem ad optimális kódot. Ha viszont castolom a változót és a megfelelő
>>> "részre" használom az &(1<<bit) műveletet, akkor már azt kapom, amit
>>> szeretnék. Tehát valami ilyesmire lenne szükségem:
>>>
>>> #define bit_test(valtozo,bit) (#if (bit>7) (*((unsigned
>>> char*)((&valtozo)+1))&(1<<(bit-8))) #else (*((unsigned
>>> char*)valtozo)&(1<<bit)) #endif)
>>>
>>> Tehát ha b értéke nagyobb mint hét, akkor a valtozo felső bájtján végezzen
>>> &(1<<(bit-8)) műveletet, ha viszont kisebb mint hét, akkor az alsó bájtján
>>> &(1<<bit) műveletet. Használata egyszerűen if (bit_test(valtozo, bit))
>>> formában lenne. Csakhogy a fentit nem fogadja el a fordító (C18), egyszerűen
>>> syntax errorral honorálja. bit értéke a kódban fix szám, tehát nem futás
>>> közban akarok oda valamit berakni, hanem a preproceszor már ismert számmal
>>> dolgozna. Természetesen berakhatnám minden sorba az odavaló bitvizsgálatot,
>>> de az bántja a szememet :-)
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>> -----------------------------------------
>> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list