Knowledge

Binary-code compatibility

Source 📝

33: 205:, for example), are sufficiently similar. Hardware (besides the CPU, such as for graphics) and peripherals that an application accesses may also be a factor for full compatibility, although many hardware differences are hidden by modern APIs (often partly supplied by the OS itself and partly by specific 196:
usually implies object-code compatibility. This means that newer computer hardware and/or software has (practically) every feature of the old, plus additional capabilities or performance. Older executable code will thus run unchanged on the newer product. For a compiled program running directly on a
538:
Classic Startup is a Mach-O application that runs Mac OS 9 within its address space. It provides a hardware abstraction layer between Mac OS 9 and Mac OS X by virtualizing traps, system calls, and interrupts. It runs in a protected memory environment, with multiple Mac OS 9 processes within it
381:, which is done to run software within the alternative OS in the case when the host OS is not compatible. Sometimes virtualization is provided with the host OS (or such software can be obtained), which effectively makes the host OS compatible with programs. For example, 278:
produced for another processor can be correctly executed and has (much) the same effect as on the other processor. This is quite common among many processor families, although it is rather uncommon among the ubiquitous small
349:
family of OSes using Wine for application compatibility and reimplementing the Windows kernel for additional compatibility such as for drivers whereas Linux would use Linux drivers, not Windows drivers.
303:
Binary compatible operating systems are OSes that aim to implement binary compatibility with another OS, or another variant of the same brand. This means that they are ABI-compatible (for
238:
Most OSes provide binary compatibility, in each version of the OS, for most binaries built to run on earlier versions of the OS. For example, many executables compiled for
592: 201:(ABI) compatibility with another system. However, it also often implies that APIs that the application depends on, directly or indirectly (such as the 436:—but this did not make Mac OS X a binary compatible OS with Mac OS 9. Instead, the Classic environment was actually running Mac OS 9.1 in a 326:
is not compatible with Windows. This does not mean that Linux cannot be binary compatible with Windows applications. Additional software,
97: 585: 50: 567: – a set of open-source tools for analysis of ABI and backward binary compatibility implementing KDE Techbase Policies 69: 17: 76: 578: 500: 83: 219:
Binary compatibility is a major benefit when developing computer programs that are to be run on multiple OSes. Several
65: 531: 182: 116: 754: 173:
For a compiled program on a general operating system, binary compatibility often implies that not only the CPUs (
759: 355: 54: 366:
by translating Linux system calls into BSD ones. This enables the application and libraries code that run on
601: 454: 308: 304: 198: 186: 174: 283:
built around such processors. Full machine code compatibility would here imply exactly the same layout of
554: 706: 90: 670: 480: 274:
For a digital processor implemented in hardware, binary compatibility means that (a large subset of)
159: 618: 316: 311:
running the OSes have to be the same or compatible. Otherwise, programs can be employed within a
558: 374: 167: 155: 43: 295:(sometimes on the border to a general computer, such as a mobile phone), this may be different. 675: 460: 449: 291:, counter/timers, external interfaces and so on. For a more complex embedded system using more 193: 410: 177:) of the two computers are binary compatible, but also that interfaces and behaviours of the 685: 335: 8: 650: 633: 433: 235:-derived ones, since most binary executables are not commonly distributed for such OSes. 728: 716: 623: 470: 414: 402: 733: 570: 527: 475: 465: 373:
Note that a binary compatible OS is different from running an alternative OS through
292: 288: 284: 711: 504: 390: 178: 163: 437: 382: 327: 280: 140: 721: 665: 638: 523: 189:(ABIs) corresponding to those APIs, are sufficiently equal, i.e. "compatible". 748: 655: 406: 339: 206: 129:
Ability of a computer system to run the same code as another computer system
645: 359: 323: 275: 247: 148: 564: 262:
ran on much newer versions of Windows up to Windows 10 for as long as the
216:
of the software must be used to make non-binary-compatible programs work.
680: 660: 239: 202: 136: 197:
CPU under an OS, a "binary compatible operating system" primarily means
628: 398: 346: 251: 243: 144: 561:) for not breaking binary compatibility between releases of a library. 386: 343: 255: 170:
is necessary before the program can be run on the compatible system.
32: 429: 421: 378: 363: 312: 152: 425: 351: 331: 224: 213: 393:
version of Windows 7 and enable old software to still work in a
394: 228: 367: 263: 232: 231:, offer binary compatibility with more popular OSes, such as 220: 417:
allow other OSes to be run on Windows, Linux, and macOS.
259: 557:– a compendium of C++ development rules of thumb (with 600: 298: 57:. Unsourced material may be challenged and removed. 440:, running as a normal process inside of Mac OS X. 330:, is available that does that to some degree. The 746: 539:layered on top of a single Mac OS X BSD process. 307:). As the job of an OS is to run programs, the 586: 269: 158:(CPU), that another computer system can run. 593: 579: 358:family have binary compatibility with the 432:and earlier application software through 117:Learn how and when to remove this message 14: 747: 520:Mac OS X Internals: A Systems Approach 370:-based OSes to be run on BSD as well. 334:development effort seeks to create an 574: 517: 55:adding citations to reliable sources 26: 319:mechanism to make them compatible. 299:Binary compatible operating systems 143:, meaning that it can run the same 24: 342:OS that is binary compatible with 183:application programming interfaces 25: 771: 548: 162:, on the other hand, means that 31: 139:compatible) is a property of a 42:needs additional citations for 511: 501:"Mac OS X System Architecture" 493: 13: 1: 518:Singh, Amit (June 29, 2006). 486: 309:instruction set architectures 187:application binary interfaces 602:Application binary interface 455:Application binary interface 305:application binary interface 258:, and many applications for 199:application binary interface 7: 526:. Section 2.11.8: Classic. 443: 66:"Binary-code compatibility" 10: 776: 707:Foreign function interface 285:interrupt service routines 270:Binary compatible hardware 212:In other cases, a general 702:Binary-code compatibility 694: 671:Position-independent code 609: 481:Multi-architecture binary 354:and other members of the 160:Source-code compatibility 133:Binary-code compatibility 18:Binary code compatibility 397:virtual machine running 153:general-purpose computer 428:had the ability to run 156:central processing unit 755:Backward compatibility 503:. 2002. Archived from 461:Computer compatibility 450:Backward compatibility 389:allows users to run a 135:(binary compatible or 760:Computing terminology 555:KDE Techbase Policies 420:For another example, 411:Parallels Workstation 223:-based OSes, such as 686:Virtual method table 51:improve this article 651:Memory segmentation 317:dynamic translation 250:can also be run on 194:backward-compatible 624:Calling convention 565:ABI Analysis Tools 507:on August 2, 2002. 471:Plug compatibility 415:Windows Virtual PC 403:VMware Workstation 293:abstraction layers 289:hardware registers 742: 741: 734:Year 2038 problem 476:Video game remake 466:Bug compatibility 322:For example, the 127: 126: 119: 101: 16:(Redirected from 767: 712:Language binding 595: 588: 581: 572: 571: 542: 541: 515: 509: 508: 497: 281:embedded systems 185:(APIs), and the 179:operating system 175:instruction sets 122: 115: 111: 108: 102: 100: 59: 35: 27: 21: 775: 774: 770: 769: 768: 766: 765: 764: 745: 744: 743: 738: 690: 611: 605: 599: 551: 546: 545: 534: 516: 512: 499: 498: 494: 489: 446: 438:virtual machine 383:Windows XP Mode 301: 272: 266:was supported. 145:executable code 141:computer system 130: 123: 112: 106: 103: 60: 58: 48: 36: 23: 22: 15: 12: 11: 5: 773: 763: 762: 757: 740: 739: 737: 736: 731: 726: 725: 724: 714: 709: 704: 698: 696: 695:Related topics 692: 691: 689: 688: 683: 678: 673: 668: 666:Opaque pointer 663: 658: 653: 648: 643: 642: 641: 631: 626: 621: 615: 613: 607: 606: 598: 597: 590: 583: 575: 569: 568: 562: 550: 549:External links 547: 544: 543: 532: 524:Addison-Wesley 510: 491: 490: 488: 485: 484: 483: 478: 473: 468: 463: 458: 452: 445: 442: 375:virtualization 300: 297: 271: 268: 207:device drivers 168:interpretation 128: 125: 124: 39: 37: 30: 9: 6: 4: 3: 2: 772: 761: 758: 756: 753: 752: 750: 735: 732: 730: 727: 723: 720: 719: 718: 715: 713: 710: 708: 705: 703: 700: 699: 697: 693: 687: 684: 682: 679: 677: 674: 672: 669: 667: 664: 662: 659: 657: 656:Name mangling 654: 652: 649: 647: 644: 640: 637: 636: 635: 632: 630: 627: 625: 622: 620: 617: 616: 614: 608: 603: 596: 591: 589: 584: 582: 577: 576: 573: 566: 563: 560: 559:some examples 556: 553: 552: 540: 535: 533:0-321-27854-2 529: 525: 521: 514: 506: 502: 496: 492: 482: 479: 477: 474: 472: 469: 467: 464: 462: 459: 456: 453: 451: 448: 447: 441: 439: 435: 431: 427: 423: 418: 416: 412: 408: 407:VMware Fusion 404: 400: 396: 392: 388: 384: 380: 376: 371: 369: 365: 361: 357: 353: 348: 345: 341: 340:free software 337: 333: 329: 325: 320: 318: 314: 310: 306: 296: 294: 290: 287:, I/O-ports, 286: 282: 277: 267: 265: 261: 257: 253: 249: 245: 241: 236: 234: 230: 226: 222: 217: 215: 210: 208: 204: 200: 195: 190: 188: 184: 180: 176: 171: 169: 165: 164:recompilation 161: 157: 154: 150: 146: 142: 138: 134: 121: 118: 110: 107:November 2013 99: 96: 92: 89: 85: 82: 78: 75: 71: 68: –  67: 63: 62:Find sources: 56: 52: 46: 45: 40:This article 38: 34: 29: 28: 19: 701: 646:Machine code 537: 519: 513: 505:the original 495: 419: 372: 360:Linux kernel 324:Linux kernel 321: 315:or a faster 313:CPU emulator 302: 276:machine code 273: 248:Windows 2000 237: 218: 211: 192:A term like 191: 172: 149:machine code 147:, typically 132: 131: 113: 104: 94: 87: 80: 73: 61: 49:Please help 44:verification 41: 681:System call 661:Object code 612:conventions 344:Microsoft's 336:open-source 240:Windows 3.1 203:Windows API 137:object-code 749:Categories 676:Relocation 629:Call stack 487:References 399:Windows XP 347:Windows NT 252:Windows XP 244:Windows 95 77:newspapers 619:Alignment 387:Windows 7 379:emulation 256:Windows 7 181:(OS) and 444:See also 430:Mac OS 9 422:Mac OS X 364:usermode 722:dynamic 634:Library 434:Classic 426:PowerPC 424:on the 352:FreeBSD 332:ReactOS 225:FreeBSD 214:porting 91:scholar 729:Loader 717:Linker 639:static 610:Parts, 530:  413:, and 395:32-bit 391:64-bit 229:NetBSD 151:for a 93:  86:  79:  72:  64:  604:(ABI) 457:(ABI) 368:Linux 264:NTVDM 233:Linux 98:JSTOR 84:books 528:ISBN 385:for 328:Wine 221:Unix 70:news 377:or 362:in 356:BSD 260:DOS 254:or 246:or 227:or 209:). 166:or 53:by 751:: 536:. 522:. 409:, 401:; 338:, 242:, 594:e 587:t 580:v 405:/ 120:) 114:( 109:) 105:( 95:· 88:· 81:· 74:· 47:. 20:)

Index

Binary code compatibility

verification
improve this article
adding citations to reliable sources
"Binary-code compatibility"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
object-code
computer system
executable code
machine code
general-purpose computer
central processing unit
Source-code compatibility
recompilation
interpretation
instruction sets
operating system
application programming interfaces
application binary interfaces
backward-compatible
application binary interface
Windows API
device drivers
porting

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.