-
Data: 2009-06-12 00:53:28
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 ]>>>> void Rysuj(tRect&t);
>>>> Inaczej kompilator musi utworzyc kopie obiektu tRect i ta kopie dopiero
>>>> przekazac do funkcji.
>>> W C++ moze to byc faktycznie kosztowne.
>> W C tez powinno byc kosztowne. Bo skad kompilator ma wiedziec, ze Rysuj
>> nie modyfikuje struktury tRect?
>
> Nie musi wiedziec. Ma wrzucic cala na stos, co powinno pojsc dosc
> szybko.
Tak sie nie da. Jesli tRect jest gdzies dalej wykorzystywany to
kompilator musi utworzyc jego kopie, zeby zagwarantowac, ze Rysuj jej
nie zmodyfikuje - to wynika ze standardu. Oczywiscie optymalizator moze
zauwazyc, ze nasze tRect jest dalej niewykorzystywane i z tego etapu
zrezygnowac - no ale to juz zaklada, ze optymalizator jest dosc
sensowny. W tym przypadku zapewne sobie poradzi. Jesli przekazesz adres
struktury bedzie to zawsze dzialac jak nalezy.
>>> W pozostalych sytuacjach trzeba by spojrzec w kod wynikowy co lepiej
>>> kompilatorowi wyszlo.
>>> A wracajac do meritum .. wychodzi na to ze najlepiej byloby odwrocic
>>> sprawe - zrobic funcje z 4 parametrami, a nad nia ewentualnie
>>> nadbudowac wersje ze struktura.
>>> I nie korzystac z niej bez potrzeby :-)
>> Niekoniecznie. 4 parametry to w idealnym przypadku 4 8-bitowe rejestry.
>> Zazwyczaj wiaze sie to z ich wczesniejszym odlozeniem na stosie i potem
>> ponownym pobraniem. Przy przekazaniu przez wskazanie mamy tylko dwa
>> 8-bitowe rejestry wskazujace na strukture, co wiaze sie zmniejszym
>> nakladem na przekazanie parametrow. W procedurze czesto jest to
>> optymalizowane jako LD Rx,Z+y, lub podobne.
>
> Sa to pewne zalozenia i wymagaja odpowiedniego procka.
> W wielu moze wyjsc odwrotnie.
Ale mowimy konkretnie o AVR i AVR-gcc.
--
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 00:56 T.M.F.
- 12.06.09 00:58 T.M.F.
- 11.06.09 19:01 Zbych
- 11.06.09 19:02 Zbych
- 11.06.09 20:16 Adam Dybkowski
- 12.06.09 03:35 T.M.F.
- 12.06.09 03:37 T.M.F.
- 12.06.09 07:54 Zbych
- 12.06.09 08:14 Zbych
- 12.06.09 09:05 Grzegorz Kurczyk
- 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
Najnowsze wątki z tej grupy
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
- Puszka w ziemię
- T-1000 was here
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
Najnowsze wątki
- 2025-02-17 EPS12V
- 2025-02-18 Kraków => Spedytor Międzynarodowy <=
- 2025-02-18 Policja nie może się dowiedzieć komu administrator wynajmowal garaż.
- 2025-02-18 Bursztyn się znalazł
- 2025-02-18 Ruski samolot z turystami nielegalnie internowany po awaryjnym lądowaniu w Poznaniu. Czemu o tym nic nie piszecie pieniacze?!?
- 2025-02-18 Obcokrajowcy w bankach
- 2025-02-17 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-02-17 Chrzanów => Programista NodeJS <=
- 2025-02-17 Warszawa => Node.js / Fullstack Developer <=
- 2025-02-17 Białystok => System Architect (Java background) <=
- 2025-02-17 Białystok => Solution Architect (Java background) <=
- 2025-02-17 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2025-02-17 Gdańsk => PHP Developer <=
- 2025-02-17 Warszawa => Senior ASP.NET Developer <=
- 2025-02-17 Gliwice => Business Development Manager - Network and Network Security