-
Data: 2009-09-11 14:11:15
Temat: Re: avr-gcc wielkość kodu
Od: Grzegorz Kurczyk <g...@c...slupsk.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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
Następne wpisy z tego wątku
- 11.09.09 14:27 Łukasz Góralczyk
- 11.09.09 14:58 Norbert Jaros
- 15.09.09 09:11 Grzegorz Kurczyk
- 16.09.09 19:47 Adam Dybkowski
Najnowsze wątki z tej grupy
- Fejk muzyczny czy nie fejk
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
Najnowsze wątki
- 2025-03-15 parking Auchan
- 2025-03-15 Art. 19.1 ustawy o ochronie praw autorskich
- 2025-03-15 przegląd za mną
- 2025-03-15 Na co komu okna
- 2025-03-15 Mój elektryk
- 2025-03-15 Fejk muzyczny czy nie fejk
- 2025-03-15 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-15 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-15 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2025-03-15 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+ experience) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-15 KOMU w RP3 pasuje "Rumuńska łatwość gmerania w wyborach" i dlaczego nie PO-Trzaskanym?
- 2025-03-15 China-Kraków => Key Account Manager IT <=
- 2025-03-14 Spalił się autobus :-)