Bir ABI'nın ne olduğunu net bir şekilde anlamadım. Lütfen beni Wikipedia makalesine yönlendirmeyin. Eğer anlayabilseydim, burada böyle uzun bir yazı yayınlamak olmazdım.
Bu, farklı arayüzler hakkındaki zihniyetim:
TV uzaktan kumandası, kullanıcı ve TV arasındaki bir arabirimdir. Mevcut bir varlıktır, ancak tek başına yararsızdır (herhangi bir işlevsellik sağlamaz). Uzaktan kumandadaki bu düğmelerin her biri için tüm işlevler televizyon setinde uygulanır.
Arayüz: Bu arasında bir "Mevcut varlık" tabakasıdır
functionality
veconsumer
bu işlevselliği. Bir arayüz tek başına hiçbir şey yapmaz. Sadece geride yatan işlevselliği çağırıyor.Şimdi kullanıcının kim olduğuna bağlı olarak farklı tipte arayüzler vardır.
Komut Satırı Arabirimi (CLI) komutları var olan varlıklardır, tüketici kullanıcıdır ve işlevsellik geride kalır.
functionality:
bu arayüzü tanımladığımız bir amacı çözen yazılım fonksiyonum.
existing entities:
komutlar
consumer:
kullanıcıGrafiksel Kullanıcı Arayüzü (GUI) penceresi, düğmeler, vb.
functionality:
Bu arayüzü açıkladığımız bazı problemleri çözen yazılım fonksiyonum.
existing entities:
pencere, düğmeler vb.
consumer:
kullanıcıUygulama Programlama Arabirimi (API) işlevleri (veya daha doğru olması için) arabirimleri (arabirim tabanlı programlamada) varolan varlıklardır, burada tüketici bir kullanıcı değil, başka bir programdır ve yine işlevsellik bu katmanın arkasındadır.
functionality:
Bu arayüzü açıkladığımız bazı problemleri çözen yazılım fonksiyonum.
existing entities:
Fonksiyonlar, Arayüzler (fonksiyon dizisi).
consumer:
başka bir program / uygulama.Uygulama İkili Arabirimi (ABI) Sorunum burada başlıyor.
functionality:
???
existing entities:
???
consumer:
???
- Farklı dillerde yazılım yazdım ve farklı arayüzler (CLI, GUI ve API) sağladım, ancak herhangi bir ABI sağlayıp sağlamadığımı bilmiyorum.
ABI'ler,
- veri türü, boyutu ve hizalaması;
- işlevlerin bağımsız değişkenlerinin nasıl iletildiğini ve alınan değerleri döndürdüğünü kontrol eden çağrı kuralı;
- sistem çağrı numaraları ve uygulamanın işletim sistemine nasıl sistem çağrısı yapması gerektiği;
Diğer ABI'ler,
- C ++ ad yönetimi,
- istisna yayılımı ve
- aynı platformdaki derleyiciler arasında çağrı kuralı, ancak platformlar arası uyumluluk gerektirmez.
Bu detaylara kimin ihtiyacı var? Lütfen işletim sistemini söylemeyin. Montaj programlamasını biliyorum. Bağlamanın ve yüklemenin nasıl çalıştığını biliyorum. İçinde ne olduğunu tam olarak biliyorum.
C ++ ad yönetimi neden geldi? İkili seviyede konuştuğumuzu sanıyordum. Diller neden giriyor?
Her neyse, tam olarak ne içerdiğini görmek için [PDF] Sistem V Uygulaması İkili Arabirim Sürümü 4.1'i (1997-03-18) indirdim . Çoğu mantıklı gelmedi.
ELF dosya biçimini tanımlamak için neden iki bölüm (4. ve 5.) içeriyor ? Aslında, bu şartnamenin sadece iki önemli bölümü bunlar. Diğer bölümler "işlemciye özeldir". Her neyse, tamamen farklı bir konu olmasına rağmen. ELF dosya biçimi spesifikasyonları öyle söyleme lütfen vardır ABI. Tanıma göre bir arayüz olmaya hak kazanmaz .
Biliyorum, bu kadar düşük bir seviyede konuştuğumuz için çok spesifik olmalı. Ama "komut kümesi mimarisine (ISA)" nasıl özel olduğundan emin değilim?
Microsoft Windows ABI'yi nerede bulabilirim?
Yani, bunlar beni rahatsız eden başlıca sorgular.