mezi zidli a klavesnici

Miroslav Šinko sinkomiro na gmail.com
Úterý Únor 28 11:30:34 CET 2012


Alebo pouzit poiner

pPole = Pole; //zrozumitelnejsie pPole = &Pole[0];

for i=0 to 5
{
Soucet += *pPole;
pPole++;
}

Zobrat hodnotu z adresy, kam ukazuje pointer je v asm jedna, prip.
viac  instrukcii, podla bitovej sirky premennej. Inkrementacia
pointera je jedna instrukcia add.

Ak je kompilator blby, da sa mu pomoct aj pri premennej cyklu zapisom:
for(i=5; i; i--) //zrozumitelnejsie for(i = 5; i != 0; i--)

Assmblery zvycajne obsahuju instrukciu typu DJNZ (porovnanie na nulu a
skok v jednej instrukcii).

miro


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


Další informace o konferenci Hw-list