한글판에서는 영문판에는 존재하지 않는, WinXP와 Win98 간의 바이너리 호환성을 ABI라고 하는 부분이 추가되어 있다.
일단 결과론적으로 바이너리 파일이 특정 하드웨어에 종속적이거나.
모든 하드웨어 플랫폼을 포괄하는 특정 파일포맷을 통해, 라이브러리 종속성만 해결한다면
cross-compile이나 Virtual Machine을 통하지 않고, 바이너리 레벨에서 호환성을 제공하여
"Write Once, Run Everywhere" 를 이룰수 있다.
그러고 보니.. win98의 프로그램이 winXP에서 작동되는건
단순히 PE 포맷을 따르는 것 뿐만 아니라, 동일 Intel 계열이기 때문인 영향도 있는 건가?
ABI는 변수의 크기, 메모리 정렬, 스택에 넣는 순서(calling convention), 시스템 콜의 번호, 그리고 완전한 OS ABI의 경우 목적파일의 이진포맷, 프로그램 라이브러리 등을 포괄한다. 예를 들어 인텔 이진 호환 표준(iBCS) 와 같은 완전한 ABI에서는 ABI를 지원하는 하나의 운영체제에서 그러한 다른 시스템으로 공유 라이브러가 존재하고 이와 비슷한 선결조건을 충족시킨다면 어떠한 수정도 가하지 않고 실행될수 있다. 다른 ABI들은 컴파일러와 동일 플랫폼에서 사이의 C++ 이름 맹글링, 예외 전파, 그리고 스택에 넣는 순서(calling convention)과 같은 것들을 표준화 하였지만, 교차 플랫폼 호환성을 요구하지 않는다. ABI는 호출할 루틴의 라이브러리를 정의하고, 자료구조를 조작하고, (종종 언어에 특화된) 특정 API를 사용하는 프로그램의 작성에 사용되는 오프젝트 클래스와 같은 API(Application Programming Interface)와는 혼동해서는 안된다. ABIs cover details such as data type, size, and alignment; the calling convention, which controls how functions' arguments are passed and return values retrieved; the system call numbers and how an application should make system calls to the operating system; and in the case of a complete operating system ABI, the binary format of object files, program libraries and so on. A complete ABI, such as the Intel Binary Compatibility Standard (iBCS),[1] allows a program from one operating system supporting that ABI to run without modifications on any other such system, provided that necessary shared libraries are present, and similar prerequisites are fulfilled. Other ABIs standardize details such as the C++ name mangling,[2] exception propagation,[3] and calling convention between compilers on the same platform, but do not require cross-platform compatibility. An ABI should not be confused with an application programming interface (API) which defines a library of routines to call, data structures to manipulate, and/or object classes to use in the construction of an application using that particular (often language specific) API. [링크 : http://en.wikipedia.org/wiki/Application_binary_interface] |
ABI는 소프트웨어 개발시 많은 장점을 가지고 있다. 예를 들면 마이크로소프트의 윈
도 98에서 사용되던 응용 프로그램이 윈
도 XP와 호환되는 것은 마이크로소프트가 ABI를 지원하기 때문이다. 유닉스 계통인 리눅스, BSD(FreeBSD/OpenBSD/NetBSD)에서
도 ABI를 제공하고 하지만 아직 완벽하다고 할 수는 없다. [링크 : http://ko.wikipedia.org /wiki/응용_프로그램_2진_인터페이스] |
'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글
VLIW - Very Long Instruction Word (0) | 2013.10.08 |
---|---|
펜타일(Pentile) 방식 디스플레이 (2) | 2011.10.15 |
EFI 와 BIOS (0) | 2011.07.22 |
KiB / MiB (0) | 2011.07.22 |
GPS / A-GPS / S-GPS / D-GPS (2) | 2010.10.23 |