An ARM full functional hardware emulator