-
Data: 2009-09-11 14:58:16
Temat: Re: avr-gcc wielkość kodu
Od: Norbert Jaros <n...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 11 Wrz, 16:11, Grzegorz Kurczyk
<g...@c...slupsk.pl> wrote:
> Użytkownik pawel napisał:
>
> > Witam.
>
> > Mam dwie zmienne lokalne typu
> > unsigned int a,b;
> > i dwa wskaźniki typu
> > char *wsk1,*wsk2;
>
> > Zmienne te wykorzystuję w jednej funkcji.
> > Chcąc wykorzystać je globalnie w innych funkcjach przeniosłem je do
> > globalnych.
> > Dlaczego po samym przeniesieniu ich rozmiar kodu urósł aż o 44 bajty?
>
> Operacje na zmiennych lokalnych wykonywane są w miarę możliwości
> bezpośrednio na rejestrach. Są to rozkazy dwu-bajtowe (jedno słowo).
> Przeniesienie zmiennych do globalnych wymusza odwoływanie się do nich za
> pośrednictwem czterobajtowych rozkazów LD i ST. Przykładowo
> inkrementacja zmiennej lokalnej typu char przechowywanej w rejestrze to
> jeden rozkaz np:
> INC R16
> zajmujący dwa bajty.
> Dla zmiennej globalnej zapamiętanej w pamięci RAM będzie to już
> sekwencja trzech rozkazów np:
> LD R16, [zmienna] // 4 bajty
> INC R16 // 2 bajty
> ST [zmienna], R16 // 4 bajty
> czyli z dwóch bajtów zrobiło się dziesięć.
>
> Dla zmiennych typu int i wskaźników sprawa wygląda odpowiednio gorzej.
> Kompilator stara się to możliwie optymalizować wykonując co się da na
> rejestrach i dopiero na koniec zapamiętuje wynik w pamięci RAM pod
> adresem zmiennej.
>
> Pozdrawiam
> Grzegorz
.... jest jeszcze gorzej , bo jeżeli chcesz użyć LD to najpierw trzeba
adres zmiennej załadować do X,Y lub Z
a jeżeli użyjesz LDS to zajmujesz 2 słowa ale sądząc po tych " // 4
bajty " to chyba o LDS koledze wlasnie chodzilo.... :)
Pozdrawiam
Norbert
Następne wpisy z tego wątku
- 15.09.09 09:11 Grzegorz Kurczyk
- 16.09.09 19:47 Adam Dybkowski
Najnowsze wątki z tej grupy
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
- wzmacniacz mocy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
Najnowsze wątki
- 2025-06-24 Delegacja osoby prowadzącej jednoosobową działalność
- 2025-06-24 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-06-24 Warszawa => Młodszy Programista SQL / FrontEnd developer <=
- 2025-06-24 Warszawa => Junior C# / FrontEnd developer <=
- 2025-06-24 Warszawa => Sales Executive / KAM <=
- 2025-06-23 Warszawa => MENA New Business Manager <=
- 2025-06-23 Trójmiasto => Head of Social Media <=
- 2025-06-23 Tapeta w Xiaomi
- 2025-06-23 Gdańsk => Programista Kotlin <=
- 2025-06-23 Białystok => Programista Mainframe (z/OS, Assembler) <=
- 2025-06-23 Warszawa => Senior Account Manager <=
- 2025-06-23 Białystok => Mainframe (z/OS, Assembler) Developer <=
- 2025-06-23 Warszawa => Starszy Programista C <=
- 2025-06-23 Warszawa => Tester Automatyzujący <=
- 2025-06-23 Warszawa => Inżynier oprogramowania .Net <=