Saya tidak pernah mengerti dengan jelas apa itu ABI. Tolong jangan arahkan saya ke artikel Wikipedia. Jika saya bisa memahaminya, saya tidak akan berada di sini memposting posting yang panjang.
Ini adalah pola pikir saya tentang antarmuka yang berbeda:
Remote TV adalah antarmuka antara pengguna dan TV. Ini adalah entitas yang sudah ada, tetapi tidak berguna (tidak menyediakan fungsi apa pun) dengan sendirinya. Semua fungsi untuk masing-masing tombol pada kendali jarak jauh diimplementasikan di perangkat televisi.
Antarmuka: Ini adalah lapisan "entitas yang ada" antara
functionality
danconsumer
fungsionalitas itu. Antarmuka dengan sendirinya tidak melakukan apa pun. Itu hanya memanggil fungsi yang ada di belakang.Sekarang tergantung pada siapa pengguna ada berbagai jenis antarmuka.
Command Line Interface (CLI) perintah adalah entitas yang ada, konsumen adalah pengguna dan fungsi di belakang.
functionality:
fungsi perangkat lunak saya yang memecahkan beberapa tujuan yang kami uraikan antarmuka ini.
existing entities:
perintah
consumer:
penggunaJendela Antarmuka Pengguna Grafis (GUI) , tombol, dll. Adalah entitas yang ada, dan sekali lagi konsumen adalah pengguna dan fungsionalitas ada di belakang.
functionality:
fungsionalitas perangkat lunak saya yang memecahkan beberapa masalah yang kami uraikan antarmuka ini.
existing entities:
jendela, tombol dll.
consumer:
penggunaFungsi antarmuka Pemrograman Aplikasi (API) (atau lebih tepatnya) antarmuka (dalam pemrograman berbasis antarmuka) adalah entitas yang ada, konsumen di sini adalah program lain bukan pengguna, dan lagi fungsionalitas terletak di belakang lapisan ini.
functionality:
fungsionalitas perangkat lunak saya yang memecahkan beberapa masalah yang kami uraikan antarmuka ini.
existing entities:
fungsi, Antarmuka (array fungsi).
consumer:
program / aplikasi lain.Application Binary Interface (ABI) Di sinilah masalah saya mulai.
functionality:
???
existing entities:
???
consumer:
???
- Saya telah menulis perangkat lunak dalam berbagai bahasa dan menyediakan berbagai jenis antarmuka (CLI, GUI, dan API), tetapi saya tidak yakin apakah saya pernah menyediakan ABI.
ABI mencakup rincian seperti
- tipe data, ukuran, dan perataan;
- konvensi pemanggilan, yang mengontrol bagaimana argumen fungsi dilewatkan dan mengembalikan nilai yang diambil;
- nomor panggilan sistem dan bagaimana aplikasi harus membuat panggilan sistem ke sistem operasi;
Detail standar ABI lainnya seperti
- mangling nama C ++,
- propagasi pengecualian, dan
- konvensi pemanggilan antar kompiler pada platform yang sama, tetapi tidak memerlukan kompatibilitas lintas platform.
Siapa yang butuh detail ini? Tolong jangan katakan OS. Saya tahu pemrograman perakitan. Saya tahu cara menautkan & memuat berfungsi. Saya tahu persis apa yang terjadi di dalam.
Mengapa C ++ name mangling masuk? Saya pikir kita berbicara di tingkat biner. Mengapa bahasa bisa digunakan?
Lagi pula, saya sudah mengunduh [PDF] System V Application Binary Interface Edition 4.1 (1997-03-18) untuk melihat apa tepatnya isinya. Yah, sebagian besar tidak masuk akal.
Mengapa ini berisi dua bab (4 & 5) untuk menggambarkan format file ELF ? Bahkan, ini adalah dua bab penting dari spesifikasi itu. Bab-bab selanjutnya adalah "khusus prosesor". Bagaimanapun, saya pikir itu adalah topik yang sama sekali berbeda. Tolong jangan katakan bahwa spesifikasi format file ELF adalah ABI. Itu tidak memenuhi syarat untuk menjadi antarmuka sesuai dengan definisi.
Saya tahu, karena kita berbicara pada tingkat rendah seperti itu pasti sangat spesifik. Tapi saya tidak yakin bagaimana itu "instruksi set arsitektur (ISA)" spesifik?
Di mana saya dapat menemukan ABI Microsoft Windows?
Jadi, ini adalah pertanyaan utama yang menggangguku.