přístup na byty v int C

Radek Benedikt benedikt na lphard.cz
Čtvrtek Říjen 31 00:19:00 CET 2013


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




Další informace o konferenci Hw-list