ARM64 Vs ARM32 -- What's Different For Linux Programmers? (edn.com)
New submitter DebugN writes: When ARM introduced 64-bit support to its architecture, it aimed for Linux application compatibility with prior 32-bit software on its architecture. But for Linux programmers, there remain some significant differences that can affect code behavior. If you are a Linux programmer working with — or will soon be working with — 64-bit, you might want to know what those differences are, and this useful EDN article says it all.
There are no changes for programmers in general. Only the compiler writers need to care. (as usually happens with new cpu architectures)
It's mostly nothing to do with ARM and much to do with "Moving to a later Linux kernel",
You're thinking of the third item in their list.
The first item in their list does have to do with ARM; its register set is different, and OS APIs for debugging have platform dependencies - in particular, the Linux kernel handled A64 differently from A32 - and those particular developers happen to be using ptrace() and had to handle A64 differently.
The second item in their list has to do with the C library doing more atomic load/store operations on A64 for some reason; they speculate that it's "to better support multiprocessor systems."
The problem here is that the article had a misleading title; it was "ARM64 vs ARM32 -- What's different for Linux programmers" when it should have been "ARM64 vs ARM32 -- What's different for people working at a company whose core technology is a record and replay engine, which works by recording all non-deterministic input to a program and uses just-in-time compilation (JIT) to keep track of the program state". What Undo Software are doing is rather specialized and system-softwareish, and they run into issues that wouldn't affect the majority of programmers; those are the issues they're talking about.
Only people who don't actually use processors at the instruction set level are uncertain about whether or not a processor is "32 bit" or "64 bit". If you look at the architecture, it is usually very easily apparent. Not always, but usually.
Does it take more than one instruction to shift a 64-bit value? It probably isn't a 64-bit processor.
-- Andrew
Will people *please* stop saying that hardware "runs on" software: it's the other way round!
(If you want to say that a piece of hardware "runs" some software, that's perfectly acceptable -- but not "runs on".)