bascom-optymalizacja

Sep 24, 2004 10 Replies

witam



jak w bascomie zoptymalizować kod ?


w ustawieniach jest cos tam, ale z doswiadczenia wiem ze na 1000 linijek kodu

30kb kodu wynikowego po zaznaczeniu optymalizacji kod wynikowy zmniejszyl sie od 26 bajtow :))

ta optymalizacja co jest w opcjach to jest do d... ja to bym siê sk³ania³ ku przemy¶leniu programu i kilku eksperymentach.

sprawd¼cie sami ró¿nicê w wielko¶ci kodu wynikowego:

if x > 10 and y < 20 and z = 11 then ... end if

oraz

if x > 10 then if y < 20 then if z = 11 then ... end if end if end if

PC

Tak samo jak w ka¿dym innym jêzyku programowania - napisaæ go w odpowiedni sposób tzn. u¿ywaæ odwo³añ do procedur, podprogramów zamiast pisaæ wielkokrotnie procedury np. odczytu pamiêci czy zegara lub obs³ugi urz±dzeñ nale¿y tworzyæ bloki wykonalne do których bêdziemy skakaæ Call, Goto, Gosub, Function. Wykonywaæ podprogramy dla wielu zmiennych w pêtlach For Next najlepiej jeszcze jak zmienne s± tworzone jako tablice zmiennych, a nie oddzielne zmienne. Mo¿na u¿ywaæ jednej zmiennej do przesy³ania wyników pracy programu, podprogramów lub obliczeñ zamiast tworzyæ ich ca³± masê dla ka¿dej danej. Tworzyæ tylko te zmienne, które s± niezbêdne i takiej wielko¶ci jak± potrzebujemy. Rozkazy, które s± zbyt du¿e w kodzie wynikowym Bascoma mo¿na zast±piæ fragmentem Assemblera.

Dnia 2004-09-24 13:39, Użytkownik blue napisał:

Porównać czy użycie innego polecenia pełniącego taką samą(lub bardzo zbliżoną) funkcję. Np. jeśli jest potrzeba umieszczenia kursora na początku wiersza a wyświetlacz jest jednoliniowy to można użyć polecenia Locate lub Home. Zajmują one różną ilość pamięci i czasami odzyskane w ten sposób kilkanaście bajtów przesądzi o konieczności użycia procka z większą ilością pamięci.

On Behalf Of blue

A pod jakim kątem?

- wielkości kodu

- szybkości działania

- minimalizacji zużycia RAM

- niezawodności *)

- łączności lub rozłączności powyższych

pzdr Artur

*) w szczególności dotyczy pętli oczekiwania, ochrony danych które pozornie nie są używane, itd.

głownie chodzi mi o zoptymalizowanie pod kątem wielkości kodu. zrobiłem układ zegar pcf8583 + termometr DS1821(bez miejsc dziesiętnych) na AT90S2313 i jak bym nie brał wychodzi mi w bascom'ie ponad dopuszczalną granicę

Zrób, tak aby funkcje takie jak: 1WREAD, 1WWRITE, 1WRESET, I2C... nie powtarza³y siê, czyli np. poprzez GOTO. Ponadto je¿eli masz jakie¶ czê¶ci programu, które siê powtarzaj± to te¿ zrobiæ GOTO i tylko raz te instrukcje umie¶æ w programie. Kiedy¶ te¿ robi³em co¶ takiego i siê uda³o. Powodzenia. Konrad

On Behalf Of blue

Mieści się w 2kB.

pzdr Artur PS Piszę o :

-odczyt z PCF8583

-odczyt z DS1821

-wyświetlenie wyniku na LCD z kontrolerem HDcoś tam.

możesz podzielić się kodem ?

On Behalf Of blue

Poszło na prv.

Report : RTC_I_DS Date : 09-28-2004 Time : 09:26:15 Compiler : BASCOM-AVR LIBRARY V 1.11.7.4 Processor : 90S2313 SRAM : 80 hex EEPROM : 80 hex ROMSIZE : 800 hex ROMIMAGE : 68A hex -> Will fit into ROM ROMIMAGE : 1674 dec FLASH USED : 81 %

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required