Nono attento, non esiste lo stack nella ram, noi realizziamo concettualemente lo stack. E la immaginiamo come una struttura dati.
In memoria non c'è niente del genere c'è solo un insieme di byte liberi da un indirizzo 0 a un indirizzo N.
Noi partiamo da M e sottraiamo per allocare e sommiamo per deallocare.
Per ricordarci l'indirizzo dello stack usiamo un registro che è una cella di memoria nel processore che ha però dimensione fissa (32 bit ad esempio).
Il registro che dedichiamo a questo scopo è lo stack pointer ovvero il registro puntatore allo stack che si ricorda il punto a cui facciamo riferimento sullo stack.
Quando fai quella istruzione semplicemente aggiungi un valore 16 al puntatore a stack quindi quando accediamo alla ram accediamo all'indirizzo ESP + 16 quindi in un altro punto dello stack.
In memoria non c'è niente del genere c'è solo un insieme di byte liberi da un indirizzo 0 a un indirizzo N.
Noi partiamo da M e sottraiamo per allocare e sommiamo per deallocare.
Per ricordarci l'indirizzo dello stack usiamo un registro che è una cella di memoria nel processore che ha però dimensione fissa (32 bit ad esempio).
Il registro che dedichiamo a questo scopo è lo stack pointer ovvero il registro puntatore allo stack che si ricorda il punto a cui facciamo riferimento sullo stack.
Quando fai quella istruzione semplicemente aggiungi un valore 16 al puntatore a stack quindi quando accediamo alla ram accediamo all'indirizzo ESP + 16 quindi in un altro punto dello stack.