mezi zidli a klavesnici

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Úterý Únor 28 17:02:05 CET 2012


Ted jak na to koukam, tak me prekvapilo, ze prekladac pochopil praci s 
neinicializovanou promennou a prvni soucet rovnou nahradi prirazenim, 
coz by se takhle psat samo nemelo, protoze 9 z 10 prekladacu to prelozi 
asi normalne a nebude to fungovat...

Dne 28.2.2012 16:57, Jaroslav Buchta napsal(a):
> Produkt AVRGCC pro XMEGA
>
>     for (i=0; i<5; i++) Sum += Pole[i];
>  24e:    29 81           ldd    r18, Y+1    ; 0x01
>  250:    3a 81           ldd    r19, Y+2    ; 0x02
>  252:    8b 81           ldd    r24, Y+3    ; 0x03
>  254:    9c 81           ldd    r25, Y+4    ; 0x04
>  256:    28 0f           add    r18, r24
>  258:    39 1f           adc    r19, r25
>  25a:    8d 81           ldd    r24, Y+5    ; 0x05
>  25c:    9e 81           ldd    r25, Y+6    ; 0x06
>  25e:    28 0f           add    r18, r24
>  260:    39 1f           adc    r19, r25
>  262:    8f 81           ldd    r24, Y+7    ; 0x07
>  264:    98 85           ldd    r25, Y+8    ; 0x08
>  266:    28 0f           add    r18, r24
>  268:    39 1f           adc    r19, r25
>  26a:    89 85           ldd    r24, Y+9    ; 0x09
>  26c:    9a 85           ldd    r25, Y+10    ; 0x0a
>  26e:    28 0f           add    r18, r24
>  270:    39 1f           adc    r19, r25
>  ;-)
>
> Zdrojak:
> int main(void)
> {
>     char i;
>     int Sum;
>     volatile int Pole[5] = {1,2,3,4,5};
>     for (i=0; i<5; i++) Sum += Pole[i];
>     return Sum;
> }
>
> to volatile a return je tam kvuli tomu, ze jinak to zoptimalizuje 
> totalne (zadny soucet se neprovede, protoze neni vysledek potreba nebo 
> secte konstanty)...
> Volba optimalizace na Os
>
> Dne 28.2.2012 11:26, Andrej Jancura napsal(a):
>> 2012/2/28 Michal Gregor<a2x1nptda8 na email.cz>:
>>>> for i=0 to 5
>>>> Soucet += Pole[i]
>>>> Toto znamena, nastav i, vypocitaj adresu prvku, indexovo zober
>>>> hodnotu, pricitaj k vysledku, inkrementuj i, porovnaj i na koniec...
>>>
>>> Toto znamena secti pole a moderni prekladac by to MOHL poznat a
>>> optimalizovat.  Tedy v pripade ze pole neni dynamicke a je ulozeno 
>>> na fixni
>>> adrese.
>>> (Pro dynamicke pole je to nesmysl)
>> Mozem sa spytat, vy taky moderny prekladac poznate? Lebo ja nie... A
>> uz vonkoncom nie taky aby bol navyse zadarmo. Mohol by to vediet robit
>> PicC PRO ten s tymi optimalizaciami, ale uz vidim velku vacsinu, ako
>> plati 1400$ za komplikator...
>>
>> A.
>>
>>
>>> Michal Gregor
>>>
>>> ----- Original Message ----- From: "Andrej 
>>> Jancura"<aj.hwlist na gmail.com>
>>> To: "HW-news"<hw-list na list.hw.cz>
>>> Sent: Tuesday, February 28, 2012 11:07 AM
>>>
>>> Subject: Re: mezi zidli a klavesnici
>>>
>>>
>>> Myslim, ze ste nepochopili, co sa deje v asembleri...
>>>
>>> 2012/2/28 Michal Gregor<a2x1nptda8 na email.cz>:
>>>> Prekladace neumi pracovat poradne s pointery ve smycce. Takze v C 
>>>> staci se
>>>> vybodnout na cykly a hned to bezi rychleji. Treba toto:
>>>> for i=0 to 5
>>>> Soucet += Pole[i]
>>>
>>> Toto znamena, nastav i, vypocitaj adresu prvku, indexovo zober
>>> hodnotu, pricitaj k vysledku, inkrementuj i, porovnaj i na koniec...
>>>
>>>> Je lepsi zapsat
>>>> Soucet += Pole[0]
>>>
>>> Toto naproti tomu znamena pricitaj k vysledku hodnotu na pevnej adrese
>>> prvku pola, co je podla mna jedna trivialna asm instrukcia...
>>>
>>>> Soucet += Pole[1]
>>>> Soucet += Pole[2]
>>>> Soucet += Pole[3]
>>>> Soucet += Pole[4]
>>>> Soucet += Pole[5]
>>>>
>>>> Vypada do dlouze, ale po prelozeni je to obvykle kratsi a 
>>>> nekolikanasobne
>>>> rychlejsi
>>>>
>>> A uz viete aj preco to tak je...
>>>
>>> A.
>>>
>>>> Michal Gregor
>>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list