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
    • come sopra
  • 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
      • ad esempio il BCD
    • caratteri
      • ad esempio l'ASCII
    • 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

  • indirizzamento immediato

%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.

  • indirizzamento indiretto

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:

  1. relativo
  2. con registro base
  3. 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

Topic attachments
I Attachment History Action Size Date Who Comment
GIFgif assoluto_diretto.gif r1 manage 3.2 K 2002-03-31 - 16:06 GiuseppeMacario  
GIFgif differito_indiretto.gif r1 manage 6.3 K 2002-04-02 - 07:54 GiuseppeMacario  
Unknown file formatdraw immediato.draw r1 manage 0.6 K 2002-10-12 - 17:28 GiuseppeMacario  
GIFgif immediato.gif r2 r1 manage 0.6 K 2002-10-12 - 17:28 GiuseppeMacario  
GIFgif indiretto.gif r1 manage 3.9 K 2002-03-31 - 16:07 GiuseppeMacario  
GIFgif indirizzamento.gif r2 r1 manage 18.9 K 2002-03-31 - 15:30 GiuseppeMacario  
GIFgif mediante_registro.gif r1 manage 3.6 K 2002-03-31 - 16:07 GiuseppeMacario  
GIFgif registro_differito.gif r1 manage 5.2 K 2002-03-31 - 16:07 GiuseppeMacario  
GIFgif spiazzamento.gif r1 manage 6.5 K 2002-04-02 - 07:54 GiuseppeMacario  
Edit | Attach | Watch | Print version | History: r7 < r6 < r5 < r4 < r3 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r7 - 2002-10-12 - GiuseppeMacario





 
ATTENZIONE: per lavori ACEA sulla cabina elettrica il server resterà spento
nei giorni 19-22 agosto.
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback