Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
AVR STUDIO - ASM
SP5FCS Offline
Adam
*****

Liczba postów: 1,071
Dołączył: 02-02-2009
Post: #18
RE: AVR STUDIO - ASM
(11-04-2012 22:09)JaHo napisał(a):  Zdecydowanie nie zgodzę się jednak ze stwierdzeniem:
"W językach wysokopoziomowych występuje dodatkowo stos danych wykorzystywany do przekazywania parametrów do wywoływanych funkcji. Oba stosy są rozłączne, mają odrębne wskaźniki i pracują niezależnie od siebie."
Wręcz przeciwnie, w wysokopoziomowych językach kompilowanych to właśnie (stos maszynowy) jest używany do tego wszystkiego.

Nie analizowałem języków wysokopoziomowych do tworzenia oprogramowania na komputery i rozbudowane procesory. Tu dyskutujemy o mechanizmach jakie zostały zaimplementowane w kompilatorach na mikroprocesory 8-bitowe klasy 8051, AVR8 a w tych których używam jest dokładnie tak jak napisałem powyżej.

Stos sprzętowy obsługiwany niezależnie od programu przez rdzeń procesora służy do odkładania adresów powrotu z funkcji i obsługi przerwań. Ten sam stos (obszar w RAM wskazywany przez wskaźnik SP) może być obsługiwany programowo do ochrony rejestrów oraz danych. Oczywiście istnieje również możliwość przekazywania parametrów do funkcji poprzez stos sprzętowy ale w językach wysokopoziomowych robi się to inaczej.

Do tego celu tworzy się odrębny stos przeznaczony wyłącznie do przekazywania parametrów do funkcji. W kompilatorze języka C CodeVision dla procesorów AVR jest to wydzielony obszar RAM-u obsługiwany przez wskaźnik oparty o parę rejestrów [YH:YL]. Podczas przekazywania parametrów do funkcji dane są kładzione na stosie jako kopia danych na których pracuje wywołana funkcja. Przez cały czas wykonywania kodu funkcji dokładnie wiadomo gdzie znajdują się parametry wejściowe funkcji dlatego możemy z nich korzystać w dowolny sposób. Przed wyjściem z funkcji przywracana jest początkowa wartość wskaźnika do stosu danych co powoduje zniknięcie ze stosu tymczasowych danych utworzonych na potrzeby funkcji.
Takie rozwiązanie całkowicie uniezależnia działanie stosu danych od operacji wykonywanych na stosie sprzętowym (skoki do funkcji, przerwania). Pozwala to uprościć mechanizm przekazywania danych oraz gwarantuje ich ochronę i poprawność niezależnie od intensywności wykorzystania stosu sprzętowego.

Trzeci rodzaj stosu to programowa implementacja własnych stosów na potrzeby realizowanego algorytmu.

73 Adam
11-04-2012 23:02
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
AVR STUDIO - ASM - SQ6ADE - 14-10-2010, 0:06
RE: AVR STUDIO - ASM - SP5FCS - 14-10-2010, 22:39
RE: AVR STUDIO - ASM - SQ6ADE - 15-10-2010, 21:04
RE: AVR STUDIO - ASM - SQ6ADE - 28-10-2010, 21:55
RE: AVR STUDIO - ASM - SQ6OXK - 28-10-2010, 23:53
RE: AVR STUDIO - ASM - SP9FKP - 14-11-2010, 14:36
RE: AVR STUDIO - ASM - SP9FKP - 02-12-2010, 8:47
RE: AVR STUDIO - ASM - SQ6ADE - 02-12-2010, 14:08
RE: AVR STUDIO - ASM - SP4EJT - 10-04-2012, 15:11
RE: AVR STUDIO - ASM - SP5FCS - 10-04-2012, 22:22
RE: AVR STUDIO - ASM - JaHo - 10-04-2012, 16:52
RE: AVR STUDIO - ASM - SP4EJT - 10-04-2012, 19:05
RE: AVR STUDIO - ASM - SQ6ADE - 10-04-2012, 19:10
RE: AVR STUDIO - ASM - SP4EJT - 10-04-2012, 19:31
RE: AVR STUDIO - ASM - SQ6ADE - 10-04-2012, 20:48
RE: AVR STUDIO - ASM - SQ6ADE - 10-04-2012, 22:25
RE: AVR STUDIO - ASM - JaHo - 11-04-2012, 22:09
RE: AVR STUDIO - ASM - SP5FCS - 11-04-2012 23:02
RE: AVR STUDIO - ASM - JaHo - 12-04-2012, 10:29
RE: AVR STUDIO - ASM - SP5FCS - 12-04-2012, 12:44
RE: AVR STUDIO - ASM - JaHo - 12-04-2012, 16:03

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości