Nee, code die voor een ARM-processor is gecompileerd, werkt niet rechtstreeks op een x86-processor. ARM en x86 zijn verschillende Instruction Set Architectures (ISA's). Dit betekent dat ze fundamenteel verschillende instructiesets hebben:de machinecode-instructies die de processors begrijpen, zijn totaal verschillend.
Om ARM-code op een x86-processor uit te voeren, hebt u een van de volgende zaken nodig:
* Emulatie: Een emulator vertaalt de ARM-instructies direct naar x86-instructies. Dit is aanzienlijk langzamer dan de oorspronkelijke uitvoering. Voorbeelden hiervan zijn QEMU.
* Cross-compilatie: Compileer de broncode (bijvoorbeeld C, C++) specifiek voor de x86-architectuur. Hiervoor is het nodig dat er een cross-compiler toolchain is opgezet die gericht is op x86. Dit levert native x86-code op die direct en efficiënt wordt uitgevoerd.
* Vertaling: Sommige tools vertalen ARM-machinecode naar x86-machinecode. Dit is qua concept vergelijkbaar met cross-compilatie, maar werkt op het niveau van de machinecode in plaats van op het niveau van de broncode.
Kortom, de binaire code is incompatibel. Je hebt een vertaal- of emulatielaag nodig om de kloof tussen de twee architecturen te overbruggen. |