Ardemu is an emulator designed for the ATMega328p series of microprocessors commonly found on the Arduino board. It has nearly complete instruction set support.
Ardemu differs from a simulator by emulating all of the ATMega instructions exactly as they're implemented. Ardemu is also designed to run Arduino sketches natively on other platforms with enhanced capabilities.