3. Un uso popular de los emuladores es el de imitar la experiencia
de los videojuegos de máquinas
recreativas o videoconsolas en computadoras personales, o el
poder ser jugados en otras videoconsolas. La emulación de
videojuegos de sistemas antiguos (abandonware) en las
modernas computadoras personales y videoconsolas de hoy día
resulta generalmente más cómoda y práctico que en los
dispositivos originales.
4. La mayoría de los emuladores solo emulan una determinada
configuración arquitectura de hardware - si el sistema de explotación
( o sistema operativo) también se requiere para emular cierto programa
entonces ha de ser emulado también. Tanto el sistema de explotación
como el programa deben ser interpretados por el emulador, como si
estuviese ejecutándose en el equipo original. Aparte de la
interpretación del lenguaje de la máquina emulada, es preciso emular
el resto del equipo, como los dispositivos de entrada y salida, de
forma virtual: si escribir en una región específica de la memoria debe
influir en el contenido en pantalla.
5. Típicamente, un emulador se divide en módulos que corresponden de
forma precisa a los subsistemas del equipo emulado. Lo más común, es
que un emulador este compuesto por los siguientes módulos:
• Un emulador de la unidad central de procesamiento.
• Un módulo para el subsistema de memoria.
• Varios emuladores para los dispositivos de entrada y salida.
Lo más común es que los buses no sean emulados, por razones de
simplicidad y rendimiento, y para que los periféricos virtuales se
comuniquen directamente con la UCP y los subsistemas de memoria.
6. El simulador de la unidad central de procesamiento (CPU) es a menudo
la parte más compleja de un emulador. Muchos emuladores son escritos
utilizando simuladores de CPU "preempaquetados", para así poder
realizar una emulación fiel y eficiente de una máquina específica.
El simulador de CPU más simple sería un intérprete informático, que
sigue el flujo de ejecución del código de programación emulado y, por
cada instrucción de código de la máquina emulada, ejecuta en el
procesador en que se carga, instrucciones semánticamente equivalentes
a las originales
7. La mayoría de los emuladores, como dicho anteriormente, no emulan el sistema
principal bus; cada dispositivo de entrada y salida es tratado a menudo como un
caso especial, y no existe una interfaz constante para los periféricos virtuales.
Aún los emuladores que tratan cada dispositivo como un caso especial poseen una
infraestructura básica en común para ello:
• manejando interruptores, por medio de procedimientos que fijen banderas
legibles por el simulador del CPU siempre que un interruptor sea levantado,
permitiendo al CPU virtual "convertir los interruptores (virtuales)".
• escribiendo y leyendo de la memoria física, por medio de dos procedimientos
similares mientras este lidia con la memoria lógica (contrario a este último, el
anterior puede comúnmente ser echado a un lado, y en su lugar se emplean las
referencias directas al arreglo de memoria)
8. Los emuladores arrancan imágenes ROM, o sea el contenido
de los cartuchos, disquetes o cintas que se usaban con los
sistemas antiguos. Físicamente en las PC las ROM
son archivos binarios que se pueden cargar en la memoria. Es
decir, el emulador es un programa que hace las funciones de
una consola, por ejemplo la Game Boy Advance o una PDA,
y la ROM es un archivo que hace de cartucho, CD-ROM, o
cinta.
9. También hay una vertiente en la emulación que puede ser
realizada por virtualización, consistente en crear una capa de
abstracción, pero ejecutando instrucciones en una máquina del
mismo tipo, y da como resultados obtener una computadora
dentro de otra. Ejemplos de esto son:
• VMware
• Microsoft Virtual PC
• Bochs
• VirtualBox