Pregunta

Si estoy en lo correcto en la comprensión de lo que he leído una máquina virtual es esencialmente un compilador de código intermedio. Pero nunca se dice que Delphi (como un ejemplo de código no administrado) se ejecuta en su compilador. ¿Sería menos confuso acaba de describir una máquina virtual como un compilador?

¿Fue útil?

Solución

No es un compilador que traduce el código fuente a código de máquina virtual (código de bytes), y un compilador JIT para el código VM -> código máquina. La máquina virtual es el estándar que el código fuente -> VM objetivos del compilador, y no necesariamente a la aplicación específica. Podría ser implementado con una máquina real, en cuyo caso no tendría que hacer la compilación JIT.

Una máquina virtual está más cerca de un emulador (o si su JIT es realmente estúpido, un intérprete:))

Otros consejos

Un compilador tradicional hace una conversión de una sola vez desde el código fuente a código objeto. Una máquina virtual como la JVM utiliza una mezcla de interpretación (de código de bytes) y un justo a tiempo de compilador que compila segmentos de código de bytes a código nativo. No es preciso describir una máquina virtual en general como un compilador.

Creo que lo que la gente está tratando de capturar con la terminología es que hay una capa adicional de abstracción con las máquinas virtuales. Por lo tanto, el mismo código, pero la máquina virtual para cada plataforma permite que se ejecute en esa plataforma específica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top