-
Data: 2009-06-12 17:14:53
Temat: Re: Problem lekko OT, ale w WinAVR ;-)
Od: "T.M.F." <t...@n...mp.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]>>> Pomijając już tą nieszczęsną promocję do inta, to najbardziej w tym
>>> kodzie rozwaliło mnie wyłuskiwanie 6 bitu.
>>
>> Promocja do int wynika ze standardu C wiec trudno tu robić zarzut
>> kompilatorowi. Żeby to ominąć wystarczy explicite typecastowac.
>
> Wyraźnie napisałem, że nie promocja jest tu największym problemem.
> Zresztą rzutowanie i tak tego nie poprawia.
U mnie poprawia - najnowszy WinAVR.
>>> Łatwo policzyć, że poniżej 8 parametrów bardziej opłaca się wersja z
>>> rcall (program optymalizowany na rozmiar).
>>
>> Tu sprawa nie jest tak oczywista. Co prawda rcall są krótsze w sensie
>> długości kodu, ale zajmuja 3 takty zegara.
>
> Specjalnie napisałem, że optymalizacja była ustawiona na rozmiar, więc
> rcall powinno mieć pierwszeństwo.
Tak, tylko developerzy sa skupieni na Os - tak to bywa, kiedy zasoby sa
ograniczone.
>> To zalezy zapewne od zdefiniowanej przez ciebie funkcji tab_size(tab).
>> Kompilator za każdym obiegiem petli musi ja wywołać, żeby wilczyć
>> wynik dla danego argumentu - dlaczego? Bo ja źle zdefiniowałeś.
>
> Zapomniałem wstawić. Oto kod:
>
> #define tab_size(__a) (sizeof(__a)/sizeof(__a[0]))
>
> Jeśli według ciebie jest źle zdefiniowana, to czekam na poprawki.
To powinno w efekcie dac stala. Kiedy zastapilem wywolanie tab_size
stala problem zniknal. Wiec byc moze uzywasz starej wersji?
>> Sprawdziłem to u siebie i nic takiego się nie dzieje. Musiałem
>> zdefiniować dodatkowo dziwna funkcje Babla bo mi kompilator to
>> optymalizował i ją wywalał.
>
> Ja na potrzeby przykładu w ogóle jej nie zdefiniowałem (nie jest to
> potrzebne, disasemblację zrobiłem po kompilacji, bez linkowania).
To wtedy petla sie totalnie zoptymalizowala i wywalilo mi te wywolania w
ogole.
>>> A podobno gcc ma super optymalizator do pętli (widocznie moja wersja
>>> gdzieś go zgubiła).
>>
>> Jak ci nie pasuje gcc to zaproponuj cos lepszego...
>
> Chciałeś przykłady, to ci je pokazałem. Nie jest w tym przypadku istotne
> czy inne kompilatory zrobiłyby to lepiej (a myślę, że IAR byłby lepszy).
IAR zwykle jest lepszy bo jest dostosowany do tej platformy, niestety
uniwersalnosc gcc jest tu jego wada. Z drugiej strony wada ta jest
kompensowana problemami na ktore sie natkniesz probujac przeniesc kod z
IAR na inna platforme.
>> Jak ci nie pasuje gcc to zaproponuj cos lepszego... nie mowiac juz o
>> tym, ze masz kod źródłowy wiec możesz się wykazać dla potomności :)
>
> Dzięki, już kiedyś próbowałem (na innym porcie gcc). To nie jest robota
> na 1 dzień, a ja mam swoją pracę.
Owszem. Ale wystarczy nieco wiedzy jak kompilator generuje kod i
wszystkie pokazane problemy znikaja. Sa co prawda inne, ktorych tak
prosto wyeliminowac sie nie da, ale skoro ich nie pokazales, to pewnie
nie sa dla ciebie tak klopotliwe :)
--
Inteligentny dom - http://idom.wizzard.one.pl
http://idom.sourceforge.net/
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz do projektu.
Następne wpisy z tego wątku
- 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.
- 13.06.09 14:37 T.M.F.
- 13.06.09 10:10 Grzegorz Kurczyk
- 13.06.09 10:10 Zbych
- 13.06.09 10:18 Zbych
Najnowsze wątki z tej grupy
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
Najnowsze wątki
- 2025-01-27 OT musk
- 2025-01-27 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-01-27 Warszawa => Java Developer <=
- 2025-01-27 Warszawa => Data Engineer (Tech Lead) <=
- 2025-01-27 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-27 Kto ma PRAWNĄ rację? poseł KO mec. R. Giertych v. mec. B. Lewandowski
- 2025-01-27 Gliwice => IT Expert (Network Systems area) <=
- 2025-01-27 Koszyk okrągły, walec 3x AA, na duże paluszki R6
- 2025-01-27 Warszawa => QA Engineer <=
- 2025-01-27 Warszawa => Analityk Biznesowo-Systemowy <=
- 2025-01-27 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-27 Bieruń => Team Lead / Tribe Lead FrontEnd <=
- 2025-01-27 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-27 Kraków => User Experience Designer <=
- 2025-01-27 Kraków => iOS Developer (Swift experience) <=