Applikasiya binar interfeysi: Redaktələr arasındakı fərq

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç
Silinən məzmun Əlavə edilmiş məzmun
Teq: 2017 viki-mətn redaktoru
7 mənbə arxivləşdirildi və 0 keçid ölü olaraq işarələndi.) #IABot (v2.0.9.5
 
(2 fərqli istifadəçi tərəfindən edilmiş 1 dəyişiklik göstərilmir)
Sətir 12: Sətir 12:
ABI-nin əhatə etdiyi təfərrüatlara aşağıdakılar daxildir:
ABI-nin əhatə etdiyi təfərrüatlara aşağıdakılar daxildir:


* Reyestr faylı strukturu, yığının təşkili, yaddaşa giriş növləri və s. kimi təfərrüatları olan prosessor təlimat dəsti.
* Reyestr faylı strukturu, yığının təşkili, yaddaşa giriş növləri və s. kimi təfərrüatları olan prosessor təlimat dəsti
* Prosessorun birbaşa daxil ola biləcəyi əsas [[Verilənlər tipi|verilənlər tiplərinin]] ölçüləri, tərtibatları və [[Verilənlər strukturunun düzülməsi|düzülmələri]]
* Prosessorun birbaşa daxil ola biləcəyi əsas [[Verilənlər tipi|verilənlər tiplərinin]] ölçüləri, tərtibatları və [[Verilənlər strukturunun düzülməsi|düzülmələri]]
* [[Sətiriçi altproqram|Funksiyaların]] arqumentlərinin necə ötürüldüyünə və geri qaytarılan dəyərlərə nəzarət edən [[çağırış konvensiyası]]; məsələn, aşağıdakılara nəzarət edir:
* [[Sətiriçi altproqram|Funksiyaların]] arqumentlərinin necə ötürüldüyünə və geri qaytarılan dəyərlərə nəzarət edən [[çağırış konvensiyası]]; məsələn, aşağıdakılara nəzarət edir:
** İstər bütün parametrlər yığına ötürülür, istərsə də bəziləri reyestrlərə ötürülür
** İstər bütün parametrlərin yığına ötürülməsi, istərsə də bəzilərinin reyestrlərə ötürülməsi
** Hansı reyestrlər hansı funksiya parametrləri üçün istifadə olunur
** Hansı reyestrlərin hansı funksiya parametrləri üçün istifadə olunması
** Yığına ötürülən ilk funksiya parametrinin birinci və ya sonuncu itələnməsi
** Yığına ötürülən ilk funksiya parametrinin birinci və ya sonuncu itələnməsi
** Çağırışçının və ya çağırılananın funksiya çağırışından sonra yığının təmizlənməsinə cavabdeh olub-olmaması
** Çağırışçının və ya çağırılananın funksiya çağırışından sonra yığının təmizlənməsinə cavabdeh olub-olmaması
* Tətbiq əməliyyat sisteminə [[Sistem çağırışı|sistem çağırışını]], həmçinin, əgər ABI sistem zəngləri [[Metod qaralaması|qaralamalarına]] prosedur çağırışlarını yox, birbaşa sistem çağırışlarını təyin edirsə, sistem çağırış nömrələri necə etməlidir
* Tətbiq əməliyyat sisteminə [[Sistem çağırışı|sistem çağırışlarını]] necə etməli olduğu, həmçinin, əgər ABI sistem zəngləri [[Metod qaralaması|qaralamalarına]] prosedur çağırışlarını yox, birbaşa sistem çağırışlarını təyin edirsə, sistem çağırış nömrələri
* Tam əməliyyat sistemi ABI vəziyyətində, [[Obyekt faylı|obyekt fayllarının]] binar formatı, proqram kitabxanaları və s.
* Tam əməliyyat sistemi ABI vəziyyətində, [[Obyekt faylı|obyekt fayllarının]] binar formatı, proqram kitabxanaları və s.


