In computer technology, an emulator is a system that simulates another in certain aspects. The simulated system obtains the same data, executes comparable programs and achieves the same results as possible with regard to certain questions as the system to be emulated.
Software emulators are programs that replicate a computer or operating system, making it possible to use or create software for that computer on another computer with a different architecture. For example, games for older game consoles can run on a PC or a newer game console. Also, when developing a program for a device (e.g. a mobile phone), a software developer can test and correct it in the emulator without having to copy it to the device each time.
A hardware emulator is an electronic device that can functionally, electrically, or mechanically (housing and pins) replicate a system such as a printer or processor (CPU). The connection to the processor module is created by means of a socket and a suitable connector. It is also known as an in-circuit emulator (ICE).
A terminal emulator is software that simulates the function of a terminal (data input/screen output) so that you can access a corresponding application from a PC, for example. Emulators fall among the interpreters.
The most common emulations in computing today are printer or plotter emulations. A virtual machine (VM for short) is often mistakenly referred to as an emulator as well. This special software creates a runtime environment on a host computer, the actual virtual machine, which maps the hardware interfaces of the computer (or a similar computer). As usual, a guest operating system runs on the CPU of the host computer, but all accesses to the input and output hardware are redirected to software interfaces of the host operating system. This makes it possible to run another one in a window under the existing operating system. In professional applications, several guest operating systems run in parallel under a hypervisor, a special form of VM, on only one existing hardware; in fact, a single computer is divided into several.
Hardware emulators make it possible to develop machine-level software, since no emulation software of the software under development “simulates” the target system, but usually a special hardware enables the software to run in a “real” environment. The emulation hardware usually offers possibilities to stop the software, set holding conditions, etc. without changing the runtime behavior of the software. The most possibilities are usually offered by an in-circuit emulator, in which a specially equipped microprocessor is used in the real target hardware for software development.