Proste tłumaczenie a priori kodu emulowanego programu na docelowy komputer jest zwykle niemożliwe z wielu powodów: kod może być samomodyfikujący się, nawet gdyby ta samomodyfikacja była dokonywana jedynie przez emulowany system operacyjny przy odczytywaniu kodu programów użytkownika (np. z dysku). może nie istnieć sposób na odróżnienie danych (które nie powinny być tłumaczone) od kodu wykonywalnego.

Różne formy dynamicznej rekompilacji, w tym popularna technika Just In Time próbują obejść te problemy poprzez dokonywanie tłumaczenia bloków kodu na nowy procesor dopiero przy napotkaniu przez wykonywany kod instrukcji skoku na nieprzetłumaczone miejsce i przechowywanie już przetłumaczonych części w cache.

Z drugiej strony prędkość emulacji może być zbyt duża, np. przy emulacji procesora 1 MHz na procesorze 1 GHz. Część emulowanych programów (zwłaszcza z konsoli do gier) nie jest przystosowanych do działania na różnych prędkościach procesora i emulator musi ograniczać prędkość wykonywania rozkazów do oryginalnej.

Zobacz też

Multiemulator MAME – emulator automatów arcade maszyna wirtualna symulacje komputerowe

*