Una máquina abstracta se define como un procedimiento para ejecutar instrucciones en algún lenguaje formal sin necesidad de una implementación física. Las máquinas de Turing son ejemplos de máquinas abstractas que no pueden implementarse en hardware real. Una máquina virtual es una máquina abstracta para la cual existe un intérprete.
2. Maquina abstracta
Puede definirse como un procedimiento para ejecutar un
conjunto de instrucciones en algún lenguaje formal.
La definición de máquina abstracta no requiere que
exista implementación de dicha máquina en
Hardware, en cuyo caso sería una máquina concreta.
De hecho, las máquinas de Turing son máquinas
abstractas que ni siquiera pueden implementarse en
Hardware.
3. Codigo Intermedio
Un programa para una maquina abstracta
Facil de Producir
o Reglas claras de como construirla
Facil de traducir al lenguaje objeto
4. Codigo de 3 direcciones
A = A*8 + B/7
temp1 = A*8
temp2 = B/7
A = temp1 + temp2
Variable temporales
5. Maquina de pila
Es un modelo computacional en el cual la memoria de la
computadora toma la forma de una o más pilas. El
término también se refiere a un computador real
implementando o simulando una máquina de pila
idealizada
6. Maquina de pila
Memoria independiente para instrucciones y datos
Toda operacion es con valores de la pila
Operaciones
Aritmetica entera
Manipulacion de pila
Control de flujo
7. Intrucciones
Push v inserta v en la pila
ValD w inserta valor de posicion w
ValI w inserta direccion de w
Pop saca valor de la pila
:= Pop y poner en direccion Pop
Copy Pop y Push-Push
8. máquina virtual
Es una máquina abstracta para la que existe un
intérprete.
Varios ejemplos de máquinas virtuales:
9. Desarrollada por Peter Landin en 1966 para
lenguajes funcionales. Posteriormente, la
implementación de lenguajes funcionales ha recurrido a
la utilización de máquinas basadas en transformación de
grafos.
Máquina de pila desarrollada para
implementar el lenguaje Pascal.
(Warren Abstract Machine). Desarrollada por
David Warren para el lenguaje Prolog en 1980.
Máquina virtual desarrollada para el lenguaje
Java.
10. La JVM se basa en la utilización de
una pila de ejecución y un repertorio de instrucciones
que manipulan dicha pila.
La máquina virtual puede dar
soporte a varios hilos de ejecución concurrente.
Un programa compilado se
representa mediante un conjunto de ficheros de código
de bytes que se cargan de forma dinámica y que
contienen una especificación sobre el comportamiento
de una clase
11. Los
ficheros class contienen información sobre el
comportamiento del módulo que puede verificarse antes
de su ejecución.
La máquina integra
un recolector de basura, liberando al programador de
gestionar la memoria dinámica.
La máquina ha sido
diseñada para ejecutar programas Java, adaptándose
fuertemente al modelo de objetos de Java.