Il funzionamento dello stack dovrebbe essere pressoché identico per tutte le architetture, quindi ti spiegherò il funzionamento di quest'ultimo sui processori della famiglia x86:qualcuno ha una guida per risc v in italiano.Non riesco a capire come funziona l'uso dello stack.
Lo stack è una zona di memoria, usata per memorizzare dati "temporaneamente", gestita in modalità LIFO(last in firts out), questo vuol dire che l'ultimo dato ad essere memorizzato in questa zona di memoria è il primo ad essere espulso, lo stack viene gestito tramite due registri puntatori, il BP(base pointer) e lo SP(stack pointer), lo SP conterrà l'offset della locazione in cui è memorizzato l'ultimo dato, mentre il BP viene utilizzato per indirizzare locazioni di memoria in questa zona, la cima dello stack è chiamata TOS(top of the stack) è corrisponde all'ultimo dato memorizzato nello stack, quindi la locazione indirizzata dallo SP, mentre, la locazione del primo dato memorizzato prende il nome di BOS(bottom of the stack).
Le due istruzioni che modificano il contenuto dello stack sono le istruzioni di "push" e "pop"(nell'architettura x86), l'istruzione "push" permette di memorizzare un dato nello stack, più precisamente all'esecuzione di questa istruzione il contenuto dello SP viene decrementato di due unità e viene memorizzato il dato(in quanto lo stack viene gestito a Word e i processori della famiglia x86 lavorano in Little Endian)
Codice:
push AX
; Memorizza il contenuto del registro AX nello stack
push AL
; Errore in quanto AL è un registro su 8bit
Codice:
pop AX
; espelle una Word dallo stack e la memorizza in AX
pop AL
; errore AL è un registro a 8bi
Probabilmente i processi RISC non utilizzano la memoria segmentata quindi non ti interessa con quale segmento verrà combinati lo SP per generare l'indirizzo fisico.