Emulation software imitates one system so software written for it can run on another. This is especially useful for developing embedded systems; a developer can write code on their usual machine, compile it (using a cross compiler), and run it on an emulator for testing.

Wine Edit

Wine is a Windows compatibility layer (but not an emulator) for POSIX-compliant operating systems, which means it implements enough of the Windows API for Windows software to run on POSIX systems. While this approach is faster than full emulation it does not guarantee that a program will work the way that running Windows in an emulator does.

Full Emulators Edit

A full emulator imitates a CPU so that it is possible to install operating systems on top of it. This is useful for operating system development as any crashes don't crash the host system.

Virtual Machines Edit

A virtual machine is not necessarily an emulator; it may well execute instructions natively on the physical processor.