A differenza della precedente, questa seconda tecnica, come anche la terza,
richiede l'esistenza di una macchina gia' realizzata (macchina ospite).
La tecnica interpretativa consiste nel realizzare tutte le componenti
della macchina (cioe' tutti gli algoritmi e le strutture dati che li definiscono)
mediante programmi e strutture dati del linguaggio della macchina ospite.
Di questo tipo di realizzazione ne esistono in realta' due tipi:
- emulazione via firmware
- emulazione via software
In linea di principio queste sono entrambi emulazioni software, la differenza
consiste nel tipo della macchina ospite (microprogrammata nel primo caso)
e nella realizzazione fisica della memoria che contiene i programmi che realizzano
la le strutture dati e gli algoritmi della macchina.
Nel primo caso la macchina ospite e' realizzata in harware e la parte
programmi della memoria di tale
macchina e' una memoria ad alta velocita', solitamente di sola lettura,
realizzata sullo stesso chip che contiene le altre componenti della macchina.
Una tale macchina ospite e' detta microprogrammata ed e' estremamente semplice
(le operazioni non sono altro che semplici operazioni su registri).
I programmi di tale macchina ospite che realizzano gli algoritmi e le strutture
dati della macchina che si vuole realizzare vengon chiamati microprogrammi.
Nel secondo caso invece non c'e' alcun vincolo su come sia realizzata la macchina
ospite (e in particolare la sua memoria).
Le due tecniche di emulazione differiscono sostanzialmente nelle prestazioni della
macchina astratta emulata, in particolare rispetto alla velocita' di esecuzione,
che nel caso firmware e' paragonabile a quella della realizzazione in hardware puro.
Ovviamente la realizzazione nel caso firmware offre minore flessibilita' in caso
di future modifiche o estensioni della macchina realizata.
E' bene sottolineare che la realizzazione tramite firmware, molto in voga fino a non
molti anni fa, sta lentamente tramontando, o si limita a porzioni sempre piu' piccole
della macchina da realizzare.
Questo a causa dell'affermarsi dei principi che sono alla base delle architetture RISC.
Quando parliamo di realizzazione interpretativa e' bene fare sempre
attenzione, quando parliamo di interprete, a quale macchina facciamo riferimento:
la componente interprete della macchina che vogliamo ottenere
e' realizzata da un programma scritto nel linguaggio della macchina ospite
la cui esecuzione e' affidata alla componente interprete della macchina ospite.