An emulator is a piece of hardware or software (software-based emulators are the most common) that allows a computer or other such device to function like another piece of technology. Generally speaking, emulators run programs or other devices that were meant for another system architecture.
Types of Emulators
- Dynamic recompilation
- Static recompilation
Emulators that use the interpretation method read the original code and execute the instructions based on the presented code. This method may be very slow due to the instructions being decoded line by line and then interpreted on the fly.
Dynamic Recompilation is when the emulator converts large portions of code (as the program reaches it) into a format that is easier for the system architecture to execute. The system then can read the converted program in a much faster manner.
Static Recompilation is similar to Dynamic Recompilation in the respect that it converts the code into a different format. However, this method re-compiles the program into the needed format before the program runs. This method is faster while the program runs, but it does take time to convert the entire thing before execution. Problems may arise from this method, such as not being able to execute instructions that were not present at the time of recompilation.