[elektro] C kérdés

uprogc . uprogc at gmail.com
Fri Jan 19 08:58:01 CET 2018


Ez termeszetes.
(STM) DSP kodban mindenfelet okoskodtam, de a mar nem tul rosszul irt
kodbol ugyanolyan jo kodot generalt, amit sokkal tobb munkaval kitalaltam,
sot le is jegyeztem hogy bizonyos esetekben az okoskodas csak ront a
generalt kod minosegen.
Most nem tudnam felidezni fejbol hogy mi is volt, de tudom hogy a
szorzassal es osszeadassal kapcsolatos dolog volt.
Amugy ez Keil volt.

2018-01-19 9:50 GMT+02:00 Bali Zoltán <eltexto at freemail.hu>:

> Már játszottam a "register"  módosítóval,
> tök mindegy, a compiler úgyis a legjobb megoldást
> választja. Ha nem használom, akkor is regiszterben
> van többnyire.
>
> Üdv.  Zoli
>
> ----- Original Message ----- From: "hg12345" <hg12345 at freemail.hu>
> To: <elektro at tesla.hu>
> Sent: Friday, January 19, 2018 8:17 AM
>
> Subject: Re: [elektro] C kérdés
>
>
> Ha már sebességről volt szó....
>>
>> uint32_t mask=0x00000001;
>> uint32:t val=0;
>> while(val|=mask,mask<<=1,i--);
>>
>> ami lehet célszerű "register" definiálni.
>>
>> Amúgy még ennél is gyorsabb megoldás van az M3-tól, ha bit-banding
>> területre definiálod a változókat, és bit struktaraként határozod meg,
>> ilyenkor automatikusan generálja a bit-es területet
>> a.bit0=b .bit31, sajnos a bit srukturára index-vel nem lehet hivatkozni.
>>
>> Amennyiben indexelni szeretnéd akkor a változó cimét meghatározva, a bit
>> banding területen keresztül egy pointerrel C-ben asm betét nélkül bitenkét
>> hivatkozhatsz rá
>>
>>
>>
>>
>> -------- Eredeti levél --------
>> Feladó: Bali Zoltán < eltexto at freemail.hu (Link -> mailto:
>> eltexto at freemail.hu) >
>> Dátum: 2018 január 19 07:38:02
>> Tárgy: Re: [elektro] C kérdés
>> Címzett: elektro at tesla.hu (Link -> mailto:elektro at tesla.hu)
>>
>> Nahát, ez igazán hatékonynak tűnik. Megint tanultam valamit tőletek
>> Köszönöm!
>> Üdv. Zoli
>> ----- Original Message -----
>> From: "Kiss Gabor" <kissg at ssg.ki.iif.hu>
>> Newsgroups: hun.lists.elektro
>> To: <elektro at tesla.hu>
>> Sent: Thursday, January 18, 2018 8:52 PM
>> Subject: Re: [elektro] C kérdés
>> On 01/18/2018 08:49 PM, Kiss Gabor wrote:
>>
>>> On 01/18/2018 06:20 PM, Bali Zoltan wrote:
>>>
>>> void FillLedBar(uint32_t how_many,uint32_t direction)
>>>> {<!-- -->
>>>> uint32_t i,val;
>>>>
>>>> for(i=0;i<how_many;i++) {<!-- -->
>>>> val |= 1<<i;
>>>> }
>>>>
>>>
>>> Bocs, hogy beleszólok! A for ciklus helyett ezt írnám:
>>>
>>> val |= (1<<how_many)-1;
>>>
>>> Ha nincs szorzóutasítás a processzorban, ez is ciklusra fordul,
>>> de picit gyorsabb lesz, mert egyszerűbb a ciklus törzse.
>>>
>> Izé! Most látom csak, hogy nálad a val nem kapott kezdőérteket.
>> Ez amúgy is hiba volt. :-)
>> Szó val=(1<<how_many)-1;
>> kissg
>> -----------------------------------------
>> elektro[-flame|-etc]
>> -----------------------------------------
>> elektro[-flame|-etc]
>> -----------------------------------------
>>          elektro[-flame|-etc]
>>
>
> -----------------------------------------
>          elektro[-flame|-etc]


More information about the Elektro mailing list