Sunteți pe pagina 1din 17

[ESCRIBA EL NOMBRE DE LA COMPAA]

UNIVERSIDAD AUTONOMA DE TLAXCALA FACULTAD DE CIENCIAS BASICAS INGENIERIA Y TECNOLOGIA

Proyecto: Reporte mquina virtual HEC Materia: Software de sistemas


30/04/2013

Integrantes: Mariela Cervantes Lpez Elizabeth Hernndez Morales Yesenia Velzquez Corona Antonio Zacapa Hernndez

Grupo: 6 semestre B Proyecto realizado en base al libro Virtual Machine Design and Implementation in C/C++

Introduccin:
Como primer punto que debemos definir es el concepto de una mquina virtual el cual nos dice que es un contenedor de software aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera una computadora fsica. Una mquina virtual se comporta exactamente como una computadora fsica y contiene sus propios CPU, memoria RAM, disco duro y tarjeta de interfaz de red (NIC) virtuales (es decir, basados en software). Centrndonos en la mquina virtual HEC se dice que el sistema de tiempo de ejecucin se compone de un motor de ejecucin, un depurador a nivel de mquina, un ensamblador y una surtida variedad de otras herramientas de desarrollo, uno de los objetivos primordiales que debe construir una mquina virtual debe satisfacer tres criterios en orden jerrquico son: 1. 2. 3. Portabilidad Sencillez Rendimiento

La portabilidad es la caracterstica ms importante porque la posibilidad de trabajar con una interfaz de software uniforme, a travs de mltiples plataformas, es la principal ventaja de usar una mquina virtual, La portabilidad es tambin la prioridad ms importante en el sentido de que tuve que hacer sacrificios en trminos de simplicidad y rendimiento con el fin de lograrlo. Rara vez hay una solucin que es siempre y ptima en todas las condiciones en ingeniera de software y el rendimiento es un factor que complementa los dos primeros criterios ya que si no alcanza el ptimo rendimiento no tendr ningn sentido haber implementado la mquina virtual. Sobre el tema de lenguaje ensamblador HEC se explica ms fcilmente utilizando una metodologa evolutiva, las caractersticas bsicas del lenguaje son bastante simples y primitivos, estas caractersticas veremos a continuacin cmo paso a paso se ha ido implementando la mquina virtual junto con el lenguaje ensamblador HEC, as como su funcionamiento y capturas de pantalla para una mejor comprensin de los procesos que su hallan hecho.

Implementando la mquina virtual HEC


El siguiente proyecto es el resultado de la correcta lectura y desenglose del libro que nos fue proporcionado por la MC Norma Snchez Snchez, su

implementacin llevo un tiempo de 8 das a partir de la fecha de solicitud. Los archivos que el libro proporcion los tomamos de un link en internet el cual posea los cdigos fuente del CD que trae cada libro Virtual Machine Design and
Implementation in C/C++ . Una vez aclarado esto procedemos a explicar el proceso que nos llev como equipo a la satisfactoria implementacin de la Mquina Virtual HEC

En base a los conocimientos que obtuvimos del libro, decidimos llevar paso a paso la implementacin de la mquina virtual, para ello seguimos los siguientes pasos que muestra el captulo 3 del libro mezclado con el 8 lo cual mostramos aqu:
1. Abrir una ventana de comandos DOS 2. Ejecute el siguiente archivos por lotes en el orden especificado bldall.bat mvbin.bat

Esto cre todos los binarios nativos win32 y los mueve a la \ win32 \ bin.

Comenzando la ejecucin de la Mquina HEC

Nos gustara aclarar antes que nada lo importante que es acceder antes desde cmd del sistema al fichero que el libro nos proporciona (osea hec\win32\x.y.z directorios)

Pasos a seguir una vez realizado el punto anterior


Para archivos de ensamblador Para todos los .asm nosotros encontramos que debamos hacerlo desde el hasm, por cierto un dato curioso es que ste es el ensamblador ms sencillo que hay de Windows, por ese medio es que comprendimos el fin de los archivos .asm. Aqu nos surgi una gran controversia puesto que no tenamos conocimiento sobre como leerlos, as que primero verificamos si tenan errores mediante las opciones que nos desglosa aqu:

