SORU
31 Ocak 2010, Pazar


Nedir Uygulama İkili Arabirimi (ABI)?

Asla net bir ABİ nedir anlayamadım. Bu kadar uzun soru için özür dilerim. Ben sadece her şeyi net bir şekilde anlamak istiyorum. Lütfen, burada böyle uzun bir yazı yazabilmek olmazdım olduğunu anladı mı diye wiki makale için bana işaret yok.

Bu farklı arayüzleri hakkında düşüncelerimi

TV uzaktan kullanıcı ve TV arasında bir arayüz. Varolan bir varlık olduğunu ancak bunun tek başına bir işe yaramaz (herhangi bir işlevsellik sağlamaz). Uzaktan kumanda üzerindeki bu düğmeleri her biri için tüm işlevselliği Televizyonu uygulanır.

Arayüz:Bir "varlık" arasındaki katman mevcut değildir functionality consumer işlevselliği. Bir, kendisi tarafından arayüzü bir şey yapmaz. Sadece işlevselliği yalan çağırır arkasında.

Şimdi kullanıcı kim olduğuna bağlı olarak farklı arayüzleri yazın.

Komut Satırı Arayüzü(CLİ)komutları varolan varlıklardır, tüketici kullanım ve işlevsellik. arkasında yatıyor.

functionality: yazılım hangi işlevi çözer hangi tarif ediyoruz amaç bu arabirim.

existing entities: komutları

4* *kullanıcı

Kullanıcı Arayüzü(GUI) grafikpencere,düğmeler vb. mevcut vardır varlıkları, tüketici yeniden kullanım. ve işlevsellik yatıyor.

functionality: yazılım hangi işlevi çözer hangi tarif ediyoruz amaç bu arabirim.

existing entities: pencere düğmeleri vb

7 ** Kullanım

Uygulama Programlama Arayüzü(API)fonksiyonlar ya da olmak daha doğru, arayüzleri ( arabirim tabanlı programlama) varolan varlıkları, tüketici burada bir kullanıcı bir program. ve yine işlevsellik bu tabaka arkasında yatıyor.

functionality: yazılım hangi işlevi çözer hangi tarif ediyoruz amaç bu arabirim.

existing entities: fonksiyonları Arabirimler(fonksiyonlar dizisi).

consumer: başka bir program/uygulama.

Uygulama İkili Arabirimi (ABI)Burada sorun başlar.

11* *???

12* *???

13* *???

  • Farklı dillerde birkaç yazılımlar yazdı ve ARAYÜZLERİ () CLİ, GUI, API farklı tür sağladım ama eğer şimdiye kadar, herhangi bir ABİ verdiyse emin değilim.

Wikipedia says:

ABİs gibi ayrıntılar kapak

  • veri türü, boyutu ve hizalama
  • bu nasıl işlevinin bağımsız değişkenleri kontrol eden Kongre, arama geçti ve dönüş değerleri alınmış;
  • bir uygulama sistem çağrıları yapmak gerekir nasıl sistemi telefon numaraları ve işletim sistemi;

Diğer ayrıntıları gibi standardize ABİs

  • C bozma,[2] .
  • ,[3] özel durum ikiye ayrılır
  • aynı platformda Derleyiciler arasında çağırma, ama çapraz-platform gerektirir uyumluluk.
  • Bu bilgileri kim ne yapsın? Lütfen, OS söyleme. Assembly programlama biliyorum. Bağlama nasıl biliyorum & yükleme çalışır. Tam olarak ne içinde olduğunu biliyorum.

  • Nerede C ad değiştirme arasında geldi mi? İkili düzeyde konuşuyoruz sanıyordum. Nereye diller arasında mı?

her neyse, [PDF] System V Application Binary Interface Edition 4.1 (1997-03-18) ne içerdiğini görmek için indirdim. Pek çoğu herhangi bir anlam ifade etmedi.

  • Neden ELF dosya biçimini tanımlayan 2 Bölüm (4 ve 5 içerir.Aslında, bu şartname sadece 2 önemli bölüm vardır. Tüm bölümlerin sonuna "İşlemci Özel". Her neyse, tamamen farklı bir konu olduğunu düşündüm. Lütfen ELF biçim özellikleri dosya öyle demeABİ. Interface tanımına göre hak etmiyor.

  • Ben, bu kadar düşük seviyede konuştuğumuzdan çok özel olmalı. Ama nasıl bir "komut Seti Mimarisi(ISA)" özel mi, emin değilim

  • Nereye MS Pencerenin ABİ bulabilirim?

Yani, bu beni rahatsız ediyor büyük sorgular.

CEVAP
16 Mart 2010, Salı


Anlamanın kolay yolu "" karşılaştırma"". API ABİ

Zaten bir API kavramı ile tanıdık. Eğer, diyelim ki, bazı Kütüphane ya da işletim sisteminizin özelliklerini kullanmak istiyorsanız, bir API kullanır. API yapıları/veri türleri, sabitler, fonksiyonlar, harici bileşen işlevselliği erişmek için kodunuzda kullanabileceğiniz vb oluşur.

Bir ABİ çok benzer. Bir API derlenmiş bir sürümü olarak (veya bir API olarak makine dili düzeyinde) düşünüyorum. Kaynak kod yazarken, bir API rağmen kütüphaneye erişim. Kodu derlenen, uygulamanızı ABİ ile kütüphane ikili veri erişir. ABİ derlenmiş uygulama harici kütüphane API yaptığı gibi (), sadece daha düşük bir düzeyde erişim için kullanacağı yapılar ve yöntemleri tanımlar.

ABİs dış kitaplıkları kullanan uygulamalar için önemlidir. Eğer bir program inşa etmek için kullanın belirli bir kütüphane ve bu kütüphane daha sonra güncellenmiş, istemediğin için derleyip uygulama ve son kullanıcı açısından, olmayabilir kaynağı). Eğer güncelleştirilmiş kütüphane aynı ABİ kullanıyorsa, daha sonra programı değiştirmek gerekmez. Kütüphane programınız gerçekten umurunda olan) arabirimi iç işleyişini değişmiş olsa bile aynı. İki versiyonu bir kütüphane var aynı ABİ bazen denir "ikili uyumlu" beri aynı düşük seviye arayüz (gerekir değiştirmek için eski sürüm ile yeni bir gün değil, herhangi bir büyük sorunlar).

