Loading AI tools
Da Wikipedia, l'enciclopedia libera
Nell'ambito della programmazione, l'indirizzamento è la definizione degli operandi (ad esempio, i campi dati) a cui si riferisce un'istruzione macchina. Gli operandi possono essere indirizzati in modi diversi (tipo di indirizzamento o modalità di indirizzamento), ad esempio specificandoli direttamente nell'istruzione o facendo riferimento a un indirizzo di memoria. La modalità di indirizzamento da utilizzare è determinata dal codice dell'operazione e dalle informazioni sugli operandi contenute nell'istruzione macchina solo in forma codificata.
Nella programmazione in linguaggio assembly, il programmatore stesso determina il tipo di indirizzamento, selezionando determinati codici di operazione (e i parametri associati). Quando si utilizzano linguaggi di programmazione superiori, le istruzioni macchina sono generate automaticamente dai compilatori (e quindi anche i loro tipi di indirizzamento sono definiti), di solito senza l'influenza diretta del programmatore. Il processore decodifica le istruzioni macchina durante l'esecuzione ed esegue i calcoli degli indirizzi corrispondenti, oltre a caricare i dati da utilizzare nell'istruzione.
Le diverse modalità di indirizzamento sono un aspetto della progettazione dei processori. Sono definite all'interno di una determinata architettura del set di istruzioni e determinano il modo in cui l'indirizzo di memoria effettivo (quello fisico) degli operandi viene determinato/calcolato per ogni istruzione del linguaggio macchina, ad esempio utilizzando le informazioni memorizzate nei registri e/o le costanti presenti all'interno dell'istruzione macchina.
Se un'istruzione si riferisce a più operandi (campi sorgente e/o destinazione), le informazioni necessarie per l'indirizzamento sono richieste/presenti separatamente per ciascun operando. Altri parametri contenuti nell'istruzione macchina (come le informazioni sulla lunghezza degli operandi, gli indicatori di salto da istruzioni logiche come uguale o maggiore) non vengono utilizzati per l'indirizzamento in senso stretto.
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:
I metodi indiretti sono molteplici:
nel caso di indirizzamenti indiretti l'istruzione non è formata solo dall'OL (Operation Long-word) ma anche da EL (Extension Long-word)
L'opcode di una istruzione si riferisce già ad un certo particolare dato: si tratta in genere di istruzioni speciali.
L'operando è contenuto in uno dei registri della CPU che essendo interni al processore permettono un accesso veloce.
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.
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
L'istruzione specifica un registro della CPU (registro indice) che contiene l'indirizzo di memoria del dato necessario.
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
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.
L'istruzione contiene un dato immediato che viene sommato al valore del registro IP per ricavare l'indirizzo da cui caricare il dato necessario.
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.
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).
Opposto al precedente questo indirizzamento prima legge il dato e poi incrementa il valore dell'indirizzo della dimensione specificata (Byte, Word o Long-word)
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.