ARM CPU Architecture#
There are a number of considerations when porting Linux applications from x86_64 to ARM:
The instruction set differs. In particular, assembly- or compiler-intrinsics-based SIMD code needs to use the appropriate ARM extensions instead (See CPU Instruction Extensions).
The memory ordering differs. Memory accesses between threads within the same process are weakly ordered on ARM, while x86_64 implements total store order. Correctly written multi-threaded programs behave the same on both architectures. But faulty code can result in unexpected behavior when porting to ARM. See also ARM Memory Ordering.