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.
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
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
-
- -
- Posty:57
- Rejestracja:10 lis 2006, o 11:50
- Lokalizacja:Gdansk
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
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
Re: $SWSTACK, $HWSTACK, $FRAMESIZE
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.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?
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.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 22 gości