[elektro] Munka (C kérdés)
hg12345
hg12345 at freemail.hu
Sat Sep 17 14:19:02 CEST 2011
Hi,
mint írtam tudom a megoldást, arra lennék kiváncsi ez fordító hiba vagy értelemezési gyengség nálam...
Ez a rutin a számábrázolási maximumig számolna, elvileg függetlenül a tárolási mérettől!
de nem igy van.
egyébbként a fordítás lényege igy nézki, de nem hiszem, hogy ezt sokan értik.....
0x08004FEA 8912 LDRH r2,[r2,#0x08] ;// félszó beolvasás
0x08004FEC 43D2 MVNS r2,r2 ;//teljesszó complemens státusbitek frissítésével
0x08004FEE D00D BEQ 0x0800500C ;//ugrás ha nulla
igazság szerint beolvasás után 32 bitesen kezeli, a 16 bites változót.
amiatt a megefelelő müködéshez a ~ után ujra kell castolni, de ez már szerintem fussantás.....
Acs Gabor <agabor at electrodesign.hu> írta:
>Nem pont fordítva, hogy csak egyszer végez csak növelést, amikor count==0?>
>
HG, azt ellenőrizted, hogy a fordító tényleg jól hajtja végre ezt a >
műveletet, tehát az>
>
if (~ hatására nem nyúl véletlen a változóhoz, és hogy a változó eléri ténylegesen a maximumot?>
>
Nekem régen volt olyan, hogy valami hasonló esetben úgy optimalizálta a fordító a műveletet, amiben volt egy logikai hiba, és ezért nem működött. A következő verzió már helyesen csinálta.>
>
>
>
Gábor>
>
2011.09.17. 13:00 keltezéssel, Info írta:>
>>> Ez miért nem müködik?>
>>>>
>>> uint16_t count;>
>>>>
>>> if (~count)>
>>> count++;>
>>>>
>>> elvileg ez csak 0xFFFF-ig számól, de KEIL fordító esetén>
>>> ARM(32bit) rendszerben a nem áll le a számlálás...>
>>>>
>> if (!count) nem jobb?>
> Nem, mert nem indul el ha count = 0 a kezdet.>
> Nálam is megesett, hogy oda kellett írnom, hogy != 0) az ifbe.>
> Lusta voltam meglesni az asm részét, hogy mit is akart csinálni>
> pontosan :) így inkább odaírtam.>
>>
>>
>>
>>
>>
> ----------------------------------------->
> elektro[-flame|-etc]>
>>
> _____________ NOD32 6433 (20110903) Információ _____________>
>>
> Az üzenetet a NOD32 antivirus system megvizsgálta.>
> http://www.nod32.hu>
>>
>>
>>
>
----------------------------------------->
elektro[-flame|-etc]>
More information about the Elektro
mailing list