Postautor: Gość » 6 maja 2003, o 18:29
Na początku należy powiedzieć co to jest wskaźnik.
Według Jesse Liberty w książce " W 10 minut poznaj C++" definicja wskaźnika i kawałek komentarza do wskażnika jset następująca:
def: : Wskaźnik jest zmienną przechwującą adres w pamięci.
komentarz
"Stop.Przeczytaj tę definicję jeszcze raz.Wsaźnik jest zmienną.O zmiennych wiesz już dużo;są,to obiekty,które mogą przechowywać jakąś wartość.Zmienna typu całkowitego przechowuje wartości całkowite.
Zmienna typu znakowego przechowuje litery.Zmienna typu wskaźnikowego przechowuje adres w pamięci."A zatem wystarczy odwołać się do adresu pamięci i odczytać to co znajduje się w danej komórce pamięci lub komórkach pamięci.Proszę sobie wyobrazić,że napisałeś lub narysowałeś program,który po skompilowaniu zajmuje jakąś część pamięci to znaczy program kończy się w którymś miejscu, na konkretnym adresie pamięci.By było to bardziej widoczne to uruchom program narzędziowy epromer dla st6.Skonfiguruj go i wprowadź jakiś
plik hex.Co widzisz.Widzisz program a pod nim całą niezapisaną część pamięci,która leży odłogiem.Aż prosi sięby ją jakośzagospodarwać.Można napisać następny program i umieścić go poniżej,ale można wykorzystać
do przechowywania danych.Możemy zrobić tak,że zamiast tablic takich jakie są w Realizerze użyjemy wskaźniki.Zamiast prostokąta o nazwie Tablica należy użyć prostokąta o nazwie wskaźnik.Ten element powinien zwracaćzawartość komórki lub komórek pamięci w zależności od typu zmiennej.Proszę zauważyć,że program biega od jakiegoś adresu początkowego do jakiegoś adresu końcowego ale tenże program w pewnych momentach odczytuje to co jest w pamięci ale poza nim..Dla przykładu weźmy tablicę typu UINT dla,której na wejściu jest
zmienna dwubajtowa a na wyjściu napewno zmienna dwubajtowa.Jedna linia takiej tablicy zajmuje 4 bajty pamięci ROM.Proszę sobie wyobrazić,że takich linii powinno być np.600 czyli z czapy musisz zarezerwować
2,4kB pamięci a do dyspozycji masz st6265 czyli 3,8kB w ramach kodu programu.Z jedną linią program zajmuje 1,5kB.Co zrobisz?Zmienisz mikrokontroler lub zastosujesz wskażniki.Jeśli zastosujesz wskaźniki wówczas dane zajmą 2*600=1200 bajtów ale poza kodem programu.A zatem całe Twoje programowanie zakończyło się na zużyciu 2,7kB ale kod programu to 1,5kB.Jest o co walczyć!W moim przekonaniu trzeba znależć człowieka,który napisze odpowiednie makro w assemblerze. Pozostą dwa pytania czy Realizer akceptuje wskaźniki a drugie co
z prawami autorskimi.Czy przypadkiem nie są naruszane prawa autorskie twórców Realizera.Natomiast obsługa pamięci zewnętrznych jest osobnym zagadnieniem.Wymaga dobrania pamięci pod kątem możliwości programowych Realizera.Być może jest to proste ale może być prawie niewykonalne.Co do samego Realizera to widziałem go w wersji 4.0, wydanie specjalne, na Politechnice,gdzie służy do celów dydaktycznych. Innych późniejszych wersji nie znam. A firma Actum żąda ponad 1500EURO co zdaje się być standardową kwotą na rynku oprogramowania.
Należy z naciskiem dodać,że mimo wady,a być może pełna wersja posiada wskaźniki,jest to program bardzo dobry
a kto wie czy nie najlepszy.Ten program został stworzony dla elektroników dla których język elektroniki jest
najbliższy i za to należy podziękować autorom.
Szymon.W