But I have already lied to you. There is now 64 bit ARM, and in some arenas that were once dominated by 32 bit ARM, the game has clearly moved to the 64 bit chips.
Instruction are usually encoded as 32 bits. There is an alternate encoding in 16 bits called "thumb mode" but you are unlikely to run into it unless you work with microcontroller ARM chips.
Most 64 bit ARM chips can also run 32 bit code, but this is not guaranteed.
64 bit ARM does a clever trick to define a zero register "xzr". This is register 31, just like the 64 bit stack pointer but context determines if the instruction encoding references this register of zeros or if it references the stack.
Also note that the registers are named x0, x1 (rather than r0, r1 as for the 32 bit). There are alternate names like w0, w1, wzr that refer to registers as 32 bit entities. I will note that I never see xsp or wsp, only "sp".
The internal control registers for the processor are very different for 64 bit ARM
You will also run into names like "ARM Cortex M4". There is a family of "M" series chips that are used as microcontrollers. Alongside these is a family of "A" series chips that are "application" chips (typically intended to run an operating system like linux). There is also a rare and seldom seen "R" family that are somehow tailored for real time applications.
Kyu / [email protected]