Sommario:
Definizione - Cosa significa registro non volatile?
Un registro non volatile è un tipo di registro con contenuti che devono essere conservati durante le chiamate di subroutine. Ogni volta che il valore di un registro non volatile viene modificato dalla routine, il vecchio valore deve essere salvato nello stack prima di modificare il registro e tale valore deve essere ripristinato prima di tornare. Un registro è simile a una variabile, tranne per il fatto che esiste un numero fisso di registri. Ogni registro è una posizione unica nella CPU in cui viene salvato un singolo valore. Un registro è l'unico posto in cui è possibile eseguire funzioni matematiche, quali addizione, moltiplicazione, sottrazione, ecc. I registri contengono spesso puntatori che si riferiscono alla memoria. Lo spostamento di valori tra memoria e registri è un fenomeno comune.
Techopedia spiega il registro non volatile
Di seguito sono riportati alcuni esempi di registri non volatili:
- ebx : un registro non volatile utilizzato per scopi generali. Di solito è impostato su un valore comune attraverso una funzione per accelerare i calcoli.
- esi : un registro non volatile utilizzato per scopi generali. È comunemente usato come puntatore, specialmente per le istruzioni di classe "rep-" che richiedono un'origine e una destinazione per i dati. Qui, l'si punta alla fonte. Un esi generalmente contiene dati che vengono utilizzati per tutta una funzione in quanto non sono soggetti a modifiche.
- edi : un altro registro non volatile utilizzato per scopi generali. Questo è comunemente usato come puntatore. Un edi è identico a un esi, con l'eccezione che di solito punta alla destinazione.
- ebp : un altro registro non volatile utilizzato come registro per scopi generici. Ha due usi distintivi basati sulle impostazioni di compilazione. È un registro generico o un puntatore a cornice. Se la compilazione non è stata ottimizzata o se il codice è scritto a mano, ebp monitora la posizione dello stack quando inizia una funzione. Dato che lo stack viene modificato interamente tramite una funzione, quando ebp è impostato sul valore originale, è possibile fare facilmente riferimento alle variabili salvate nello stack. Se la compilazione è stata ottimizzata, ebp verrà utilizzato come registro per scopi generici per memorizzare qualsiasi tipo di dati, mentre i calcoli per il puntatore dello stack vengono eseguiti in base al suo movimento.
