Ho letto ogni tanto sulle macchine virtuali di linguaggi di programmazione come Java, Python e Lua. Hanno tutti una nozione di bytecode, in cui il codice sorgente è tradotto e che è excutable su una macchina virtuale (basato su registro o stack).
Ora su un'architettura x86, tutto il codice risiede nella RAM che è indirizzabile usando lo spazio degli indirizzi della CPU. Un registro puntatore di istruzioni punta alla posizione nella memoria attualmente eseguita. I salti modificano questo registro dei puntatori delle istruzioni, ma fondamentalmente il software in memoria è linearizzato in un unico pezzo di RAM.
Con le macchine virtuali, non ne sono così sicuro. Prima di eseguire la macchina virtuale, tutto il bytecode viene copiato / collegato insieme in un array contiguo con tutte le istruzioni? Oppure la VM conserva vari moduli in diverse pagine bytecode che vengono scambiate / scambiate, se necessario?