I am looking at various instructions for an ARM32 processor, and am confused about how the processor is able to distinguish between an instruction that operates on registers and an instruction that operates with an immediate value. For example, in the ARM32, for the MOV instruction, for the immediate and register version, to me, it seems possible that you could have instructions that are exactly the same in machine code. If this is the case, how does the processor "know the difference"?