Binary-code compatibility

For a compiled program on a general operating system, binary compatibility often implies that not only the CPUs (instruction sets) of the two computers are binary compatible, but also that interfaces and behaviours of the operating system (OS) and application programming interfaces (APIs), and the application binary interfaces (ABIs) corresponding to those APIs, are sufficiently equal, i.e. "compatible".

This means that newer computer hardware and/or software has (practically) every feature of the old, plus additional capabilities or performance.

Binary compatibility is a major benefit when developing computer programs that are to be run on multiple OSes.

Full machine code compatibility would here imply exactly the same layout of interrupt service routines, I/O-ports, hardware registers, counter/timers, external interfaces and so on.

For a more complex embedded system using more abstraction layers (sometimes on the border to a general computer, such as a mobile phone), this may be different.

Otherwise, programs can be employed within a CPU emulator or a faster dynamic translation mechanism to make them compatible.