-
Data: 2009-06-12 00:56: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 ]W dniu 11.06.2009 10:16, Grzegorz Kurczyk pisze:
> Dziękuję wszystkim za odzew :-)
>
> Metody opisywane przez Kolegów męczyłem już wcześniej (poza przesiadką
> na C++), ale nie przynoszą one spodziewanego rezultatu. Może sprecyzuję
> o co mi chodzi. Sprawa jest czysto "akademicka" i wynika z mojego
> pewnego rodzaju "zboczenia" w dążeniu do absurdalnej optymalizacji kodu
> wynikowego ;-)
> Jest tak. Funkcja zdefiniowana tradycyjnie:
>
> void ProgressBar(char x, char y, char w, char h, char value) {
> ....
> }
>
> przy wywołaniu:
> ProgressBar(0, 90, 128, 5, y);
>
> otrzymujemy w kodzie wynikowym:
> 37e2: 0b 2d mov r16, r11
> 37e4: 25 e0 ldi r18, 0x05 ; 5
> 37e6: 40 e8 ldi r20, 0x80 ; 128
> 37e8: 6a e5 ldi r22, 0x5A ; 90
> 37ea: 80 e0 ldi r24, 0x00 ; 0
> 37ec: 0e 94 b4 17 call 0x2f68 ; 0x2f68 <ProgressBar>
>
>
> I to co mnie "wkurza", to czemu łachudra przekazuje parametry w
> rejestrach r16, r18, r20, r22, r24 niejako promując typ char do int ?
> Jakby nie mógł po kolei r16..r20.
Jakiej wersji gcc uzywasz? Ja tu nigdzie nie widze promocji do int bo
starsze czesci tych rejestrow nie zawieraja zera.
> Oczywiście w tym przypadku nie ma to większego znaczenia, ale przy
> większej ilości parametrów przekazywanych do funkcji i/lub większej
> ilości zmiennych lokalnych funkcji, zaczyna się kombinacja ze stosem lub
> z dolnymi rejestrami. Kompilator w pewnym sensie "szatkuje" sobie obszar
> rejestrów doprowadzając do sytuacji, że w pewnym momencie brakuje np
> czterech kolejnych rejestrów do zapamiętania lokalnej zmiennej typu long
> choć pojedynczych wolnych rejestrów jest wystarczająca ilość.
Sprawdz jak to sie zachowa przy wiekszej ilosci parametrow. Zapewne
kompilator bedzie oszczedniej gospodarowal rejestrami. Zauwaz, ze w
twoim przykladzie nie ma takiej potrzeby, a wygenerowany kod jest tak
samo efektywny.
--
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: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
- 12.06.09 16:46 J.F.
Najnowsze wątki z tej grupy
- William Shockley, co-inventor of the transistor
- Gazowy kocioł CO regulacja cyklingu i regulacja pogodowa
- Zamek elektroniczny
- szablon do pasty DIY
- Głośnik potrzebny
- Silikonowy przewód ekranowany
- Wtyk bananowy ekranowany
- Co może być gorsze od pożaru elektryka?
- daltonizm
- Mały Linux
- Superkondensator. Czy to się uda?
- Stare filmy o technice
- Zasilanie własnych konstrukcji przez PoE
- Jak działa domofon?
- Co oni mierzą miernikiem
Najnowsze wątki
- 2025-11-02 totalna kontrola podatników?
- 2025-11-02 Trzymacie pieniądze w bankach?
- 2025-11-02 Bo sędzia prokuratorowi nie odmawia "niezawiśle" [rzepa: wnioski o areszt]
- 2025-11-02 Michał Wawrykiewicz: "Prokuratura barszczyka bierze pod uwagę również INTENCJE uchwalaczy prawa
- 2025-11-02 Nieszczelność serwisu SuperGrosz
- 2025-11-01 Komitet kolejkowy :-)
- 2025-11-01 Warszawa => System Administrator <=
- 2025-11-01 China => Production Coordinator / Representant Product Dev <=
- 2025-11-01 Warszawa => Senior Algorithm Developer (Java/Kotlin) <=
- 2025-11-01 Prokuratura Barszczyka rozpatruje czy prawo uchwalone przez pisowców jest dobre czy złe
- 2025-11-01 Lublin => Delphi Programmer <=
- 2025-11-01 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-11-01 William Shockley, co-inventor of the transistor
- 2025-10-31 Gazowy kocioł CO regulacja cyklingu i regulacja pogodowa
- 2025-10-31 Warszawa => Starszy Konsultant SAP - obszar PP <=




Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei