-
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
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
- wzmacniacz mocy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
Najnowsze wątki
- 2025-06-22 Co będzie po kol. wyborach prezydenckich w SZAP/USONA? Postawią obecnego prezydenta przed trybunałem stanu
- 2025-06-22 Co będzie po kol. wyborach prezydenckich w SZAP/USONA? Postawią obecnego prezydenta przed trybunałem stanu
- 2025-06-22 Re: Czy Bodnar to prawny Makiawel? [Prawo "w likwidacji"]
- 2025-06-21 Sąd Najwyższy ukarał "karą porządkową" 3_000 PLN za protest wyborczy z "wulgaryzmami osobowymi"
- 2025-06-21 Gdzie kupowac aku?
- 2025-06-21 Listwa przypodłogowa pod kominek
- 2025-06-21 Czy warto miec wy....anego na sucho premiera?
- 2025-06-21 Warszawa => Analityk IT (projekty z obszaru telco) <=
- 2025-06-21 Warszawa => Operations Support Systems (OSS) Team Leader <=
- 2025-06-21 Warszawa => Scrum Master <=
- 2025-06-21 Warszawa => Senior Account Manager <=
- 2025-06-20 5w30 zamiast 0w30
- 2025-06-19 Klima i samodzielne uzupełnienie
- 2025-06-20 Upgrade z i7-6xxx
- 2025-06-19 Czy ołowiane perowsiki, drukowane na folii to był fake ?