Por lo que podemos ver, dentro del ensamblador nos salen 4 opciones las cuales son: 1. Coloca d si quieres que no se muestre la informacin de depuracin 2. Coloca e=XXX con la cantidad de errores que quieres se muestren y reporte 3. Coloca l si deseas que se genere una lista de archivos que maneja 4. Coloca o=xxx con el nombre del archivo de salida (unidad de compilacin) Una vez entendido esto muestro como maneje el formato que tiene la mquina virtual y que en el captulo 3 nos muestra. Para lograr que se ejecute todo hay que seguir este formato: HASM (-Opcin) NOMBREDEARCHIVO.ASM para abrir y mostrar depuracin HASM NOMBREDEARCHIVO.ASM para depurar sin mostrarlo

Para los RUN El libro nos comenta: -Para ejecutar una aplicacin, tendr que ejecutar un comando similar al siguiente:.\ .. \ bin \ hecvm timedate.RUN El formato para correr es el siguiente: HECVM NOMBREARCHIVO.RUN d

Una vez especificado y dependiendo al archivo que se abri es entonces que se har para cada uno de los archivos .RUN que poseemos

Alloc.RUN

En ste es muy claro ver como se ejecutan cada una de las instrucciones que da el asm brindado. Recordamos que los .RUN son resultado de un ensamblaje de los .asm los cuales podemos modificar desde bloc de notas sin problema alguno, las lneas de color hace referencia a cada instruccin ejecutada adems de su cdigo correspondiente en el .asm En alloc podemos ver cmo nos reserva segmentos de heap para cada operacin que ocuparemos dentro de la mquina virtual como tal, es fcil ver el uso de las instrucciones contradas y sus parmetros aceptados

Cmdline.RUN
El siguiente cdigo cmdline simplemente es para direccionar nuestro almacenamiento a la computadora local a la cual se est haciendo referencia. A pesar de que no imprime como tal su funcionamiento se nos hizo interesante el uso de los argumentos que regresa por ejemplo O en el caso de terminar.

FileIO.RUN
Dentro de ste cdigo pudimos encontrar cosas muy importantes para los comandos adems de la biblioteca math.c (sin contar la reserva de memoria para estos elementos vista con la primer lnea de color amarillo) debido a que da por entendido la diferencia entre flotantes (primer lnea de rojo), enteros (segunda lnea color rojo) y cadenas (lnea azul).

En el caso de las lneas naranja (crea un archivo.asm), la amarilla (inserta un dato numrico) y verde (inserta datos aleatorios) muestran cmo se pueden crear archivos a partir de ste cdigo los cuales sern generados por la VM.

Ipc1.RUN
Uno de los programas ms completos para nuestra consideracin el cual reserva un fragmento de memoria(lnea color rosa), luego procede a imprimir en pantalla la palabra mine para decirnos que ya es parte de nuestra posesin(lnea color amarillo), de inmediato nos pire la lectura de una cadena cualquiera para leerla como tal(como muestra la lnea azul primer prrafo) y finalmente imprimirla(como lo muestra la lnea azul cielo)

Dentro de esto podemos notar 3 cosas importantes, una vez que ya se separ la memoria en programas que ya mencion ms arriba entonces necesitamos separar pequeos fragmentos para nosotros, me manera inmediata se lee una cadena la cual se almacena en el buffer de nuestra mquina y cmo podemos ver en el cdigo ensamblador lo mueve a registros.

Ipc2.RUN
ste archivo muestra las posibilidades tan grandes que tiene la mquina virtual por ejemplo en el manejo de direcciones de Red, IP, Mscaras. Con ello y considerando el ao en el que se desarroll la mquina virtual, es muy bueno el haber implementado stas opciones, en nuestro caso al estar conectados a una red con acceso a internet nos fue posible el mostrar como el programa accesa a los recursos de nuestra computadora y con ellos resuelve direcciones IP.

La lnea azul muestra en donde se aloja nuestra aplicacin La lnea naranja nos muestra datos como el nombre del host en el que se encuentra nuestra computadora La lnea rosa nos muestra la direccin id de ese host Finalmente la lnea blanca nos muestra el nombre del host asociado con la IP

Memtest.RUN
Es un archivo el cual muestra los estados de la memoria, por ejemplo en otras aplicaciones va a ser muy visible y comn encontrarnos stas direcciones

Native.RUN

ste archivo se lleva todas las libreras necesarias de los programas. Traducindolas a cdigo nativo

Procmgmt.RUN
ste programa tiene como fin el crear un archivo de bloc de notas con registros los cuales almacenan valores de punto flotante, entre esto podemos ver un ejemplo de cmo se almacenan y tiene la caracterstica de que puede leerlos

