Ho cercato di capire come funzionano i linguaggi di programmazione e alcuni di essi hanno le cosiddette macchine virtuali. Capisco che questa è una forma di emulazione del linguaggio di programmazione all'interno di un altro linguaggio di programmazione, e che funziona come un linguaggio compilato, con una pila. Ho capito bene?Come funziona una macchina virtuale?
Con la condizione che ho fatto, ciò che mi dà fastidio è che molti linguaggi non compilati consentono variabili con sistemi di tipo "liberale". In Python, per esempio, io posso scrivere questo:
x = "Hello world!"
x = 2**1000
stringhe e grandi numeri interi sono completamente indipendenti e occupano diverse quantità di spazio in memoria, così come può questo codice anche essere rappresentato in un ambiente stack-based? Cosa succede esattamente qui? X ha indicato un nuovo posto sullo stack e i dati della stringa precedente non sono stati rimandati? Queste lingue non usano uno stack? Altrimenti, come rappresentano le variabili internamente?
Grande prima domanda! – samoz
Domanda correlata: http://stackoverflow.com/questions/688803/how-does-a-register-based-virtual-machine-work – lothar