-
11. Data: 2009-03-15 18:22:19
Temat: Re: avr-gcc eeprom inline
Od: "T.M.F." <t...@n...mp.pl>
pawel pisze:
>> Ile ci brakuje bajtow?
>
> Stosunkowo sporo, atmega32
> Program: 32830 bytes (100.2% Full)
Ee, czyli spoko, to praktycznie nic :)
> Maksymalnie 32768.
>
> Wyremowanie jednej linijki
>
> for(i = 0; i < MAX_DS18X20; i++)
Jesli mozesz to odwroc warunek od MAX_DS18X20 do 0. To wymaga mniej
instrukcji do sprawdzenia. W innych petlach podobnie - staraj sie, zeby
kompilator nie musial wstawiac dodatkowych CP, czyli np. odliczaj do
zera, albo do 255, 256 czy cos w tym stylu.
> {
> //blablabla
> eeprom_write_byte(&ds18x20_ee[i].restout, k);
restout ma jaka dlugosc? Jesli 1 lub 2 bajty to nie oplaca sie
przekazywac adresu, lepiej wartosc.
Zobacz tez czy nie masz gdzies w kodzie operatorow logicznych, mozna je
zoptymalizowac okreslajac explicite typ na np. uint8_t, gdyz gcc
automatycznieje promuje do uint, co wielokrotnie zwieksza ilosc operacji.
-
12. Data: 2009-03-15 18:22:48
Temat: Re: avr-gcc eeprom inline
Od: "T.M.F." <t...@n...mp.pl>
Adam Dybkowski pisze:
> T.M.F. pisze:
>
>> Pytanie kontrolne - jakiej wersji avr-gcc uzywasz? Najnowsza ma
>> regression bug i ma tendencje do bardzo ostrego inlinowania funkcji co
>> zwieksza objetosc.
>
> Piszesz o WinAVR 20090313 czy jakiejś dystrybucji linuxowej?
>
Pisze o WinAVR.
-
13. Data: 2009-03-15 22:18:47
Temat: Re: avr-gcc eeprom inline
Od: "T.M.F." <t...@n...mp.pl>
T.M.F. pisze:
> Adam Dybkowski pisze:
>> T.M.F. pisze:
>>
>>> Pytanie kontrolne - jakiej wersji avr-gcc uzywasz? Najnowsza ma
>>> regression bug i ma tendencje do bardzo ostrego inlinowania funkcji co
>>> zwieksza objetosc.
>>
>> Piszesz o WinAVR 20090313 czy jakiejś dystrybucji linuxowej?
>>
>
> Pisze o WinAVR.
A, i nie o 20090313, to chyba wersja RC jest. Ale ostatnia stabilna tak
sie paskudnie zzachowuje i co wiecej okreslanie przez opcje kompilatora
jakie funkcje maja nie byc inline nic nie zmienia.
BTW, jesli masz ta wersje RC zainstalowana mozesz sprawdzic, czy dziala
wprowadzona do gcc opcja umozliwiajaca okreslenie optymalizacji na
poziomie funkcji?
-
14. Data: 2009-03-15 22:45:54
Temat: Re: avr-gcc eeprom inline
Od: Adam Dybkowski <a...@4...pl>
T.M.F. pisze:
> BTW, jesli masz ta wersje RC zainstalowana mozesz sprawdzic, czy dziala
> wprowadzona do gcc opcja umozliwiajaca okreslenie optymalizacji na
> poziomie funkcji?
Nie używam RC, na razie śmigam jeszcze na starej dobrej 20080610.
A optymalizację inline'owania wymuszam przez atrybuty funkcji noinline i
always_inline, jak na razie to działa poprawnie. Poczekam, aż coś się
wyklaruje z nowszym WinAVR'em jeżeli takie problemy są obecnie.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
-
15. Data: 2009-03-15 23:19:15
Temat: Re: avr-gcc eeprom inline
Od: Zbych <a...@o...pl>
T.M.F. pisze:
> BTW, jesli masz ta wersje RC zainstalowana mozesz sprawdzic, czy dziala
> wprowadzona do gcc opcja umozliwiajaca okreslenie optymalizacji na
> poziomie funkcji?
Ale to ma chyba działać dopiero od 4.4, a w winavr jest jeszcze 4.3.