Search code examples
x86armemulationprocessorinstruction-set

Is ARM’s RISC instruction set a subset of x86? If so, why can’t x86 run ARM software natively then?


From my limited understanding of instruction sets, ARM is a RISC architecture, meaning that there are significantly fewer/simpler instructions than x86 based processors. If this is the case, I would expect ARM’s instruction set to be a subset of x86’s instructions, since I’ve also heard “x86 instructions can do all that ARM can do and more.”

If this really is the case, shouldn’t x86 be able to run ARM software natively, since x86 has all the instructions necessary?


Solution

  • No, its no. The ARM instruction set may be more limited compared to the x86 instruction set but this has nothing to do with the architecture of the processors. The ARM instruction set is not a subset of x86 instructions. They are encoded differently and the processor executes them in a different way. The registers are not the same and even the way the instruction pointer works is not the same.

    So: The instructions are different on both architectures and just because ARM has fewer instructions does not mean that the instruction, an ARM processor supports, are a subset of the instructions that intel support. Also there is more to compatibility than instructions like encoding. You can neither run ARM software on x86 nor assemble arm Assembly to x86.