1. Con la lnea verde podemos ver que nos ejecuta un nuevo archivo de bloc de notas 2. En la lnea color morado podemos ver una instruccin en la cual la mquina virtual espera que cerremos la aplicacin para entonces proceder a llevarla a memoria 3. La lnea naranja es otra instruccin para abrir el bloc de notas pero ahora usando otro tipo de instruccin diferente, una vez terminada pasar a ejecutar la lnea rosa 4. Con la rosa tenemos una llamada a la memoria donde se va a imprimir lo que tiene dentro.

Timedate.RUN
Con ste cdigo podemos ver como se obtiene de distintas maneras el tiempo de la mquina en la cual se est trabajando, tambin hace la consulta a un reloj del estilo UTC, quiz no se vea muy importante a la vista, mas sin embargo es necesario para saber el tiempo en que se ejecutan las tareas.

Lnea amarilla apunta a un segmento de memoria Lnea rosa solicita la hora UTC Lnea azul Descompone el tiempo UTC en horas minutos y segundos Lnea Roja traduce el tiempo local Lnea azul marino hace una cadena con el tiempo real y lo hace de manera entendible para nosotros Lnea gris hace lo mismo solo que con la hora que se le fue asignada previamente no de nuestra mquina

DEBBUG
Quiz la parte ms entendible en tiempo de ejecucin (aunque es previamente y paso por paso), en ste ejemplo es que obvio el hecho de que mostrar paso a paso (Y MIENTRAS TECLEEMOS T) Como es que se est ejecutando y entendiendo cada una de las instrucciones lnea por lnea, por ejemplo en el caso de alloc.RUN y alloc.asm voy mostrando con cada lnea y de distinto color el paso en el que se est, adems de un desglose muy especfico de lo que se est realizando.

HASHTBL.EXE, TREE.EXE y LIST.EXE


En stos archivos estn las construcciones que nos especifica el captulo 4 y 5 esto es importante debido a que el debbuger dosdbg.exe los necesita y comienza a mandarlos a system32 y con eso tener el orden correcto.A continuacin ingresamos la ejecucin de cada uno de stos archivos adems de mostrar el proceso que hicieron, por ejemplo en hashtbl crea una lista con identificadores para cada una de las instrucciones en list menciona todo lo que se posee y en tre est el manejo de datos y memoria.

Ejemplo 1
Uso de nmeros, caracteres, enteros, flotantes, si se consideran las opciones que tiene ms arriba es entonces que si ingresamos un nmero es entonces que despus se traduce en distintos tipos, osea carcter en ASCCII .

Ejemplo 2
El siguiente ejemplo sirve para ver cmo cada instruccin es ejecutada en ejemploc de suma, resta, multiplicacin y divisin como el captulo de Aritmtica 7, cualquier duda que surja puede consultarse dentro de ese captulo y el tres en la parte de manejo de instrucciones.

La aritmtica de enteros en primer lujar, las instrucciones tratan a todos los operandos como valores con signo en segundo, se produce un desbordamiento numrico, no hay excepciones lanzadas. Este ejemplo ilustra estos dos puntos. En este programa se toma el mayor valor posible de enteros y cuando se incrementa. Cuando se ejecuta se aade uno al valor ms grande posible con signo positivo hizo dar vuelta y cambiar de signo.

Conclusin:
La implementacin de la mquina virtual HEC no ha sido un trabajo fcil, fue un gran trabajo el poderla hacer correr, as como entender su funcionamiento y el crear los ejemplos para que se pueda entender mejor, pero al lograr comprender su funcionamiento y como poder interactuar con la maquina pudimos ver su correcto funcionamiento, las caractersticas y el modo de operacin con los cuales paso a paso se fue comprendiendo y mejorando la mquina para que su funcionamiento sea el ms ptimo, con algunos ejemplos implementados por nosotros se comprendi mejor los procesos que ocurren en una mquina virtual con lenguaje ensamblador, los registros, direccionamientos de memoria etc., nuestros ejemplos fueron de conversin de formatos de nmeros de un tipo por ejemplo entero a un formato doble y el segundo fue que toma el valor mas alto el cual como incrementa en valor en 1 este primero se volver negativo. Fue un trabajo complicado pero con dedicacin e investigacin se pudo lograr hacerla funcionar e implementar algunos ejemplos..

S-ar putea să vă placă și