Il formato di un'istruzione stabilisce il numero e le funzioni dei campi in cui l'istruzione è suddivisa.
Al momento della progettazione si decidono:
- l'insieme o repertorio delle istruzioni eseguibili dal calcolatore
- il formato delle istruzioni, ossia la suddivisione in campi
- la codifica delle istruzioni, ossia l'assegnazione di funzionie bit ai campi
- la potenza delle singole istruzioni
Formato delle istruzioni:
- codice operativo (opcode)
- riferimento operando/i sorgente
- contenuti in memoria o nei registri ad uso generale della CPU
- riferimento operando destinazione
- riferimento all'istruzione successiva (raro, perché per questo scopo esiste già il PC)
Nel formato dell'indirizzo sono presenti fino a tre campi:
tre campi: due per gli operandi sorgente, uno per l'operando destinazione
formato |
significato |
op A B C |
A < = B op C |
svantaggio: istruzioni lunghe
due campi: due per gli operandi sogente, uno dei due per l'operando destinazione
formato |
significato |
op A B |
A < = A op B |
svantaggio: è necessario utilizzare un'altra istruzione per memorizzare l'operando che viene perso
un campo: l'altro operando, che si trova nel registro accumulatore, è riferito implicitamente
formato |
significato |
op A |
Acc < = Acc op A |
dette anche istruzioni parzialmente implicite
nessun campo: vengono usati due registri accumulatori, oppure due posizioni dello stack
formato |
significato |
note |
op |
Acc < = Acc1 op Acc2 |
Acc = accumulatori |
op |
T < = T op T-1 |
T e T-1 sono elementi consecutivi dello stack |
L'insieme delle istruzioni:
- definisce le funzionalità della CPU
- permette al programmatore di controllare la CPU
Quando si sceglie il tipo di istruzione, bisogna scegliere anche il tipo di dato
da utilizzare. Anche questo avviene al momento della progettazione. Altri aspetti
che, in fase di progettazione, influenzano la scelta della rappresentazione
migliore (cablata o microprogrammata):
- tipi di dati
- registri
- indirizzamento
Vediamoli più nel dettaglio:
- tipi di dati
- numeri
- caratteri
- dati logici
- ad esempio la suddivisione di una stringa in bit, come nel caso delle operazioni in virgola mobile, per ottenere gruppi di bit con significati diversi.
Modalità di indirizzamento
%DRAWING{immediato}%
L'operando è una parte effettiva dell'istruzione. E' la forma più semplice di indirizzamento; non ci sono riferimenti in memoria. Può essere utilizzata per definire ed usare costanti, oppure per inizializzre variabili.
- indirizzamento (assoluto) diretto
In questo caso, il campo indirizzo contiene l'indirizzo effettivo dell'operando. Anche questa è una semplice modalità di indirizzamento; richiede un solo riferimento in memoria. Lo svantaggio è la dimensione ristretta dello spazio indirizzabile.
il campo indirizzo si riferisce ad una parola di memoria contenente l'indirizzo dell'operando. Il vantaggio ottenuto da questo approccio è che, con parole di memoria di lunghezza n, può essere indirizzato un intervallo di ampiezza 2^n; tuttavia sono richiesti due riferimenti alla memoria.
- indirizzamento mediante registro
è simile all'indirizzamento assoluto, ma è più rapido perché il tempo di accesso ai registri della CPU avviene a velocità superiori rispetto all'accesso in memoria. Di solito il campo indirizzo che si riferisce ad un registro è formato da 3 o 4 bit, quindi possono essere riferiti 8 o 16 registri ad uso generico.
- indirizzamento mediante registro differito
è analogo all'indirizzamento indiretto, ma utilizza un riferimento in meno alla memoria.
- indirizzamento mediante registro differito indiretto
il registro contiene un'indirizzo di memoria, che contiene l'indirizzo della locazione dell'operando.
- indirizzamento mediante traslazione (spiazzamento)
è una modalità d'indirizzamento molto potente, che combina le capacità dell'indirizzamento diretto con quelle dell'indirizzamento indiretto mediante registro. E' utilizzata nell'indirizzamento:
- relativo
- con registro base
- indicizzato
Nel primo caso, il registro riferito implicitamente è il contatore di programma (PC), il cui valore (l'istruzione corrente) viene sommato al campo indirizzo per produrre l'indirizzo effettivo.
Nel secondo caso, il registro base contiene un indirizzo di memoria e il valore dello spiazzamento (solitamente un intero senza segno)si trova nel campo indirizzo. Il registro base può essere esplicito o implicito, a seconda dell'implementazione.
Nel terzo caso, l'interpretazione data al campo indirizzo è esattamente opposta a quella data per l'indirizzamento con registro base. Infatti il campo indirizzo si riferisce ad una locazione della memoria principale, e il registro a cui si fa riferimento contiene lo scostamento positivo da quell'indirizzo. Utile per l'iterazione compiuta su locazioni di memoria successive, effettuata incrementando di uno lo spiazzamento.
--
GiuseppeMacario - 12 Oct 2002