[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