WINAVR - prekvapiva optimalizace

Ondrej leguanolog@seznam.cz
Pátek Prosinec 12 13:19:06 CET 2008


No tak zkuste dát jiný typ optimalizace (třeba s nebo 0) a co to provede 
potom.

OH

Jaroslav Buchta napsal(a):
> No, ja uz se naucil I 3. pravidlo, ze zadny prekladac neni dokonaly a obcas
> neco prelozi I uplne blbe :-) Zvlast tem pro MCU neverim dokud preklad
> nevidim.
> A kratsi jsem myslel na pocet instrukci, tady neni rychlost dulezita. Ale I
> na rychlost by to IMHO vyslo podstatne lepe s pouzitim promenne typu BYTE
> pro pocitani iteraci cyklu. Adresa by se jen pricitala, nemusela by se
> porovnavat v 16b forme a pripravovat koncova adresa dalsimi x instrukcemi.
> Takze v tomto pripade optimalizaci nepovazuji za zdarilou.
>
> -----Original Message-----
> From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On
> Behalf Of Marek Sembol
> Sent: Friday, December 12, 2008 10:58 AM
> To: HW-news
> Subject: Re: WINAVR - prekvapiva optimalizace
>
>
> Čo si také predstavítě pod pojmom "kratsí", Kefalín?
> Kratsi == mene bytu nebo kratsi == rychlejsi vykonani (kratsi cas)?
>
> Prvni co by se mel clovek u C naucit je to, ze s dnesni urovni prekladacu a
> optimalizace je naprosto zbytecne naznacovat 'jak ma neco prelozit' To co
> prekladac provedl je mimochodem ucebnicova ukazka optimalizace cyklu.
> Prekladac si sam rozhodne zda nejakou promennou vynecha (ci si pripadne
> prida vlastni pomocnou)
>
> Navic kdyz uz chcete prekladaci naznacovat, naznacujte lepe:
>    for (idx=DsTSensCount; idx != 0; idx--)
>    {
>     pd++->status = TSENS_ERR_HW;
>    }
>
> S pozdravem
> Marek
> PS: hned druhe co by se clovek mel naucit, ze se s optimalizaci ne vzdy
> rozhodne spravne:)
>
>
> On Fri, Dec 12, 2008 at 10:41 AM, Jaroslav Buchta
> <jaroslav.buchta@gmail.com> wrote:
>   
>> Zdravim,
>> ted me dostala optimalizace casti kodu, kterou jsem necekal...
>>
>>    BYTE idx;
>>    PDS18X20_DESC pd = &DsTSensDesc[0];
>>    for (idx=0; idx<DsTSensCount; idx++)
>>    {
>>     pd++->status = TSENS_ERR_HW;
>>    }
>> je prelozeno takto:
>>
>>    BYTE idx;
>>    PDS18X20_DESC pd = &DsTSensDesc[0];
>>    for (idx=0; idx<DsTSensCount; idx++)
>>  bee: 90 91 78 02  lds r25, 0x0278
>>  bf2: e0 e0        ldi r30, 0x00 ; 0
>>  bf4: f2 e0        ldi r31, 0x02 ; 2
>>  bf6: 8c e0        ldi r24, 0x0C ; 12
>>  bf8: 98 9f        mul r25, r24
>>  bfa: c0 01        movw r24, r0
>>  bfc: 11 24        eor r1, r1
>>  bfe: 8e 0f        add r24, r30
>>  c00: 9f 1f        adc r25, r31
>>    {
>>     pd++->status = TSENS_ERR_HW;
>>  c02: 21 e0        ldi r18, 0x01 ; 1
>>  c04: 02 c0        rjmp .+4       ; 0xc0a <TSens_SrvFunc+0x46>
>>  c06: 23 87        std Z+11, r18 ; 0x0b
>>  c08: 3c 96        adiw r30, 0x0c ; 12
>>   wStartTicks = GetTicks1ms();
>>   if (bRes != DS18X20_OK)
>>   {
>>    BYTE idx;
>>    PDS18X20_DESC pd = &DsTSensDesc[0];
>>    for (idx=0; idx<DsTSensCount; idx++)
>>  c0a: e8 17        cp r30, r24
>>  c0c: f9 07        cpc r31, r25
>>  c0e: d9 f7        brne .-10      ; 0xc06 <TSens_SrvFunc+0x42>
>>  c10: 30 c0        rjmp .+96      ; 0xc72 <TSens_SrvFunc+0xae>
>>
>> (prolozeni textu je trosku ujete, pointa je v tom, ze se prekladac 
>> uplne vyhne pouziti promenne idx a ukonceni cyklu provede na zaklade 
>> porovnani ukazatele na strukturu s max. hodnotou (pocet polozek je na 
>> adrese 0x278) Je to evidentne funkcni a logicke, rekl bych ale, ze s 
>> pouzitim idx by kod vysel kratsi, coz byl muj zamer...) 
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz Hw-list@list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>>     
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>   

-- 
Jabber: Iguaner@jabber.cz
ICQ: 122712466

---------------------------------------------------
|                                                 |
|       IKORAS - My home-made MP3 player          |
|       http://ikoras.iglu.cz                     |
|                                                 |
--------------------------------------------------- 




Další informace o konferenci Hw-list