Calcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Formato delle istruzioni macchina[modifica]

In ambiente 8086 il formato delle istruzioni macchina è variabile, cioè le istruzioni hanno codici macchina di lunghezze diverse: al codice operativo sono riservati 1 o 2 byte, agli operandi fino a 4 byte. L'unità di controllo, dopo aver letto il primo byte dell'istruzione, deve capire la lunghezza dell'istruzione.

Primo byte[modifica]

Oltre ad accogliere una parte del codice operativo, il primo byte può contenere a seconda dell'istruzione alcuni bit particolari:

  • W: specifica se l'istruzione opera su byte (W = 0) o su word (W = 1);
  • D: specifica l'ordine degli operandi (ad. es vale 0 se il registro è l'operando sorgente o 1 se è l'operando destinazione);
  • S: specifica se l'operando immediato è rappresentato su 1 o 2 byte.

Secondo byte[modifica]

Nelle istruzioni con due operandi, il secondo byte contiene i campi MOD, REG e R/M:

  • il campo REG specifica un registro su 3 byte;
  • il campo MOD specifica il significato dell'operando R/M (ad es. se MOD vale 11, anche il secondo operando è un registro che è specificato in R/M).

Esempi di istruzioni in base alla lunghezza[modifica]

  • 1 byte: NOP, PUSH, POP
  • 2 byte: MOV AX, BX, MOV AX, [BX]
  • 3 byte: MOV AX, imm
  • 4 byte: MOV AX, var, MOV [BX], imm
  • 6 byte: MOV var, imm

Tempi di esecuzione[modifica]

Il linguaggio assembler viene usato quando è richiesto un tempo di esecuzione minimo in termini di colpi di clock e non è disponibile un compilatore sufficientemente efficiente in termini di ottimizzazione del tempo di esecuzione. I tempi di esecuzione delle istruzioni sono specificati nel manuale in base a:

  • tipo di istruzione;
  • posizione degli operandi: gli operandi in memoria richiedono un tempo di accesso maggiore di quello richiesto dagli operandi immediati, e oltretutto l'indirizzo potrebbe dover essere calcolato (es. [BX]var) o un'istruzione potrebbe richiedere un accesso sia in lettura sia in scrittura (es. ADD var, AX);
  • allineamento degli operandi in memoria: BHE

Le istruzioni lunghe occupano il processore per tutto il tempo di esecuzione, durante il quale le richieste di interrupt non vengono ascoltate.