Documentos de Académico
Documentos de Profesional
Documentos de Cultura
�ndice
1 Usos
2 Emulaci�n
2.1 Estructura
2.1.1 Simulador de CPU
2.1.2 Dispositivos de entrada y salida
2.2 Sistema de ROM
3 Virtualizaci�n
4 Emulador de videoconsola
5 V�ase tambi�n
6 Enlaces externos
Usos
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. Sin
embargo, puede ser requerido a los creadores de emuladores una licencia de software
para escribir programas originales que dupliquen la funcionabilidad de la ROM y
BIOS del hardware original, lo que com�nmente se conoce como high-level emulation o
emulaci�n de alto nivel.
Otro uso com�n es el de emular sistemas operativos obsoletos, o vigentes para otra
m�quina o dispositivo, para utilizar programas compatibles con estos sistemas
operativos.
Emulaci�n
En sentido te�rico, la tesis de Church-Turing implica que cualquier ambiente
funcional puede ser emulado dentro de cualquier otro. En la pr�ctica, esto puede
resultar realmente dif�cil, particularmente cuando el comportamiento exacto del
sistema emulado no est� documentado y debe ser deducido mediante ingenier�a
inversa. Tampoco se habla en la tesis sobre las diferencias en sincronizaci�n; si
el emulador no act�a tan r�pidamente como el hardware original, el software de
emulaci�n va a ir m�s lento que si fuese el hardware original.
Estructura
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, por ejemplo,
esto tambi�n debe ser emulado.
En vez de una emulaci�n completa del equipo, una compatibilidad superficial puede
ser suficiente. Esto traduce las llamadas del sistema emulado a llamadas del
sistema anfitri�n.
Simulador de CPU
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.
Esto es posible asignando una variable a cada registro y flag de la CPU emulada. La
l�gica de la CPU simulada puede ser m�s o menos traducida directamente a algoritmos
de software, creando una reimplementaci�n del software que b�sicamente refleja la
implementaci�n original del hardware.
void Execute(void) {
if(Interrupt!=INT_NONE) {
SuperUser=TRUE;
WriteMemory(++StackPointer, ProgramCounter);
ProgramCounter=InterruptPointer;
}
switch(ReadMemory(ProgramCounter++)) {
// Handling of every valid instruction
default:
Interrupt=INT_ILLEGAL;
}
}
Los int�rpretes son muy populares en el caso de los simuladores de CPU, ya que son
m�s sencillos de implementar que otras soluciones alternativas de mejor
rendimiento, y su velocidad es m�s que adecuada para emular computadoras de hace
m�s de una d�cada en m�quinas modernas.
Esto puede resultar en una ventaja en el funcionamiento, proveyendo que cada m�dulo
de entrada y salida pueda ser adaptado a las caracter�sticas del dispositivo
emulado; dise�os basados en un est�ndar, entradas y salidas unificadas por medio de
API pueden sin embargo proveer modelos m�s simples, y adem�s tienen la ventaja
adicional de permitir de forma "autom�tica" la utilizaci�n de servicios plugins
para proveer dispositivos virtuales de terceros en el emulador.
A�n los emuladores que tratan cada dispositivo como un caso especial poseen una
infraestructura b�sica en com�n para ello: