No, ARM and x86 have completely different machine-code formats, and aren't compatible at an asm source level either. Not at all.
1,2,3 is a smaller set than 11,12,13,14,15,16,17, but it's not a subset, so your reasoning by analogy doesn't hold up. Doing the same kinds of things in different ways means compiling high-level code for ARM is similar to compiling for x86, not that they're compatible.
x86 uses instructions that vary in length from 1 to 15 bytes. ARM uses fixed-length (4 byte), or in thumb mode either 2 or 4 byte instructions. And even if you happened to have a 2-byte x86 add eax, ecx
vs. a Thumb mode ARM 2-byte adds r0, r1
, the encoding would be different.
Also, think of RISC as more like Reduced Instruction-Set Complexity - Each instruction has to be simple enough to go through the pipeline and execute in one execution unit (e.g. either send it to the ALU, or a load or store unit), but there can be a lot of different possible instructions. Of course an ALU for multiply or divide can't finish in a single cycle so the execution unit might be pipelined.
And even then, ARM is not very RISCy; it deviates from RISC philosophy in ways that increase code density and performance, e.g. push {r4, r5, lr, pc}
does 4 pushes, encoding which registers to push in a bitmap. This has to do to a variable number of internal operations in the store unit. Or pop
multiple registers has to write a variable number of registers, as well as doing a variable number of loads. So it doesn't pipeline as easily (and was dropped for AArch64 in favour of load/store pair), but still not too bad especially for early simple ARM pipelines that the ISA was designed around.
Also, with NEON SIMD and various other instruction-set extensions, and compact Thumb2 encoding, ARM has a lot of instructions.
Also related: Could a processor be made that supports multiple ISAs? (ex: ARM + x86) for a more detailed exploration of why you couldn't just slap ARM and x86 front-ends in front of a generic back-end and get good performance from each. e.g. different memory-ordering rules, and different quirks of FLAGS handling, so you'd have to handle worst of both worlds in the back-end in every case where it mattered.