Giao diện nhị phân ứng dụng

Trong phần mềm máy tính, giao diện nhị phân ứng dụng (ABI) là giao diện giữa hai mô-đun chương trình nhị phân (hai mô-đun đã được biên dịch thành file thực thi chứa mã máy); thông thường, một trong các mô-đun này là một thư viện hoặc cơ sở hệ điều hành hoặc là một chương trình đang được chạy bởi người dùng.

ABI định rõ cách cấu trúc dữ liệu hoặc các quy trình tính toán được ghi trong mã máy, định dạng này  ở mức độ thấp, phụ thuộc phần cứng; ngược lại, API định nghĩa truy cập này trong mã nguồn, là định dạng tương đối cao, độc lập với phần cứng, thường dễ đọc với con người. Một khía cạnh phổ biến của ABI là quy ước gọi, xác định cách dữ liệu được cung cấp làm đầu vào hoặc đầu ra từ các quy trình tính toán; ví dụ là các quy ước gọi x86.

Tuân thủ ABI (có thể hoặc không thể được chuẩn hóa chính thức) thường là công việc của trình biên dịch, hệ điều hành hoặc tác giả thư viện; tuy nhiên, một lập trình viên ứng dụng có thể phải thao tác trực tiếp với ABI khi viết chương trình bằng nhiều  ngôn ngữ lập trình, có thể đạt được bằng cách sử dụng các lệnh gọi hàm bên ngoài.

Mô tả 
ABI bao gồm các chi tiết như:

 một tập lệnh của bộ xử lý (với các chi tiết như cấu trúc tệp đăng ký, tổ chức ngăn xếp, các kiểu truy cập bộ nhớ,...) 
 kích thước, bố cục và sự sắp xếp của các loại dữ liệu cơ bản mà bộ xử lý có thể truy cập trực tiếp 
 quy ước gọi, điều khiển cách các đối số của hàm được truyền và trả về các giá trị; ví dụ: liệu tất cả các tham số được truyền trên ngăn xếp hay một số được truyền vào các thanh ghi, các thanh ghi nào được sử dụng cho tham số và liệu tham số chức năng đầu tiên được truyền trên ngăn xếp được đẩy đầu hay cuối ngăn xếp 
 Làm thế nào một ứng dụng nên thực hiện các cuộc gọi hệ thống đến hệ điều hành và, nếu ABI chỉ định các cuộc gọi hệ thống trực tiếp thay vì các cuộc gọi thủ tục đến các thủ tục gọi hệ thống, các số gọi của hệ thống 
 và trong trường hợp hệ điều hành ABI hoàn chỉnh, định dạng nhị phân của tệp đối tượng, thư viện chương trình, v.v.

ABI hoàn chỉnh 
Một ABI hoàn chỉnh, như Tiêu chuẩn tương thích nhị phân Intel (iBCS), cho phép một chương trình từ một hệ điều hành hỗ trợ ABI chạy mà không cần sửa đổi trên bất kỳ hệ thống nào khác, miễn là có các thư viện chia sẻ cần thiết hoàn thành.

   ] Các ABI chuẩn hóa các chi tiết như xáo trộn tên C ++, lan truyền ngoại lệ , và quy ước gọi giữa các trình biên dịch trên cùng một nền tảng, nhưng không yêu cầu tương thích đa nền tảng.

ABI nhúng 
Giao diện nhị phân ứng dụng nhúng (EABI) chỉ định các quy ước chuẩn cho định dạng tệp, kiểu dữ liệu, sử dụng thanh ghi, tổ chức khung ngăn xếp và tham số chức năng của chương trình phần mềm nhúng, để sử dụng với hệ điều hành nhúng.

Trình biên dịch hỗ trợ EABI tạo mã đối tượng tương thích với mã do các trình biên dịch khác tạo ra, cho phép các nhà phát triển liên kết các thư viện được tạo bằng một trình biên dịch với mã đối tượng được tạo bằng trình biên dịch khác. Các nhà phát triển viết mã hợp ngữ của riêng họ cũng có thể giao tiếp với mã hợp ngữ được tạo bởi trình biên dịch tuân thủ.

EABIs được thiết kế để tối ưu hóa hiệu suất trong phạm vi tài nguyên giới hạn của hệ thống nhúng. Do đó, EABIs bỏ qua hầu hết các trừu tượng được tạo ra giữa kernel và mã người dùng trong các hệ điều hành phức tạp. Ví dụ, liên kết động được tránh để cho phép thực thi nhỏ hơn và tải nhanh hơn, sử dụng thanh ghi cố định cho phép các ngăn xếp và cuộc gọi hạt nhân nhỏ gọn hơn và chạy ứng dụng ở chế độ đặc quyền cho phép truy cập trực tiếp vào hoạt động phần cứng tùy chỉnh mà không cần gọi trình điều khiển thiết bị. Sự lựa chọn của EABI có thể ảnh hưởng đến hiệu suất.

Các EABI được sử dụng rộng rãi bao gồm PowerPC, ARM EABI2  và MIPS EABI.

Xem thêm 

 Binary code compatibility
 Bytecode
 Comparison of application virtual machines
 Debugging symbol
 Foreign function interface
 Language binding
 Opaque pointer
 PowerOpen Environment
 Symbol table
 SWIG
 Visual C++ ABI instability details

Tham khảo

Liên kết ngoài 

 Chính sách / Vấn đề tương thích nhị phân với C ++    một bản tóm tắt các quy tắc phát triển để không phá vỡ tính tương thích nhị phân giữa các bản phát hành thư viện 
 Hướng dẫn gọi chức năng OS X ABI 
 Cổng ARM ARM EABI 
 PhaClibib: Motorola 8/16-bit nhúng ABI 
 Giao diện nhị phân ứng dụng AMD64 (x86-64) 
 Giao diện nhị phân ứng dụng (ABI) cho Kiến trúc ARM 
 Tài liệu MIPS EABI 
 Trình biên dịch Sun Studio 10 và AMD64 ABI    tóm tắt và so sánh một số ABI phổ biến 
 M • Ứng dụng CORE Hướng dẫn tiêu chuẩn giao diện nhị phân  cho bộ xử lý Freescale M · CORE

Công nghệ hệ điều hành
Giao diện lập trình ứng dụng