[ASM] stos

0

Mam taki problem poniewaz zastanawiam sie czy stos ogolnie w pamieci jest taka struktura ktorej miejsce w pamieci miesci sie w jakims okreslonej przestrzeni pamieci i jest to przestrzen zwarta czy raczej przestrzen potrzeba na stos jest doklejana do kazdego programu ladowanego pamieci i zalozmy doklejna jest zaraz za sekcja gdzie sa przechowywane dane programu.

Czekam na odpowiedzi...

pzdr.

0

Ze co? Stos jest tam gdzie wskazuje ss:(e)sp, a jaka bedzie mial wartosc to juz zalezy od systemu lub aplikacji.

0

I jeszcze jedno: jesli masz np.

 STOS  db 1024 dup(?)

, to SS:ESP (ostatnio nawet RSP (64-bitowy SP) :)) musi wskazywać na KONIEC tej struktury, a nie na początek, bo stos rośnie w dół, a nie w górę.

0

no tak rozumiem ze SS:SP wskazuje miejsce w pamieci stosu. ale zastanawiam sie czy jest tak ze gdy jakis program ladowany jest do pamieci i ten program chce sobie przydzielic zalozmy pewna przestrzen pamieci dla stosu to czy ta przestrzen lezy zaraz za kodem programu czy raczej jest to przestrzen ktora jest wydzielana z jakiegos duzego kawalka pamieci przeznaczonego na stos ktory miesci sie w jakims spejcialnym miejscu pamieci ? Lub moze jest tak ze wszystkie programy korzystaja z tej samej pamieci ktora jest przeznaczona na stos a program sam deklaruje ile maksymalnie bedzie mogl na ten stos bajtow wrzucic ?

0

Zalezy od systemu i wielu innych rzeczy, np w Windows w plikach PE wielkosc stosu jest w naglowku (domyslnie chyba 1MB). A gdzie sie znaduje ... znowu co system to historia, zwlaszcza, ze nowoczesne systemy korzystaja ze stronicowania, przy czym pamiec nie jest po prostu liniowa, wskazniki o tych samych wartosciach w dwoch programach wskazuja na co innego. Do tego jeszcze segmenty, gdt, idt ...

Jak ci zalezy to mozesz sprawdzic jaka wartosc ma esp (ss chyba tez, choc na wiele ci sie selektor nie zda). Moge zapytac po co ci ta wiedza?

0

Fakt ten mnie interesuje. Chce znac sposob dzialania komputera. To wszystko.
Dobrze wiec powiecmy ze interesuje mnie sposob w jaki robia to mikroprocesory z rodziny x86.

0

Ehh, jeszcze raz powiem: to zalezy od systemu, procesor tu nie ma nic do gadania. Poza tym nie jest tak latwo to wytlumaczyc, np w moim Draco pamiec aplikacji wyglada tak:

Wirtualnie:
pamiec jadra | kod / dane aplikacji | stos dla ring 0 | stos dla ring 3 | sterta

Fizycznie: tu juz nie bedzie tak latwo, np moze to wygladac tak:
pamiec jadra | pagedir dla procesu 1 | pagetable dla procesu 1 | kod / dane procesu 1 | pagedir procesu 2 | stosy dla procesu 2 | stosy dla procesu 1 | pagetable dla procesu 2 | kod/dane procesu 2 | sterta 1 | sterta 2 | sterta 1

To moze byc bardziej pomieszane niz mozna se to wyobrazic, wiec dosyc trudno jest to wytlumaczyc, po prostu zalezy od tego jak autor OSa se to zrobi.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.