- Procesory są „Turing wypełnić” (do ograniczeń pamięciowych)
- Procesory mają prosty deterministycznego zachowania, które mogą być symulowane z pamięcią skończonej maszyny Turinga
Dlatego oczywiste jest, że jakiekolwiek CPU może emulować dowolny procesor z wystarczającą ilością pamięci.
Trudne pytanie brzmi: jak to zrobić szybko.
Oprócz Houdiniego Intela, zdecydowanie zalecamy zapoznanie się z tym, jak to robi QEMU.
QEMU to wiodący sposób na uruchamianie ARM na x86. Jest to oprogramowanie GPL i jest wykorzystywane jako rdzeń emulatora Androida, z którego korzystają programiści Androida.
x86 na ARM ma mniej wsparcia, ale główne pojęcia powinny być podobne w odwrotnej kolejności.
W szczególności graj w trybie emulacji użytkownika. Z tym trybie można uruchomić statycznie połączonego ARM wykonywalny o gospodarzu x86 po prostu jako:
qemu-arm-static ./executable
kilka pomysłów:
- instrukcje są w języku instrukcji gospodarza
- wywołania systemowe są przekazywane do host
Prawdopodobnie macierzysty kod ARM nie może działać na x86 lub przynajmniej potrzebuje emulatora. –