-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!new
sfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
From: "T.M.F." <t...@n...mp.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Problem lekko OT, ale w WinAVR ;-)
Date: Thu, 11 Jun 2009 20:56:53 -0400
Organization: TP - http://www.tp.pl/
Lines: 51
Message-ID: <h0rkjn$1ol$1@nemesis.news.neostrada.pl>
References: <h0qku7$a6o$1@atlantis.news.neostrada.pl>
<h0r3ok$c87$1@atlantis.news.neostrada.pl>
NNTP-Posting-Host: dvi241.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: nemesis.news.neostrada.pl 1244747191 1813 83.22.42.241 (11 Jun 2009 19:06:31
GMT)
X-Complaints-To: u...@n...neostrada.pl
NNTP-Posting-Date: Thu, 11 Jun 2009 19:06:31 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090513
Fedora/3.0-2.3.beta2.fc11 Thunderbird/3.0b2
In-Reply-To: <h0r3ok$c87$1@atlantis.news.neostrada.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:565210
[ ukryj 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
- 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 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
- 2025-02-17 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-02-17 Odśnieżanie samochodu
- 2025-02-17 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-17 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-17 Pompiarze...
- 2025-02-16 PV teraz