Instruction Set Architecture (ISA)

binary compatibility

Binary compatibility is the promise that a program already compiled to machine code — the actual ones and zeros, not the source — will keep running, unchanged, on other chips that share its ISA, including future ones. It is why a game or office program from years ago still launches on a brand-new PC without anyone recompiling it. The compiled binary speaks the ISA's language, and any chip that honors that language can run it.

It works precisely because the ISA is a stable contract. As long as a new chip implements the same instructions, registers, and memory model, an old binary's bits still mean the same thing, even if the new chip is twice as fast and utterly different inside. Backward compatibility specifically means a new chip still runs old binaries; this is why x86 carries decades of accumulated instructions it can never drop — removing them would break software that still depends on them. The flip side, forward compatibility, is weaker: an old chip generally cannot run a new binary that uses instructions added after it was made.

Binary compatibility is one of the most powerful and underappreciated forces in computing, because it protects the enormous investment locked up in existing software. It is a major reason ISAs are so long-lived and so hard to displace: switching to a fundamentally new ISA means either recompiling everything (when you have the source) or running a slower translation layer to emulate the old instructions. An honest caveat: compatibility is not free — it forces designers to keep supporting old, sometimes awkward, instructions forever, which is part of why a clean-slate open ISA like RISC-V is attractive.

A program compiled for x86 in the 1990s still runs on a modern x86 laptop without recompiling, because today's chip still implements those old instructions. That is backward binary compatibility paying off across three decades.

Old machine code keeps running on new chips of the same ISA — the payoff of a stable contract.

Compatibility is mostly backward, not forward. A new binary using freshly added instructions will not run on an older chip that predates them — which is exactly the risk of compiling with the latest extensions.

Also called
backward compatibilitybinary compatible二進位相容性向後相容