-
Data: 2009-06-12 09:05:51
Temat: Re: Problem lekko OT, ale w WinAVR ;-)
Od: Grzegorz Kurczyk <g...@c...slupsk.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Użytkownik Zbych napisał:
> T.M.F. pisze:
>
>> No zagladam dosyc czesto przy okazji debuggowania tego co napisalem.
>> Jakis koszmarnych brakow optymalizacji nie zauwazylem. Mozesz podac
>> konkretny przyklad w C, ktory jest zle optymalizowany? To zawsze mozna
>> zglosic jako bug.
>
> To zależy co kto uważa za koszmarne. Poniżej parę przykładów, ale
> wątpię, żeby komuś chciało się to czytać.
>
> Wszystkie przykłady były optymalizowane na rozmiar.
>
>
> ----------------------------------------------------
-----
> Testowanie warunków logicznych:
>
> #define PIN1_IS_LOW (!(PINB & (1<<PINB7)))
> #define PIN2_IS_LOW (!(PINB & (1<<PINB6)))
>
> volatile uint8_t a;
> asm volatile(";start");
> a = (PIN1_IS_LOW || PIN2_IS_LOW);
> asm volatile(";stop");
>
Ooooo to, to :-) W programach unikam operacji logicznych na bitach
portów, bo wychodzą koszmarki. Czasem zamiast:
if((PINB & (1<<7)) && (PINC & (1<<3))) {...}
lepiej napisać
if(PINB & (1<<7))
if(PINC & (1<<3))
{...}
Z jakiś troszkę wcześniejszych wersji pamiętam, że samo wstawienie
operatora ! na bicie portu automatycznie generowało koszmarek z rozkazem
in i wyliczaniem stanu bitu na piechotę.
if(PINB & (1<<7)) {...} wyglądało poprawnie z użyciem sbic/sbis,
ale już:
if(!(PINB & (1<<7))) {...} generowało wspomniany przez Kolegę koszmarek
i w zastępstwie używałem:
if(PINB & (1<<7)) else {...} i juz było cacy na sbic/sbis
Co do adresowania tablic w pamięci FLASH w pętli to już od dawna stosuję
wyłącznie inkrementację wskaźnika, bo te każdorazowe wyliczanie adresu
też mnie biło w oczy :-)
P.S. Używam trochę starawej wersji 20070525, bo sprawia mi najmniej
problemów. Późniejsze wersje 2008xxxx sprawiły mi zbyt dużo psikusów i
trochę się zraziłem. Choć może warto wypróbować jakąś świeżynkę :-)
Pozdrawiam
Grzegorz
Następne wpisy z tego wątku
- 12.06.09 15:42 T.M.F.
- 12.06.09 15:47 T.M.F.
- 12.06.09 10:29 Zbych
- 12.06.09 17:14 T.M.F.
- 12.06.09 11:27 Zbych
- 12.06.09 16:46 J.F.
- 12.06.09 20:15 Grzegorz Kurczyk
- 12.06.09 20:30 J.F.
- 12.06.09 20:30 Zbych
- 13.06.09 01:35 Grzegorz Kurczyk
- 13.06.09 06:43 Grzegorz Kurczyk
- 13.06.09 07:28 Zbych
- 13.06.09 07:44 J.F.
- 13.06.09 14:35 T.M.F.
- 13.06.09 14:36 T.M.F.
Najnowsze wątki z tej grupy
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
Najnowsze wątki
- 2024-11-21 Re: Dla mr. J.F`a, Trybuna i Wiesiaczka którzy "troszczą" się o państwowe i u których 0 pragmatyzmu
- 2024-11-21 Re: Dla mr. J.F`a, Trybuna i Wiesiaczka którzy "troszczą" się o państwowe i u których 0 pragmatyzmu
- 2024-11-21 Re: Dla mr. J.F`a, Trybuna i Wiesiaczka którzy "troszczą" się o państwowe i u których 0 pragmatyzmu
- 2024-11-20 "betamaxy" i inne voip-y dzisiaj
- 2024-11-21 Strach się bać
- 2024-11-21 Koniec smrodów
- 2024-11-20 Krematorium
- 2024-11-20 Taki tam szkolny problem...
- 2024-11-20 LIR2032 a ML2032
- 2024-11-20 SmartWatch Multimetr bezprzewodowy
- 2024-11-21 Środa Wielkopolska => Konsultant SAP <=
- 2024-11-21 Łódź => Spedytor Międzynarodowy <=
- 2024-11-21 Wrocław => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-21 Kraków => Lead Java EE Developer <=
- 2024-11-21 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=