Ho difficoltà a capire la differenza tra una macchina virtuale di emulazione e un linguaggio vm. Ho iniziato con la ricerca e l'implementazione di una macchina virtuale di emulazione. Principalmente emulando architetture a 16 bit piuttosto vecchie.
Voglio ottenere le basi per una macchina virtuale di linguaggio. Entrambi i sistemi sono simili? Entrambi utilizzano architetture basate su registri e stack-based?
Ho l'impressione che un linguaggio VM sia fondamentalmente un ambiente di runtime. A seconda della complessità della VM, potrebbe avere un garbage collector, un compilatore JIT, ecc ... Questa supposizione dovrebbe essere corretta?
EDIT: Sto parlando anche di VM bytecode, ma funziona anche il codice macchina nativo.