CodeLan
Administrator
Dołączył: 03 Lis 2006
Posty: 171
Przeczytał: 0 tematów
Pomógł: 3 razy Ostrzeżeń: 0/5 Skąd: Z pod skrzydeł Google.pl
|
Wysłany: Nie 7:28, 17 Cze 2007 Temat postu: Stos |
|
|
Stos jest obszarem pamięci używanym do "tymczasowego" przechowywania danych istotnych dla programu.
Jak powiedzieliśmy w sekcji "Rejestry i flagi" rejestry są obszarem kilku(nasto)bajtowym i nie nadają się raczej do przechowywania danych - raczej do ich obróbki.
Funkcję magazynu pełni właśnie stos.
Jak działa stos?
Wyobraź sobie kilka kartek - umownie ponumerowanych od 1 do 10 - symbolizujących dane. Jeśli na stole położysz kartkę o numerze 1, to masz już jedną kartkę "na stosie". Jeśli na kartce 1 położysz kartkę 2, to wówczas masz na stosie już dwie kartki. Dołóż jeszcze kartki 3 i 4 - 4 kartki na stosie. Zauważ jednak, że w danym momencie masz dostęp tylko do kartki 4 - tylko ją możesz w danym momencie zdjąć ze stosu. Kartki 1 2 i 3 są dla ciebie aktualnie niedostępne - aby móc zobaczyć co jest na nich napisane musisz zdjąć kartkę 4, 3 i 2. Wniosek 1: ze stosu dane mogą być pobierane w odwrotnej kolejności, niż zostały na nim umieszczone. Wniosek 2: W danym momencie masz dostęp do ostatnio umieszczonego na stosie elementu - bez możliwości natychmiastowego dostępu do elementów poprzednich.
Assembler - do obsługi stosu - posiada dwie analogiczne instrukcję -na_stos (push) i ze_stosu (pop), ale o tym powiemy w dalszej części tego kursu.
Post został pochwalony 0 razy
|
|