elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Duda sobre maquina virtual
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre maquina virtual  (Leído 7,733 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Duda sobre maquina virtual
« en: 10 Diciembre 2013, 00:30 am »

Buenas! Bueno, mas de uno pensara que estoy loco hablando de maquina virtual acá,, (espero que no)  :P

Estoy repasando ASM, y ahora me surgió una duda existencial, como es que se implementan las maquinas virtuales en Windows? Según tengo entendido, un programa ASM no es portable debido a la restricción de las arquitecturas de los procesadores,,  pero un programa C++ (por ejemplo) si, porque trabaja sobre una "maquina virtual",, es esto así? En que momento se implementa esa maquina virtual?

Saludos!! Gracias!

EDITO: Aca encontre esto mismo:
Citar

Pero sigo sin entender,, EI dice esto:
Citar
A menos que sea un compilador cruzado siempre compilas a la plataforma en ejecucion, no hay mucha historia ahi ...

Entonces estamos en la misma situación de ASM, C++ tiene que ser tan portable como ASM  :silbar:


« Última modificación: 10 Diciembre 2013, 00:42 am por Vaagish » En línea

xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #1 en: 10 Diciembre 2013, 02:39 am »

Un porgrama escrito en C/C++ es portable para la arquitectura que soporte el compilador, lee las opciones de gcc y veras, pero en ASM si escribes un codigo para una arquitectura x86 y quieres crear el binario para una sparc64, pues no te va a valer ya que esas instrucciones no existen para la sparc64, tendras que escribir el codigo para esa arquitectura en C/C++ el mismo codigo vale para las dos, simplemente pon las opciones adecuadas para esa arquitectura, pero si estas en una x86 y haces un gcc estandar el binario sera para la x86 logico, y no valdra para la sparc64.

Un saludo.


En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #2 en: 10 Diciembre 2013, 17:14 pm »

O sea, yo escribo un código en C/C++ y el compilador lo traduce a código maquina (para la arquitectura en la que se este ejecutando el compilador), entonces es portable en ese sentido, ese binario se puede ejecutar en cualquier pc, con la misma arquitectura. No es necesario cambiar el código para crear el binario, a diferencia del ensamblador, que si necesita cambiar el código para las diferentes arquitecturas..

Es así? Entonces cuando entra en juego la maquina virtual descrita en los libros de ASM? O es todo hipotético?

Saludos!
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #3 en: 10 Diciembre 2013, 20:32 pm »

Me pareces que estas confudiendo cosas.

A que le llamas Maquina Virtual ?

Por ej., VMWare Workstation te permite crear maquinas virtuales.

Ahora, tambien se le suele llamar maquina virtual a los runtimes que se encargan de interpretar codigo intermedio a fin de ejecutar un programa (por ej. Java, python, .NET, etc.)

Por lo tanto, a cual te refieres?

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #4 en: 10 Diciembre 2013, 20:47 pm »

Citar
Por lo tanto, a cual te refieres?

Creo que seria mas parecido a los runtimes,, no la maquina virtual como VMWare.
Es que en el capitulo 1.2 de "Lenguaje ensamblador para computadoras basadas en Intel" da una teoría de maquina virtual.. a menos que sea del concepto de maquina virtual tipo Java del que habla, ese lo entiendo..

No encontré la pagina para mostrar,, pero seria la pagina 7, Capitulo 1.2

EDITO:Al final creo que si,, que habla de la maquina virtual como Java o .NET, pasa que los mezcla con C++ cuando hace referencia a que son lenguajes de alto nivel, pero en realidad C++ no tiene nada que ver con una maquina virtual..
« Última modificación: 10 Diciembre 2013, 20:58 pm por Vaagish » En línea

xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #5 en: 10 Diciembre 2013, 21:45 pm »

Revise ese libro no me extraña que vengas con dudas, ese libro es malo o al menos lo es para mi, creo tenerlo por aqui, cuando pueda leere eso para asi saber a que te refieres.

Un saludo.
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #6 en: 10 Diciembre 2013, 23:08 pm »

Citar
ese libro es malo o al menos lo es para mi

Mmm.. sinceramente, no se si es que sea malo el libro,, tiene buena información,, pero esa parte me enredo... cosas que pasan también..  :silbar:

Saludos!!
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Duda sobre maquina virtual
« Respuesta #7 en: 11 Diciembre 2013, 16:58 pm »

Lo que es Virtual PC, Wmware etc... serían más bien EMULADORES de la arquitectura x86/64.

Es decir, lo que hacen es emular una arquitectura. Similar a lo que hace un emulador de la sega genesis o nes, snes etc..
Una ventaja es que la arquitectura x86/64 trae un set  de instrucciones que permite hacer eso con mayor optimidad.
Por ejemplo, en el caso de una NES, el emulador lo que haria es reconocer las instrucciones del chip motorola 6502 y ejecutar la instruccion similar en x86.
En el caso de un emulador/maquina virtual x86, lo que haria es algo similar. Uno pensaria que al ser la misma arquitectura simplemente tomaria cada instruccion y la ejecutaria, pero no es asi.
Si la instruccion es por ejemplo "mov eax, 4" ningun problema, haría exactamente eso.
Pero si la instruccion es por ejemplo "jmp 0x07600" no va hacer eso. Llegas a ejecutar eso en windows y va tirar un lindo error diciendo que no es una instruccion admitida.  Es una instruccion válida de x86, pero no es válida a nivel usuario (ring3) en donde se ejecutan las aplicaciones de windows. (Instruccion de privilegio ring0/kernel). De ahí que el emulador/maquina virtual se encarga de emular esa instruccion.

Por eso mas que "maquina virtual" sería mas bien un emulador de x86. Me imagino que el término "máquina virtual" se refiere mas bien a que crea una "pc/maquina" dentro de tu pc. De ahí "máquina virtual"

 
En cambio, la máquina virtual de java, lo que hace es tomar instrucciones del binario de java (seria una especie de pseudo lenguaje maquina  universal) y ejecutar la instruccion corresponiente en la PC o en cualquier máquina host. (celular, ruter, heladera, etc..)
Es decir, lo que hace Java es complilar en una arquitectura inexistente fisicamente (ningun microchip soporta instrucciones del "binario" java) y luego emularlas en el resto de las arquitecturas utilizando la JVM. El tema es como no existe ningun microchip que ejecute java directamente, tampoco sería correcto decir que está emulando java por mas que el proceso sea parecido.

Finalmente pearl/phyton son interpretes. Es decir, a partir del código no se crea ningun "binario". Las lineas de codigo se transforman a instrucciones en run-time. No hay un binario de por medio. La ventaja es que se pueden hacer unas lineas de codigo exoticas, pero la desventaja la lentitud en el proceso.


Saludos.
« Última modificación: 11 Diciembre 2013, 17:11 pm por _Enko » En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Duda sobre maquina virtual
« Respuesta #8 en: 11 Diciembre 2013, 17:21 pm »

Gracias por responder _Enko, buena tu explicación.. mi duda era de interpretación del libro, porque como que mezcla un poco ahí, y me dio a entender que windows usaba una maquina virtual para ejecutar los programas (cosa que me parecía totalmente extraña, teniendo el loader) ya quedo claro jeje

Saludos! Y Gracias!
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Duda sobre maquina virtual
« Respuesta #9 en: 11 Diciembre 2013, 17:26 pm »

Gracias por responder _Enko, buena tu explicación.. mi duda era de interpretación del libro, porque como que mezcla un poco ahí, y me dio a entender que windows usaba una maquina virtual para ejecutar los programas (cosa que me parecía totalmente extraña, teniendo el loader) ya quedo claro jeje

Saludos! Y Gracias!
Mh... tal vez se refiere que el windows utiliza un emulador para aplicaciones de 16bit. (lo más probable que sea eso)

De nada :)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pregunta sobre Maquina virtual-virtual pc
Software
T0rete 4 2,898 Último mensaje 5 Octubre 2011, 16:10 pm
por zosemu
[Duda] Backtrack en máquina virtual
Wireless en Linux
Wofo 3 3,848 Último mensaje 30 Octubre 2012, 05:24 am
por CodeJiyu
Pregunta Sobre maquina virtual
Hacking
nightcode 4 2,547 Último mensaje 30 Diciembre 2013, 14:20 pm
por nightcode
Duda sobré máquina de rayos X para unidades Flash Monolíticas
Hardware
xknov 1 1,852 Último mensaje 1 Agosto 2019, 15:53 pm
por MCKSys Argentina
Duda sobre sincronizar VSCode con Máquina Virtual Ubuntu
Programación General
gji 4 8,038 Último mensaje 10 Agosto 2022, 18:38 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines