I registri del processore

I registri sono indirizzi di memoria del processore (CPU) di un computer. Sono utilizzati durante l'elaborazione dati per eseguire le istruzioni in linguaggio macchina.

A cosa servono? Essendo situati nel microprocessore, sono gli spazi di memoria ad accesso più rapido del computer.

Il funzionamento e la disposizione dei registri nella CPU determinano l'architettura del processore.

L'architettura Intel 8086/8088

I vecchi processori Intel 8086/8088 a 8 bit o 16 bit usavano una ripartizione dei registri base.

lo schema dei registri in una cpu 8086/8088

L'architettura Intel 80386

I personal computer più recenti, da 32 bit in poi, sono basati principalmente sull'architettura Intel 80386.

In questo schema sono rappresentati i principali indirizzi di memoria di un processore 80386.

l'architettura 80386

Nota. A seconda del tipo di dato posso usare anche soltanto una frazione di registro. Ad esempio, il registro EAX è suddiviso in un registro EA da 16 bit e due registri AL e AH da 8 bit. Quindi, per registrare un valore di 8 bit posso usare soltanto il registro AL (registro A low). Un altro valore di 8 bit lo posso registrare contemporaneamente nel registro AH (registro A high). Per registrare un valore di 16 bit uso il registro AX. Questa era la configurazione dei registri nelle vecchie macchine a 16 bit ancora oggi disponibile nei nuovi processori a 32 o 64 bit. I restanti bit del registro a 32/64 bit non sono utilizzabili quando assegno un valore alle frazioni AX, AL e/o AH. Lo stesso discorso vale per gli altri registri B,C,D.

Pur essendoci differenze con altre architetture, questo schema è particolarmente utile nello studio del linguaggio assembly perché generalizza la disposizione dei principali register in una cpu moderna.

I principali registri dell'architettura Intel x86

  1. Registri ad uso generico (general purpose)
    EAX, EBX, ECX, EDX
  2. Registri indice
    EBP, ESI, EDI, ESP, EIP
  3. Registri di segmento
    CS, DS, SS, ES, FS, GS
  4. Registro dei flag
    EFLAG

Dove ESP è lo stack pointer, EBP è la base pointer dello stack, EIP è l’istruction pointer, ESI è il source index, EDI è il destination index.

Scendendo più nel dettaglio

  • Registri general purpose (EAX, EBX, ECX, EDX)
    I registri general purpose (GP) sono usati per memorizzare i dati durante i calcoli. Essendo pochi registri non tutti i dati possono essere memorizzati nei registri. Pertanto, occorre spostare in continuazione i dati dalla memoria ai registri.

    Nota. Tutti i registri d’uso generale possono essere usati per memorizzare dati. Tuttavia, esistono anche funzioni specifiche per ogni registro. Ad esempio, EAX è l’accumulatore principale. Ad esempio, è il registro che contiene il valore di ritorno di una funzione dopo la chiamata. EBX è usato come base register, ECX per i dati e i cicli, EDX come data register.

  • Program Counter (EIP o IP)
    E' il registro che punta all'indirizzo di memoria dell'istruzione da eseguire. Dove IP sta per Instruction Pointer. Il processore legge l'indirizzo dal registro PC, preleva l'istruzione da eseguire dall'indirizzo di memoria portandola nella CPU tramite un'operazione di FETCH. Poi decodifica l'istruzione con un'operazione di DECODE e la esegue con un'operazione di EXECUTE. Infine aggiorna il registro PC (program counter) con l'indirizzo dell'istruzione successiva e il ciclo Fetch-Execute ricomincia daccapo.
    il funzionamento del registro

    Nota. Generalmente l'indirizzo dell'istruzione successiva è l'indirizzo di memoria successivo a quello corrente nell'area di memoria dove è allocato il programma che la cpu sta eseguendo oppure un indirizzo non continuo se l'operazione corrente è un operazione di salto (goto).

  • Stack Pointer (ESP o SP)
    Lo stack pointer è l'indirizzo in testa allo stack. Lo stack è una struttura a pila che contiene la coda di attivazione con in testa il record di attivazione della funzione correntemente eseguita dal processore. Funziona secondo la logica LIFO (Last Input First Output). Ogni nuovo indirizzo aggiunto alla pila (stack) tramite un'operazione push viene posto sopra gli altri. L'operazione pop, invece, rimuove l'indirizzo in testa alla pila.
    il funzionamento della memoria stack

    Nota. La memoria stack funziona come una pila di piatti. L'ultimo piatto viene riposto sopra gli altri ed è il primo ad essere ripreso. Il registro ESP memorizza l'indirizzo dell'ultimo piatto, quello posto sopra tutti gli altri e il primo a uscire dalla pila. Il registro EBP o BP (Base Pointer) invece memorizza l'indirizzo del primo piatto, quello posto sotto tutti gli altri e l'ultimo a uscire dalla pila.

  • Base Pointer (EBP o BP)
    E' l'indirizzo iniziale dove inizia lo stack. E' posto in fondo alla pila, sotto tutti gli altri indirizzi. L'ultimo a essere richiamato.
 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Linguaggio assembly