Calcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

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.