[elektro] C kérdés

uprogc . uprogc at gmail.com
Fri Jan 19 08:23:20 CET 2018


+1

2018-01-19 9:17 GMT+02:00 hg12345 <hg12345 at freemail.hu>:

>  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]


More information about the Elektro mailing list