Re: Re: přístup na byty v int C

Jaromir Sukuba jarin.hw na gmail.com
Čtvrtek Říjen 31 07:55:36 CET 2013


Moja poznamka smerovala k tomu, ze W register sa pri instrukcii ADDWFC
s cielom v registri (inom ako W) nemeni, takze instrukcie na adrese
0xFFF2 a 0xFFF6 su zbytocne - netreba nulovat nulovy W register.
Inteligentnejsi optimalizator by to mohol zbadat. Mozno v platenej
verzii.

Dňa 31. októbra 2013 0:19, Radek Benedikt <benedikt na lphard.cz> napísal/a:
>> unsigned long i;
>> ...
>> i++;
>>
>> 0xFFEA: MOVLW 0x1
>> 0xFFEC: ADDWF i, F, ACCESS
>> 0xFFEE: MOVLW 0x0
>> 0xFFF0: ADDWFC 0x8, F, ACCESS
>> 0xFFF2: MOVLW 0x0
>> 0xFFF4: ADDWFC 0x9, F, ACCESS
>> 0xFFF6: MOVLW 0x0
>> 0xFFF8: ADDWFC 0xA, F, ACCESS
>>
>> Cize celkom pochopitelny kus "assembleru". Nulovanie W po kazdej
>> inkrementacii je predpokladam dan za free verziu kompilatora - pouziva
>> sa vseobecne pripocitanie 32-bitovej konstanty k premennej, bez ohladu
>> na to, ze jedno z nich je skratka jednotka.
>
> Drobne upresneni naokraj:
> Ta jednotka je taky 32bitova, ono to neni zas tak nebezne, pricitat 0 +
> carry k casti promenne. Pravda, sice je obcas videt preskoc nasledujici
> instrukci(e), kdyz neni prenos a tou nasledujici instrukci je inkrement
> casti promenne. Opravuji se, dost (vetsina ?) procesoru nenastavuje pri
> inkrementu prenos a protoze se pricita jednicka k vicebitove promenne,
> tak je mozne testovat byte na nulu. Takze preskoc nasledujici
> instrukci(e) neni-li nula. A to celkem trikrat, takze to nebude kratsi
> nez priklad nahore. A tusim ze to nebude na PICu ani rychlejsi. To by
> musel mit podmineny skok, ne jen preskok.
>
> Radek (benedikt2hw.cz)
>
>
> _______________________________________________
> 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