Metodo di indirizzamento

Da Wikipedia, l'enciclopedia libera.

I microprocessori consentono alle istruzioni di accedere agli operandi delle istruzioni con svariati metodi di indirizzamento. Gli operandi vengono recuperati dall'unità di controllo in base al loro indirizzo, che può essere specificato in vari modi, detti appunto metodi di indirizzamento. I processori RISC usano solo un sottoinsieme di questi, tipicamente gli indirizzamenti registro, immediato e indiretto.[senza fonte]

Codifica[modifica | modifica sorgente]

Gli indirizzi degli operandi sono inclusi in campi appositi delle istruzioni macchina date al calcolatore. In questi ci sono alcuni bit che specificano il metodo di indirizzamento. Sono 8, da 000b (0 decimale) a 111b ( =7 decimale), e si dividono in diretti e indiretti.

Alcuni metodi diretti sono:

  • Diretto con Registro (codifica 000b)
  • Immediato (codifica 001b)
  • Assoluto (codifica 010b)

i metodi indiretti sono molteplici:

  • indiretto con registro (codifica 011b)
  • indiretto con spiazzamento (codifica 100b)
  • relativo (codifica 101b)
  • predecrementante (codifica 110b)
  • postincrementante (codifica 111b)

nel caso di indirizzamenti indiretti l'istruzione non è formata solo dall'OL (Operation Long-word) ma anche da EL (Extension Long-word)

Diretto[modifica | modifica sorgente]

Implicito[modifica | modifica sorgente]

L'opcode di una istruzione si riferisce già ad un certo particolare dato: si tratta in genere di istruzioni speciali.

Con registro[modifica | modifica sorgente]

L'istruzione specifica è contenuta in uno dei registri della CPU che essendo interni al processore permettono un accesso veloce. Lo svantaggio di questo indirizzamento consiste nella limitata quantità di registri (solo 8 da R0 a R7).

Immediato[modifica | modifica sorgente]

Il dato è presente in memoria nella locazione immediatamente successiva all'istruzione: è parte integrante dell'istruzione stessa. Non utilizza registri ma viene o specificato nell'istruzione il valore del dato oppure viene utilizzata una variabile che contiene il dato in memoria.

Assoluto[modifica | modifica sorgente]

Questo tipo di indirizzamento viene utilizzato se i dati hanno una posizione fissa nella memoria. Risulta essere più lento del Diretto con Registro perché anche se la modalità di accesso al dato è la stessa in questo caso si sta utilizzando un dato contenuto in memoria e non nei registri di CPU

Indiretto[modifica | modifica sorgente]

Exquisite-kfind.png Per approfondire, vedi Indirizzamento indiretto.

L'istruzione specifica un registro della CPU (registro indice) che contiene l'indirizzo di memoria del dato necessario.

Assoluto indiretto[modifica | modifica sorgente]

In questo caso l'indirizzo contenuto nell'istruzione non contiene l'operando da utilizzare, ma l'indirizzo all'operando stesso. È una sorta di puntatore al dato richiesto. l'inidirizzo puntatore che è contenuto nell'istruzione è memorizzato nell'EL

Con registro indice[modifica | modifica sorgente]

L'istruzione contiene sia un indirizzo immediato che l'indicazione di un registro: la CPU carica il dato dall'indirizzo ottenuto sommando il valore immediato al valore del registro.

Autorelativo[modifica | modifica sorgente]

L'istruzione contiene un dato immediato che viene sommato al valore del registro IP per ricavare l'indirizzo da cui caricare il dato necessario.

Con spiazzamento[modifica | modifica sorgente]

Nell'istruzione sono contenuti un dato in complemento a due e l'identificativo di un registro. La somma di questi due dati darà come risultato l'indirizzo fisico dell'operando.

Predecrementante[modifica | modifica sorgente]

Questo tipo di indirizzamento è utile nella scansione di array o dati in sequenza perché prima di accedere al dato decrementa il suo valore (dell'indirizzo e non del dato stesso).

Postincrementante[modifica | modifica sorgente]

Opposto al precedente questo indirizzamento prima legge il dato e poi incrementa il valore dell'indirizzo della dimensione specificata (Byte, Word o Long-word)

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica