나는 ABI가 무엇인지 명확하게 이해하지 못했습니다. 저에게 Wikipedia 기사를 알려주지 마십시오. 내가 이해할 수 있다면, 나는 그렇게 긴 게시물을 게시하지 않을 것입니다.
이것은 다른 인터페이스에 대한 나의 사고 방식입니다.
TV 리모컨은 사용자와 TV 간의 인터페이스입니다. 기존 엔터티이지만 그 자체로는 쓸모가 없습니다 (기능을 제공하지 않음). 리모컨의 각 버튼에 대한 모든 기능은 텔레비전 세트에서 구현됩니다.
인터페이스 : 해당 기능
functionality
과consumer
기능 사이의 "기존 엔티티"계층 입니다. 인터페이스 자체는 아무것도하지 않습니다. 그것은 뒤에있는 기능을 호출합니다.이제 사용자가 누구인지에 따라 다른 유형의 인터페이스가 있습니다.
CLI (명령 줄 인터페이스) 명령은 기존 엔터티이며 소비자는 사용자이며 기능은 뒤에 있습니다.
functionality:
이 인터페이스를 설명하는 목적을 해결하는 소프트웨어 기능.
existing entities:
명령
consumer:
사용자GUI (Graphical User Interface) 창, 버튼 등은 기존 엔터티이며 다시 소비자는 사용자이며 기능은 뒤에 있습니다.
functionality:
이 인터페이스를 설명하는 몇 가지 문제를 해결하는 소프트웨어 기능.
existing entities:
창, 버튼 등
consumer:
사용자API (Application Programming Interface) 기능 (또는보다 정확한 인터페이스) (인터페이스 기반 프로그래밍) 인터페이스는 기존 엔터티이며 여기서 소비자는 사용자가 아닌 다른 프로그램이며 기능은이 계층 뒤에 있습니다.
functionality:
이 인터페이스를 설명하는 몇 가지 문제를 해결하는 소프트웨어 기능.
existing entities:
기능, 인터페이스 (기능 배열).
consumer:
다른 프로그램 / 응용 프로그램.응용 프로그램 이진 인터페이스 (ABI) 여기에서 문제가 시작됩니다.
functionality:
???
existing entities:
???
consumer:
???
- 다른 언어로 소프트웨어를 작성했으며 다른 종류의 인터페이스 (CLI, GUI 및 API)를 제공했지만 ABI를 제공했는지 확실하지 않습니다.
ABI는 다음과 같은 세부 사항을 다룹니다.
- 데이터 유형, 크기 및 정렬;
- 함수의 인수가 전달되고 반환 값을 검색하는 방법을 제어하는 호출 규칙;
- 시스템 호출 번호 및 응용 프로그램이 운영 체제를 시스템 호출하는 방법
다른 ABI는 다음과 같은 세부 정보를 표준화합니다
- C ++ 이름 맹 글링
- 예외 전파
- 동일한 플랫폼에서 컴파일러 간 호출 규칙이지만 플랫폼 간 호환성이 필요하지 않습니다.
누가 이러한 세부 정보가 필요합니까? OS를 말하지 마십시오. 어셈블리 프로그래밍을 알고 있습니다. 링크 및로드 작동 방식을 알고 있습니다. 나는 무슨 일이 일어나는지 정확히 알고 있습니다.
C ++ 이름 맹 글링이 왜 들어 왔습니까? 나는 우리가 이진 레벨에서 이야기하고 있다고 생각했다. 언어는 왜 들어 옵니까?
어쨌든 [PDF] System V Application Binary Interface Edition 4.1 (1997-03-18) 을 다운로드하여 정확히 무엇이 포함되어 있는지 확인했습니다. 글쎄, 대부분은 말이되지 않았다.
ELF 파일 형식 을 설명하기 위해 왜 두 개의 장 (4 및 5)이 포함되어 있습니까? 실제로, 이들은이 사양에서 유일하게 중요한 두 장입니다. 나머지 장은 "프로세서 별"입니다. 어쨌든, 나는 그것이 완전히 다른 주제라고 생각합니다. ELF 파일 형식 사양 이 ABI 라고 말하지 마십시오 . 정의에 따라 인터페이스 가 될 수 없습니다 .
나는 우리가 그렇게 낮은 수준에서 이야기하기 때문에 매우 구체적이어야한다는 것을 알고 있습니다. 그러나 "ISA (Instruction Set Architecture)"가 어떻게 특정되는지 잘 모르겠습니다.
Microsoft Windows ABI는 어디에서 찾을 수 있습니까?
이것이 저를 괴롭히는 주요 질문입니다.