RTV forum PL | NewsGroups PL

Jak zminimalizować wykorzystanie stosu w avr-gcc przy użyciu zmiennych globalnych i static?

avr-gcc pozbycie się stosu

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zminimalizować wykorzystanie stosu w avr-gcc przy użyciu zmiennych globalnych i static?

pawel
Guest

Fri Sep 05, 2008 7:18 pm   



Witam.
Chciałbym mieć większą pewność że stos nie nadpisze mi danych.
Czy deklarując zmienne jako globalne, i wszystkie zmienne w funkcjach jako
static spowoduję że stos będzie mniej wykorzystywany? Oczywiście nie licząc
funkcji bibliotecznych.


Pozdrawiam
Paweł

Bogdan G
Guest

Fri Sep 05, 2008 8:39 pm   



Quote:
Chciałbym mieć większą pewność że stos nie nadpisze mi danych.
Czy deklarując zmienne jako globalne, i wszystkie zmienne w funkcjach jako
static spowoduję że stos będzie mniej wykorzystywany? Oczywiście nie
licząc funkcji bibliotecznych.

Stos bedzie mniej wykorzystywany - to prawda. Jednak bedzie mniej miejsca na

niego. Przykład - w jednej procedurze potrzebujesz lokalnie zmienną
dwubajtową. W drugiej również. Jeśli obie zrobisz static wówczas nie bedą
zajmowały miejsca na stosie, ale razem zajmą 4 bajty miejsca, o które skróci
sie miejsce na stos. Czyli w przypadku jeśli nie są one razem wywyoływane
zwiekszasz prawdopodobieństwo nadpisania danych przez stos. Możesz ocywiście
te dane umieścic w jednym miejscu pamieci - jednej zmiennej ale zmniejsza to
czytelność programu. Lepiej jest jednak dawać, gdzie się da zmienne lokalne,
a w trakcie testowania sprawdzić głębokość wnikania stosu w pamięć.

Adam Dybkowski
Guest

Fri Sep 05, 2008 11:46 pm   



pawel pisze:

Quote:
Chciałbym mieć większą pewność że stos nie nadpisze mi danych.
Czy deklarując zmienne jako globalne, i wszystkie zmienne w funkcjach jako
static spowoduję że stos będzie mniej wykorzystywany? Oczywiście nie licząc
funkcji bibliotecznych.

A nie lepiej obliczać szczytową zajętość stosu (np. wcześniej wypełnić
cały obszar stosu stałą wartością a potem sprawdzać, gdzie najniżej się
zaczyna) przez dłuższy czas i ew. dodatkowo sprawdzać na przykład co
sekundę, czy nie przekroczono zadanej głębokośći?

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Pawel
Guest

Sat Sep 06, 2008 5:08 am   



Quote:
A nie lepiej obliczać szczytową zajętość stosu (np. wcześniej wypełnić
cały obszar stosu stałą wartością a potem sprawdzać, gdzie najniżej się
zaczyna) przez dłuższy czas i ew. dodatkowo sprawdzać na przykład co
sekundę, czy nie przekroczono zadanej głębokośći?

Ciekawy pomysł.

W którym momencie najlepiej wypełnić ten stos. Może na początku funkcji
main?
Czy w którejś z sekcji init..?
Pozdrawiam
Paweł

Adam Dybkowski
Guest

Sat Sep 06, 2008 7:01 pm   



Pawel pisze:

Quote:
A nie lepiej obliczać szczytową zajętość stosu (np. wcześniej wypełnić
cały obszar stosu stałą wartością a potem sprawdzać, gdzie najniżej się
zaczyna) przez dłuższy czas i ew. dodatkowo sprawdzać na przykład co
sekundę, czy nie przekroczono zadanej głębokośći?

Ciekawy pomysł.
W którym momencie najlepiej wypełnić ten stos. Może na początku funkcji
main?
Czy w którejś z sekcji init..?

Najlepiej zanim w ogóle stos jest do czegoś użyty - czyli AFAIR w sekcji
..init2

W main też oczywiście możesz tylko wtedy wypełnij jedynie obszar od
początku stosu do SP.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zminimalizować wykorzystanie stosu w avr-gcc przy użyciu zmiennych globalnych i static?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map