Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

$SWSTACK, $HWSTACK, $FRAMESIZE

Awatar użytkownika
almatea
-
-
Posty: 240
Rejestracja: 12 gru 2003, o 17:02
Lokalizacja: Brzeszcze
Kontaktowanie:

$SWSTACK, $HWSTACK, $FRAMESIZE

Postautor: almatea » 11 gru 2007, o 10:24

Witam wszystkich.

Czy ma ktoś może jakąś skuteczną recepturę jak dobierać programowe i sprzętowe rozmiary stosu oraz ramkę? W helpie wyraźnie pisze, że zły dobór może być przyczyną niewłaściwego zadziałania programu i innego użytkownika, jeśli nie konfiguruję się tego w kodzie programu lecze w opcjach kompilatora co niesie ze sobą możliwość różnych ustawień. Rozumiem, że ustawienia "difoltowe" nie zawsze są trafne.
No ale chyba będzie, jeżeli rozmiary będą za niskie a nie za wysokie?

Pozdrawiam.

bartekgajos
-
-
Posty: 57
Rejestracja: 10 lis 2006, o 11:50
Lokalizacja: Gdansk

Postautor: bartekgajos » 29 gru 2007, o 17:09

Witam

Miałem raz tylko problem wBascom'ie ze stosami.

Problem polegał na tym, że przy bardzo dużej ilości obliczeń nie starczalo stosu na przeniesienie wartości obliczeń pomiędzy procedureami.

ale to dotyczyło logharytmów, sinusów, tangensów, funkcji exponentalnych, itp.

W bardzo dużej ilości przypadków ( 99.99999999% ) standardowe ustawienia wystarczają.

pozdrawiam
Bartek

Awatar użytkownika
ZbeeGin
-
-
Posty: 170
Rejestracja: 3 kwie 2003, o 10:10
Lokalizacja: Metropolia Katowice

Re: $SWSTACK, $HWSTACK, $FRAMESIZE

Postautor: ZbeeGin » 1 sty 2008, o 10:31

Czy ma ktoś może jakąś skuteczną recepturę jak dobierać programowe i sprzętowe rozmiary stosu oraz ramkę? W helpie wyraźnie pisze, że zły dobór może być przyczyną niewłaściwego zadziałania programu i innego użytkownika, jeśli nie konfiguruję się tego w kodzie programu lecze w opcjach kompilatora co niesie ze sobą możliwość różnych ustawień. Rozumiem, że ustawienia "difoltowe" nie zawsze są trafne.
No ale chyba będzie, jeżeli rozmiary będą za niskie a nie za wysokie?
Stos jest elementem rozrastającym i kurczącym się dynamicznie. Może dojść do sytuacji gdzie jeden zajdzie na drugi - stack overleap - i kłopot gotowy. Dlatego na początku określa się rozmiary domyślne, które powinny być zgrubsza obliczone przez projektojącego program.
Wartości wpisywane przez BASCOM automatycznie, wystarczają dla większości prostych programów nie korzystających prawie wcale z procedur (SUB) i funkcji (FUNCTION).

W kwestii wspomnianych obliczeń to metoda nie jest prosta i rzeczywiście wyniki zależą od treści programu

Jaka jest informacja że deklarowany stos jest zbyt mały?

Generalnie podczas kompilacji takz informacja się nie ukaże. Informacja taką znajdziesz tylko podczas symulacji programu.
Jeśli włączysz w symulatorze u góry zakładkę uP to znajdziesz tam dwa checkbox-y: Frame Overflow oraz Stack Overflow. Jeśli któryś zostanie zaznaczony podczas symulacji programu, to znak, że ten stos jest zbyt mały. Należy zwiększyć wartość w odpowiednim polu - najlepiej dwukrotnie - i ponownie uruchomić symulację.
Tuż poniżej znajdziesz także pola Soft Stack, Soft Stack Min itd. Tam pokazywane są bieżące wartości adresów początków stosów i ich końców. Śledząc te wartości można obliczyć (wystarczy odjąć odpowiednią parę pól) ile bajtów z każdego stosu użył program.
Ostatnio zmieniony 30 lis 2008, o 11:27 przez ZbeeGin, łącznie zmieniany 3 razy.

Fredy
-
-
Posty: 141
Rejestracja: 27 mar 2005, o 21:45
Lokalizacja: Małopolska

Postautor: Fredy » 1 sty 2008, o 23:49

Nic dodać nic ująć - konkretna odpowiedź :608:

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 99 gości