QEMU is a generic and open source machine emulator and virtualizer.

When used as a machine emulator, QEMU can run OSes and programs made for 
one machine (e.g. an ARM board) on a different machine (e.g. your own PC). 
By using dynamic translation, it achieves very good performances.

When used as a virtualizer, QEMU achieves near native performances by 
executing the guest code directly on the host CPU. A host driver called 
the QEMU accelerator (also known as KQEMU) is needed in this case. The 
virtualizer mode requires that both the host and guest machine use x86 
compatible processors.