== Tam ABI ==
== Tam ABI ==
"[[Intel Binary Compatibility Standard]]" (iBCS) kimi tam ABI<ref>[http://www.everything2.com/index.pl?node=iBCS Intel Binary Compatibility Standard (iBCS)]</ref> onu dəstəkləyən bir əməliyyat sistemindən olan proqrama lazımi paylaşılan kitabxanaların mövcud olması və oxşar ilkin şərtlərin yerinə yetirilməsi şərti ilə hər hansı digər belə sistemdə dəyişiklik etmədən işləməyə imkan verir.
"[[Intel Binary Compatibility Standard]]" (iBCS) kimi tam ABI<ref>{{Cite web |url=http://www.everything2.com/index.pl?node=iBCS |title=Intel Binary Compatibility Standard (iBCS) |access-date=2023-12-12 |archive-date=2012-05-27 |archive-url=https://web.archive.org/web/20120527123151/http://www.everything2.com/index.pl?node=iBCS |url-status=live }}</ref> onu dəstəkləyən bir əməliyyat sistemindən olan proqrama lazımi paylaşılan kitabxanaların mövcud olması və oxşar ilkin şərtlərin yerinə yetirilməsi şərti ilə hər hansı digər belə sistemdə dəyişiklik etmədən işləməyə imkan verir.


ABI-lər həmçinin [[Adın təhrif edilməsi|C++ adının dəyişdirilməsi]],<ref>{{Cite web |title=Itanium C++ ABI |url=https://itanium-cxx-abi.github.io/cxx-abi/}} (compatible with multiple architectures)</ref> [[İstisna ilə işləmə|istisnaların]] yayılması<ref>{{Cite web |title=Itanium C++ ABI: Exception Handling |url=http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html}} (compatible with multiple architectures)</ref> və eyni platformada kompilyatorlar arasında çağırış konvensiyası kimi təfərrüatları standartlaşdıra bilər. Bu, platformalar arası uyğunluq tələb etmir.
ABI-lər həmçinin [[Adın təhrif edilməsi|C++ adının dəyişdirilməsi]],<ref>{{Cite web |title=Itanium C++ ABI |url=https://itanium-cxx-abi.github.io/cxx-abi/ |access-date=2023-12-12 |archive-date=2023-07-31 |archive-url=https://web.archive.org/web/20230731105948/https://itanium-cxx-abi.github.io/cxx-abi/ |url-status=live }} (compatible with multiple architectures)</ref> [[İstisna ilə işləmə|istisnaların]] yayılması<ref>{{Cite web |title=Itanium C++ ABI: Exception Handling |url=http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html |access-date=2023-12-12 |archive-date=2023-11-27 |archive-url=https://web.archive.org/web/20231127094128/https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html |url-status=live }} (compatible with multiple architectures)</ref> və eyni platformada kompilyatorlar arasında çağırış konvensiyası kimi təfərrüatları standartlaşdıra bilər. Bu, platformalar arası uyğunluq tələb etmir.


== Daxili ABI ==
== Daxili ABI ==
''Daxili proqram binar interfeysi'' (EABI) [[daxili əməliyyat sistemi]] ilə istifadə üçün [[Fayl formatı|fayl formatları]], verilənlər növləri, reyestrdən istifadə, [[Çağırış yığını|yığın çərçivəsinin]] təşkili və [[Gömülü sistemlər|quraşdırılmış]] proqram təminatının funksiya parametrlərinin ötürülməsi üçün standart konvensiyaları müəyyən edir.
''Daxili proqram binar interfeysi'' (EABI) [[daxili əməliyyat sistemi]] ilə istifadə üçün [[Fayl formatı|fayl formatları]], verilənlər növləri, reyestrdən istifadə, [[Çağırış yığını|yığın çərçivəsinin]] təşkili və [[Gömülü sistemlər|quraşdırılmış]] proqram təminatının funksiya parametrlərinin ötürülməsi üçün standart konvensiyaları müəyyən edir.


EABI-lər quraşdırılmış sistemin məhdud resursları daxilində performansı optimallaşdırmaq üçün nəzərdə tutulmuşdur. Buna görə də EABI-lər mürəkkəb əməliyyat sistemlərində nüvə və istifadəçi kodu arasında edilən əksər abstraksiyaları buraxır. Məsələn, daha kiçik icra olunanlara və daha sürətli yüklənməyə imkan vermək üçün [[Dinamik keçidləndirici|dinamik keçiddən]] qaçınmaq olar, sabit reyestrdən istifadə daha yığcam yığınlara və kernel çağırışlarına imkan verir, proqramın imtiyazlı rejimdə işlədilməsi cihaz sürücüsünə zəng etmədən birbaşa giriş imkanı yaradır.<ref name="ppc-eabi">{{Cite book |url=http://www.nxp.com/docs/en/application-note/PPCEABI.pdf |title=PowerPC Embedded Application Binary Interface: 32-Bit Implementation |date=1 October 1995 |publisher=Freescale Semiconductor, Inc |edition=Version 1.0 |pages=28&ndash;30 |chapter=EABI Summary}}<cite class="citation book cs1" data-ve-ignore="true">"EABI Summary". [http://www.nxp.com/docs/en/application-note/PPCEABI.pdf ''PowerPC Embedded Application Binary Interface: 32-Bit Implementation''] <span class="cs1-format">(PDF)</span> (Version 1.0&nbsp;ed.). Freescale Semiconductor, Inc. 1 October 1995. pp.&nbsp;28–30.</cite></ref> EABI seçimi performansa təsir edə bilər.<ref>{{Cite web |date=16 October 2016 |title=Debian ARM accelerates via EABI port |url=http://linuxdevices.com/news/NS9048137234.html |url-status=dead |archive-url=https://web.archive.org/web/20070121183413/http://www.linuxdevices.com/news/NS9048137234.html |archive-date=21 January 2007 |access-date=11 October 2007 |publisher=Linuxdevices.com}}</ref><ref>{{Cite web |last=Andrés Calderón and Nelson Castillo |date=14 March 2007 |title=Why ARM's EABI matters |url=http://linuxdevices.com/articles/AT5920399313.html |url-status=dead |archive-url=https://web.archive.org/web/20070331193917/http://www.linuxdevices.com/articles/AT5920399313.html |archive-date=31 March 2007 |access-date=11 October 2007 |publisher=Linuxdevices.com}}</ref>
EABI-lər quraşdırılmış sistemin məhdud resursları daxilində performansı optimallaşdırmaq üçün nəzərdə tutulmuşdur. Buna görə də EABI-lər mürəkkəb əməliyyat sistemlərində nüvə və istifadəçi kodu arasında edilən əksər abstraksiyaları buraxır. Məsələn, daha kiçik icra olunanlara və daha sürətli yüklənməyə imkan vermək üçün [[Dinamik keçidləndirici|dinamik keçiddən]] qaçınmaq olar, sabit reyestrdən istifadə daha yığcam yığınlara və kernel çağırışlarına imkan verir, proqramın imtiyazlı rejimdə işlədilməsi cihaz sürücüsünə zəng etmədən birbaşa giriş imkanı yaradır.<ref name="ppc-eabi">{{Cite book |url=http://www.nxp.com/docs/en/application-note/PPCEABI.pdf |title=PowerPC Embedded Application Binary Interface: 32-Bit Implementation |date=1 October 1995 |publisher=Freescale Semiconductor, Inc |edition=Version 1.0 |pages=28&ndash;30 |chapter=EABI Summary |access-date=12 December 2023 |archive-date=31 July 2023 |archive-url=https://web.archive.org/web/20230731105948/http://www.nxp.com/docs/en/application-note/PPCEABI.pdf |url-status=live }}</ref> EABI seçimi performansa təsir edə bilər.<ref>{{Cite web |date=16 October 2016 |title=Debian ARM accelerates via EABI port |url=http://linuxdevices.com/news/NS9048137234.html |url-status=dead |archive-url=https://web.archive.org/web/20070121183413/http://www.linuxdevices.com/news/NS9048137234.html |archive-date=21 January 2007 |access-date=11 October 2007 |publisher=Linuxdevices.com}}</ref><ref>{{Cite web |last=Andrés Calderón and Nelson Castillo |date=14 March 2007 |title=Why ARM's EABI matters |url=http://linuxdevices.com/articles/AT5920399313.html |url-status=dead |archive-url=https://web.archive.org/web/20070331193917/http://www.linuxdevices.com/articles/AT5920399313.html |archive-date=31 March 2007 |access-date=11 October 2007 |publisher=Linuxdevices.com}}</ref>


Geniş istifadə olunan EABI-lərə "[[PowerPC]]",<ref name="ppc-eabi">{{Cite book |url=http://www.nxp.com/docs/en/application-note/PPCEABI.pdf |title=PowerPC Embedded Application Binary Interface: 32-Bit Implementation |date=1 October 1995 |publisher=Freescale Semiconductor, Inc |edition=Version 1.0 |pages=28&ndash;30 |chapter=EABI Summary}}</ref> "[[ARM arxitektura ailəsi|Arm]]" EABI<ref>{{Cite web |title=ABI for the Arm Architecture |url=https://developer.arm.com/architectures/system-architectures/software-standards/abi |access-date=4 February 2020 |publisher=Developer.arm.com}}</ref> və [[MIPS arxitekturası|MIPS]] EABI daxildir.<ref>{{cite mailing list|url=https://sourceware.org/legacy-ml/binutils/2003-06/msg00436.html|author=Eric Christopher|title=mips eabi documentation|mailing-list=binutils@sources.redhat.com|date=11 June 2003|access-date=19 June 2020}}</ref> C kitabxanası kimi xüsusi proqram təminatı tətbiqləri daha konkret ABI formalaşdırmaq üçün əlavə məhdudiyyətlər tətbiq edə bilərş Məsələn, ARM EABI-nin alt çoxluqları olan ARM üçün GNU OABI və EABI-dır. <ref>{{Cite web |title=ArmEabiPort |url=https://wiki.debian.org/ArmEabiPort |website=Debian Wiki |quote=Strictly speaking, both the old and new ARM ABIs are subsets of the ARM EABI specification, but in everyday usage the term "EABI" is used to mean the new one described here and "OABI" or "old-ABI" to mean the old one.}}</ref>
Geniş istifadə olunan EABI-lərə "[[PowerPC]]",<ref name="ppc-eabi"/> "[[ARM arxitektura ailəsi|Arm]]" EABI<ref>{{Cite web |title=ABI for the Arm Architecture |url=https://developer.arm.com/architectures/system-architectures/software-standards/abi |access-date=4 February 2020 |publisher=Developer.arm.com |archive-date=4 February 2020 |archive-url=https://web.archive.org/web/20200204154709/https://developer.arm.com/architectures/system-architectures/software-standards/abi |url-status=live }}</ref> və "[[MIPS arxitekturası|MIPS]]" EABI daxildir.<ref>{{cite mailing list|url=https://sourceware.org/legacy-ml/binutils/2003-06/msg00436.html|author=Eric Christopher|title=mips eabi documentation|mailing-list=binutils@sources.redhat.com|date=11 June 2003|access-date=19 June 2020|archive-date=7 May 2020|archive-url=https://web.archive.org/web/20200507151411/https://sourceware.org/legacy-ml/binutils/2003-06/msg00436.html|url-status=live}}</ref> C kitabxanası kimi xüsusi proqram təminatı tətbiqləri daha konkret ABI formalaşdırmaq üçün əlavə məhdudiyyətlər tətbiq edə bilər. Məsələn, ARM EABI-nin alt çoxluqları olan ARM üçün GNU OABI və EABI-dır. <ref>{{Cite web |title=ArmEabiPort |url=https://wiki.debian.org/ArmEabiPort |website=Debian Wiki |quote=Strictly speaking, both the old and new ARM ABIs are subsets of the ARM EABI specification, but in everyday usage the term "EABI" is used to mean the new one described here and "OABI" or "old-ABI" to mean the old one. |access-date=2023-12-12 |archive-date=2013-09-27 |archive-url=https://web.archive.org/web/20130927190650/https://wiki.debian.org/ArmEabiPort |url-status=live }}</ref>


== Həmçinin bax ==
== Həmçinin bax ==

Səhifəsinin 14:09, 13 dekabr 2023 tarixinə olan son versiyası

Kerneldaxili və kerneldən istifadəçi fəzasına API və ABI-lərin yüksək səviyyəli müqayisəsi.

Applikasiya binar interfeysi (ing. application binary interface, ABI) — kompüter proqram təminatında iki binar proqram modulu arasındakı interfeys. Çox vaxt bu modullardan biri kitabxana və ya əməliyyat sistemi obyekti, digəri isə istifadəçi tərəfindən idarə olunan proqramdır.

ABI aşağı səviyyəli, aparatdan asılı format olan maşın kodunda məlumat strukturlarına və ya hesablama prosedurlarına necə daxil olunduğunu müəyyən edir. Bunun əksinə olaraq, tətbiq proqramlaşdırma interfeysi (API) bu girişi mənbə kodunda müəyyən edir. Bu, nisbətən yüksək səviyyəli, aparatdan müstəqil, çox vaxt insan tərəfindən oxuna bilən formatdır. ABI-nin ümumi cəhəti məlumatların hesablama prosedurlarına giriş kimi təqdim edilməsini və ya çıxış kimi oxunmasını müəyyən edən çağırış konvensiyasıdır. Buna misal olaraq x86 çağırış konvensiyalarını göstərmək olar.

ABI-yə riayət etmək (rəsmi olaraq standartlaşdırıla və ya standartlaşdırılmaya bilər) adətən kompilyator, əməliyyat sistemi və ya kitabxana müəllifinin işidir. Bununla belə, tətbiqi proqramçı proqramlaşdırma dillərinin qarışığında proqram yazan zaman hətta eyni dildə yazılmış proqramı müxtəlif kompilyatorlarla tərtib edərkən birbaşa ABI ilə işləməli ola bilər.

ABI əsas aparat arxitekturası qədər vacibdir. Proqram bu ikisinin hər hansı məhdudiyyətini pozarsa, eyni dərəcədə uğursuz olacaq.

ABI-nin əhatə etdiyi təfərrüatlara aşağıdakılar daxildir:

  • Reyestr faylı strukturu, yığının təşkili, yaddaşa giriş növləri və s. kimi təfərrüatları olan prosessor təlimat dəsti
  • Prosessorun birbaşa daxil ola biləcəyi əsas verilənlər tiplərinin ölçüləri, tərtibatları və düzülmələri
  • Funksiyaların arqumentlərinin necə ötürüldüyünə və geri qaytarılan dəyərlərə nəzarət edən çağırış konvensiyası; məsələn, aşağıdakılara nəzarət edir:
    • İstər bütün parametrlərin yığına ötürülməsi, istərsə də bəzilərinin reyestrlərə ötürülməsi
    • Hansı reyestrlərin hansı funksiya parametrləri üçün istifadə olunması
    • Yığına ötürülən ilk funksiya parametrinin birinci və ya sonuncu itələnməsi
    • Çağırışçının və ya çağırılananın funksiya çağırışından sonra yığının təmizlənməsinə cavabdeh olub-olmaması
  • Tətbiq əməliyyat sisteminə sistem çağırışlarını necə etməli olduğu, həmçinin, əgər ABI sistem zəngləri qaralamalarına prosedur çağırışlarını yox, birbaşa sistem çağırışlarını təyin edirsə, sistem çağırış nömrələri
  • Tam əməliyyat sistemi ABI vəziyyətində, obyekt fayllarının binar formatı, proqram kitabxanaları və s.

"Intel Binary Compatibility Standard" (iBCS) kimi tam ABI[1] onu dəstəkləyən bir əməliyyat sistemindən olan proqrama lazımi paylaşılan kitabxanaların mövcud olması və oxşar ilkin şərtlərin yerinə yetirilməsi şərti ilə hər hansı digər belə sistemdə dəyişiklik etmədən işləməyə imkan verir.

ABI-lər həmçinin C++ adının dəyişdirilməsi,[2] istisnaların yayılması[3] və eyni platformada kompilyatorlar arasında çağırış konvensiyası kimi təfərrüatları standartlaşdıra bilər. Bu, platformalar arası uyğunluq tələb etmir.

Daxili proqram binar interfeysi (EABI) daxili əməliyyat sistemi ilə istifadə üçün fayl formatları, verilənlər növləri, reyestrdən istifadə, yığın çərçivəsinin təşkili və quraşdırılmış proqram təminatının funksiya parametrlərinin ötürülməsi üçün standart konvensiyaları müəyyən edir.

EABI-lər quraşdırılmış sistemin məhdud resursları daxilində performansı optimallaşdırmaq üçün nəzərdə tutulmuşdur. Buna görə də EABI-lər mürəkkəb əməliyyat sistemlərində nüvə və istifadəçi kodu arasında edilən əksər abstraksiyaları buraxır. Məsələn, daha kiçik icra olunanlara və daha sürətli yüklənməyə imkan vermək üçün dinamik keçiddən qaçınmaq olar, sabit reyestrdən istifadə daha yığcam yığınlara və kernel çağırışlarına imkan verir, proqramın imtiyazlı rejimdə işlədilməsi cihaz sürücüsünə zəng etmədən birbaşa giriş imkanı yaradır.[4] EABI seçimi performansa təsir edə bilər.[5][6]

Geniş istifadə olunan EABI-lərə "PowerPC",[4] "Arm" EABI[7] və "MIPS" EABI daxildir.[8] C kitabxanası kimi xüsusi proqram təminatı tətbiqləri daha konkret ABI formalaşdırmaq üçün əlavə məhdudiyyətlər tətbiq edə bilər. Məsələn, ARM EABI-nin alt çoxluqları olan ARM üçün GNU OABI və EABI-dır. [9]

  1. "Intel Binary Compatibility Standard (iBCS)". 2012-05-27 tarixində arxivləşdirilib. İstifadə tarixi: 2023-12-12.
  2. "Itanium C++ ABI". 2023-07-31 tarixində arxivləşdirilib. İstifadə tarixi: 2023-12-12. (compatible with multiple architectures)
  3. "Itanium C++ ABI: Exception Handling". 2023-11-27 tarixində arxivləşdirilib. İstifadə tarixi: 2023-12-12. (compatible with multiple architectures)
  4. 1 2 EABI Summary // PowerPC Embedded Application Binary Interface: 32-Bit Implementation (PDF) (Version 1.0). Freescale Semiconductor, Inc. 1 October 1995. 28–30. 31 July 2023 tarixində arxivləşdirilib (PDF). İstifadə tarixi: 12 December 2023.
  5. "Debian ARM accelerates via EABI port". Linuxdevices.com. 16 October 2016. 21 January 2007 tarixində orijinalından arxivləşdirilib. İstifadə tarixi: 11 October 2007.
  6. Andrés Calderón and Nelson Castillo. "Why ARM's EABI matters". Linuxdevices.com. 14 March 2007. 31 March 2007 tarixində orijinalından arxivləşdirilib. İstifadə tarixi: 11 October 2007.
  7. "ABI for the Arm Architecture". Developer.arm.com. 4 February 2020 tarixində arxivləşdirilib. İstifadə tarixi: 4 February 2020.
  8. Eric Christopher. "mips eabi documentation". binutils@sources.redhat.com (Poçt siyahısı). 11 June 2003. 7 May 2020 tarixində arxivləşdirilib. İstifadə tarixi: 19 June 2020.
  9. "ArmEabiPort". Debian Wiki. 2013-09-27 tarixində arxivləşdirilib. İstifadə tarixi: 2023-12-12. Strictly speaking, both the old and new ARM ABIs are subsets of the ARM EABI specification, but in everyday usage the term "EABI" is used to mean the new one described here and "OABI" or "old-ABI" to mean the old one.

Xarici keçidlər

[redaktə | mənbəni redaktə et]