Metodo di indirizzamento
# Metodo di indirizzamento

Con metodi di indirizzamento, in informatica, si indicano le modalità con cui un microprocessore consente alle istruzioni di accedere agli operandi durante il ciclo di fetch-execute.

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.

## La codifica

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)

## Modalità diretta

### Implicito

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

### Con registro

L'operando è contenuto in uno dei registri della CPU che essendo interni al processore permettono un accesso veloce.

### Immediato

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

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

## Modalità indiretta

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

### Assoluta indiretta

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

### Con registro indice

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.

### Autorelativa

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

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

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

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