Bazen, ABİ değişiklikler kaçınılmazdır. Bu durumda, bu Kitaplığı kullanan tüm programları yeniden derlenmiş kütüphaneye yeni sürümünü kullanmak sürece çalışmaz. Eğer API ama ABİ değişiklikleri yaparsa, o zaman eski ve yeni kütüphane sürümleri bazen denir "kaynak uyumlu". Bu program bir kütüphane sürümü için derlenmiş diğeri ile çalışmaz ise, kaynak kodu için yazılı yeniden derlenmiş, diğeri için çalışacak anlamına gelir.

Bu nedenle, kütüphane yazarlar EBİ sabit tutmak için (bozulma en aza indirmek için) deneyin eğilimindedir. Bir ABİ tutma fonksiyonu arayüzleri (türü ve sayısı, türleri ve argümanların sipariş iade), veri türleri veya veri yapılarını tanımlar, tanımlanan sabitler, vb değiştirmek demektir. Yeni fonksiyonları ve veri türleri eklenebilir, ama mevcut olanları aynı şekilde kalmalı. Eğer genişletin, diyelim ki, bir 16-bit veri yapısı alana bir 32-bit alanında, sonra da önceden derlenmiş kod kullandığı veri yapısı olmayacak erişim alanı (veya sonrasında) doğru. Erişim veri yapısı üyeleri alır dönüştürülmüştür bellek adresleri ve kaydırmalar sırasında derleme ve veri yapısı değişiklikleri, bu uzaklıklar değil nokta ne kodudur bekliyor onlara işaret etmek ve sonuçları en iyi ihtimalle öngörülemez.

Bir ABİ kodunuzu derleme kullanarak arayüz insanlar beklemiyorsanız mutlaka açıkça sağlayacak bir şey değil. -Belirli bir dil ya da (örneğin) C bir uygulama bu yana çok olmadı ve Pascal bir uygulama derlenmiş sonra aynı ABİ kullanacaktır.

Düzenleme:Bölüm SysV ABİ docs ELF dosya biçimi ile ilgili sorunuza gelince: bu bilgileri neden ELF biçimini işletim sistemi ve uygulama arasındaki arayüz tanımlar çünkü. Size işletim sistemi için bir çalışma programı beklediğini program için biçimlendirilmiş belirli bir şekilde ve (örneğin) bekliyor ilk bölümünde ikili bir ELF başlık içeren bazı bilgileri belirli bir bellek uzaklıklar. Bu uygulama, işletim sistemine kendisi ile ilgili önemli bilgileri iletişim kuruyor. Eğer non-ELF ikili biçimi (a) bu gibi bir program yaparsan veya PE), sonra uygulamalar ikili yorumlayabilecek değil ELF-biçimlendirilmiş beklediği bir işletim sistemi ya da uygulama dosyasını çalıştırın. Bunun en büyük sebeplerinden biri neden Windows uygulamalar olamaz çalıştırın doğrudan bir Linux makine (veya tam tersi) olmadan da yeniden derlenmiş ya da çalıştırmak içinde bir tür öykünme katmanı çevirmek bir ikili biçimi için başka bir.

IIRC, Windows şu anda Portable Executable (veya PE) biçimini kullanır. ""Bölüm, PE biçimi hakkında daha fazla bilgi bu Wikipedia sayfası. Dış bağlantılar bağlantılar var

Ayrıca, C ad değiştirme hakkında ilgili not: ABİ bir "C compiler uyumluluk. amacıyla bozma isim yapmak için" standart tanımlayabilir Yani, eğer ben bir kütüphane oluşturmak ve geliştirmek için bir program kullanan kütüphane gerekir kullanmak için farklı bir derleyici daha yaptım ve düşünmek zorunda olduğum için sonuçta oluşan ikili uyumsuz olması nedeniyle farklı isim parçalama planları. Bu yeni ikili dosya biçimini tanımlamak veya derleyici veya bir bağlayıcı yazıyorsanız gerçekten faydası yoktur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • tinycammonitor

    tinycammonit

    14 Aralık 2010
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009