Thanks for the info. I forgot about the ARM thing (mostly because I don't understand it).
If you don't want to get under the hood of it but just basic understanding, It's pretty easy.
Each program is compiled to a language that the processor understands.
That language is nothing more then a series of commands for the CPU. But since the CPU only understands ones and zeros that kind of language is unreadable.
The commands that the CPU understands mostly depends on the architecture of the CPU.
This is where ARM comes in. It's nothing more then a CPU based on a different architecture and understands different commands.
For any program to work on an ARM it needs to be compiled for ARM...(translated into commands ARM can understand).
Its a primitive explanation and it leaves lots of details but this is basically it.
There are reasons why change the arhitecture of the CPU but those are another universe.