Calcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
CopertinaCalcolatori elettronici/Copertina
  1. L'evoluzione dei sistemi di elaborazioneCalcolatori elettronici/L'evoluzione dei sistemi di elaborazione
  2. Il progetto di circuiti logiciCalcolatori elettronici/Il progetto di circuiti logici
  3. I processoriCalcolatori elettronici/I processori
  4. Architettura 8086Calcolatori elettronici/Architettura 8086
  5. Unità di controlloCalcolatori elettronici/Unità di controllo
  6. Introduzione alle memorieCalcolatori elettronici/Introduzione alle memorie
  7. Le memorie ad accesso casualeCalcolatori elettronici/Le memorie ad accesso casuale
  8. Le memorie cacheCalcolatori elettronici/Le memorie cache
  9. Le memorie ad accesso serialeCalcolatori elettronici/Le memorie ad accesso seriale
  10. La memoria virtualeCalcolatori elettronici/La memoria virtuale
  11. La gestione dei dispositivi input/outputCalcolatori elettronici/La gestione dei dispositivi input/output
  12. Intel 8255Calcolatori elettronici/Intel 8255
  13. Intel 8259Calcolatori elettronici/Intel 8259
  14. I busCalcolatori elettronici/I bus
  15. Le architetture a pipelineCalcolatori elettronici/Le architetture a pipeline
  16. Assembler 8086
IntroduzioneCalcolatori elettronici/Introduzione
  1. Informazioni generaliCalcolatori elettronici/Informazioni generali
  2. Istruzioni di trasferimento datiCalcolatori elettronici/Istruzioni di trasferimento dati
  3. Istruzioni aritmeticheCalcolatori elettronici/Istruzioni aritmetiche
  4. Istruzioni per il controllo del flussoCalcolatori elettronici/Istruzioni per il controllo del flusso
  5. Istruzioni per la manipolazione dei bitCalcolatori elettronici/Istruzioni per la manipolazione dei bit
  6. Le procedureCalcolatori elettronici/Le procedure
  7. Istruzioni per il controllo del processoreCalcolatori elettronici/Istruzioni per il controllo del processore
  8. Formato delle istruzioni macchina, tempi di esecuzioneCalcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

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: Human-edit-redo.svg BHE

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