Duda - Concepto de Maquina Virtual

Iniciado por $Edu$, 22 Abril 2012, 22:00 PM

0 Miembros y 1 Visitante están viendo este tema.

$Edu$

He estado leyendo un tutorial de ASM muy bueno que me pasaron, y estoy por el principio donde explica conceptos basicos y me explicaron que la virtual machine es como un programa programado en un lenguaje L0 que interpreta el codigo escrito en el lenguaje L1 , que este es mas facil de entender.
Es decir, como Java que tiene su Java Virtual Machine y creo que funciona asi:

- Escribimos el codigo en Java
- Compilamos el codigo escrito a un codigo entendible por la Java Virtual Machine.
- Y la JVM se encarga de pasarlo a codigo maquina.

Con esto ganamos que no importa el procesador que sea, mientras este instalado el JVM en el SO, podran correr las app en Java.

Esto es asi?

Es que si es asi.. en que esta escrito la JVM? a puro 1 y 0 lo dudo xD

Si alguien me explica esto le agradezco muchisimo, tengo mas dudas pero por ahora eso.


----------------------------------------------------------------------------------------
Las otras dudas son depende que me contesten, como que pasa con vb.net entonces, y con lenguajes como C y vb6 que no hay que instalar nada para que corran las apps (cual es en este caso la maquina virtual? el mismo SO? )

Anoto porque despues me olvido xD

Saludos!

Eternal Idol

La JVM esta en C/C++ y es compilada para cada plataforma soportada. No hay maquina virtual en el caso de lenguajes compilados como C.

http://en.wikipedia.org/wiki/Just-in-time_compilation
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

$Edu$

Bien si, pero en que esta codeada la JVM? tal vez en C ponele.. y lenguajes como C no necesitan de maquina virtual porque se compilan directamente a codigo maquina. El compilador de C se fija que tipo de procesador es para saber de que forma compilar? digo por si lo pasa a ASM o directamente lo pasa a ISA? tal vez tiene que hacer esa verificacion de que tipo de procesador es de todos modos.

Digo lo de verificar porque cada procesador funciona distinto, distintos registros, etc, y segun entiendo C es multiplataforma entonces no entiendo bien el porque.

Eternal Idol

Cita de: $Edu$ en 22 Abril 2012, 23:33 PM
Bien si, pero en que esta codeada la JVM?

Si, la JVM esta en C/C++.

Cita de: $Edu$ en 22 Abril 2012, 23:33 PMEl compilador de C se fija que tipo de procesador es para saber de que forma compilar?

A menos que sea un compilador cruzado siempre compilas a la plataforma en ejecucion, no hay mucha historia ahi ...

Cita de: $Edu$ en 22 Abril 2012, 23:33 PMdigo por si lo pasa a ASM o directamente lo pasa a ISA? tal vez tiene que hacer esa verificacion de que tipo de procesador es de todos modos.

Da igual, assembly no es portable, cada uno esta atado a su procesador.

Cita de: $Edu$ en 22 Abril 2012, 23:33 PMDigo lo de verificar porque cada procesador funciona distinto, distintos registros, etc, y segun entiendo C es multiplataforma entonces no entiendo bien el porque.

Java es multiplataforma por la maquina virtual que lo interpreta: UN BINARIO, MUCHAS PLATAFORMAS. C es multiplaforma compilando: UN BINARIO POR PLATAFORMA.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

$Edu$

Gracias! pero entonces existen compiladores de C especiales para cada tipo de procesador que uses?

Mi gran duda es esa.. que si cada procesador funciona distinto, como hace el compilador o la maquina virtual para interpretar de la forma que tiene que ser para ese procesador especifico.

O el 90% de nosotros usamos procesadores x86? entonces los compiladores son especificos para esos procesadores y listo.

x64core

en assembly se llama ensamblar, en C/C++, VB, etc: compilar, si programas para x86 solo correra en ese

$Edu$

Ya ya, busque lo que me dijiste de "compilador cruzado" y creo que es eso, se encarga de eso mismo y las maquinas virtuales tambien, es decir convierten el codigo a ISA dependiendo el tipo de procesador, luego en mi carrera de ingeniero aprendere como se hace eso pero por ahora esta bien.

Si tengo razon ya entendi, y muchisimas gracias!

Edit: Gracias Raul! ando leyendo firme jaja

Eternal Idol

Cita de: $Edu$ en 23 Abril 2012, 02:12 AM
Gracias! pero entonces existen compiladores de C especiales para cada tipo de procesador que uses?

Si, no son "especiales", son compiladores y punto, los cruzados si son especiales y te permiten compilar para otras plataformas pero un compilador normal se escribe teniendo en cuenta la misma plataforma donde es escrito y sera ejecutado.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

$Edu$


Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón