Sto cercando di capire come vengono costruiti i frame di stack e sono stati inseriti in questa descrizione su wikipedia:
The locations of all other fields in the frame can be defined relative either to the top of the frame, as negative offsets of the stack pointer, or relative to the top of the frame below, as positive offsets of the frame pointer. The location of the frame pointer itself must inherently be defined as a negative offset of the stack pointer. --- https://en.wikipedia.org/wiki/Call_stack
La descrizione nella citazione sopra implica che l'indirizzo del puntatore del frame è un offset dal puntatore dello stack è banalmente ovvio dalle rispettive definizioni.
Sono confuso sul motivo per cui la posizione del puntatore del frame deve essere intrinsecamente definita come una funzione del puntatore dello stack.
Come ho capito la situazione, il puntatore dello stack viene incrementato quando viene assegnata una nuova memoria al frame. Tuttavia, la posizione del puntatore del frame viene fissata dal punto in cui è terminato il prologo della procedura.
Poiché tutti gli accessi alla memoria all'interno del frame devono essere indirizzati come offset dal puntatore del frame o come offset di memoria dal puntatore dello stack e uno dei puntatori del frame e dello stack è una posizione fissa e l'altro è intrinsecamente mutabile, sicuramente ha senso rendere il puntatore mutabile un offset dal puntatore fisso?
A quanto ho capito, nello schema sopra, dovresti aggiornare il riferimento del puntatore del frame ogni volta che hai incrementato il puntatore dello stack, il che sembra eccessivo. Che cosa ho frainteso?