Optimalizace kodu

Michal HW michalgregor@centrum.cz
Čtvrtek Leden 4 09:14:56 CET 2007


No s temi pointry to neni zadna vyhra.
PIC ma FSR registry pro pristup do vnitrni pameti
a TPLTR pro externi.
Takze:
pe=data_externi;
pi=data_interni;
for (i=64;i;i--){
     *pe=*pi;
     pe++;
     pi++;
}
pe - tri byte
pi - dva byte

Vysledek - telo cyklu
1) TPLPTR=pe
2) FSRx=pi
3) ++pe
4) ++pi
5) *TPLPTR=*FSR

Je to docela dlouhy kod, kdezto kopirovani structury tvori tri instrukce.
Michal Gregor

----- Original Message ----- 
From: "Milan" <milger@pobox.sk>
To: "HW-news" <hw-list@list.hw.cz>
Sent: Wednesday, January 03, 2007 7:25 PM
Subject: Re: Optimalizace kodu


Praca s poliami je prehladna ale nie je optimalna. Kompilatory pocitaju 
pointre /ukazatele/, dan za univerzalnost.
Skus najskor naplnit vlasne pointere, v cykle ich dekrementovat /resp. 
inkrementovat/ a cez tieto pointere pristupovat k datam.
Urcite to bude optimalnejsie.

To je obecne pravidlo, neviem nic o HT-Soft + 18F8722


Milan
----- Original Message ----- 
From: "Michal HW" <michalgregor@centrum.cz>
To: "HW-News" <hw-list@list.hw.cz>
Sent: Wednesday, January 03, 2007 3:31 PM
Subject: Optimalizace kodu


Pracuji na vetsim SW v C - HT-Soft + 18F8722.

Pokud presunuji structury z vnitrni RAM do externi, kompilator z toho udela
par radku kodu:

Structura_Externi=Structura_Vnitrni;


Ale pokud totez udelam s polem rucne:

for (Pocet_B=63;Pocet_B!=255;--Pocet_B) {
    Data_Externi[Pocet_B]=Data_Vnitrni[Pocet_B];
}
vznikne monstrozni kod. Pokazde se pocita HW ukazatel(TBLPTR) pro externi a
vnitrni pamet.

Lze to optimalizovat v C kodu bez nutnosti zmeny datovych structur?
Nebo mam zmenit pole na structury?
Jak to optimalizuji jine kompilatory?
Michal Gregor


_______________________________________________
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




Další informace o konferenci Hw-list