Calcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

Da WikiAppunti.
Jump to navigation Jump to search
Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è B8. Formato delle istruzioni macchina, tempi di esecuzione.
Gtk-go-back-ltr.svg  B7. Istruzioni per il controllo del processoreGtk-home.svg  Calcolatori elettronici (Assembler 8086)

Formato delle istruzioni macchina[modifica | modifica sorgente]

3 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 | modifica sorgente]

4 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 | modifica sorgente]

5 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 | modifica sorgente]

  • 13 1 byte: NOP, PUSH, POP
  • 15 2 byte: MOV AX, BX, MOV AX, [BX]
  • 17 3 byte: MOV AX, imm
  • 18 4 byte: MOV AX, var, MOV [BX], imm
  • 20 6 byte: MOV var, imm

Tempi di esecuzione[modifica | modifica sorgente]

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

Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è B8. Formato delle istruzioni macchina, tempi di esecuzione.
Gtk-go-back-ltr.svg  B7. Istruzioni per il controllo del processoreGtk-home.svg  Calcolatori elettronici (Assembler 8086)