Кіріспе

Екі бағдарламалық модуль арасындағы екілік интерфейс. Компьютерлік бағдарламалық құралдарда екілік қолданба интерфейсі (ABI) – екі екілік бағдарламалық модуль арасындағы интерфейс болып табылады. Көбінесе, осы модульдердің бірі кітапхана немесе операциялық жүйе, ал екіншісі – пайдаланушы іске қосатын бағдарлама болады. ABI дерек құрылымдарына немесе есептеу процедураларына машиналық кодта қалай қол жеткізілетінін анықтайды, бұл төменгі деңгейдегі, аппараттық құралға тәуелді формат. Ал, қолданбаны бағдарламалау интерфейсі (API) осы қолжетімділікті бастапқы кодта анықтайды, бұл салыстырмалы түрде жоғары деңгейдегі, аппараттық құралға тәуелсіз, көбінесе адам оқи алатын формат. ABI-дың маңызды аспектісі – шақыру конвенциясы, ол деректердің есептеу процедурасына кіріс ретінде берілуі немесе одан шығыс ретінде оқылуын қалай жүзеге асыратынын анықтайды. Мысалы, x86 шақыру конвенцияларын қарастыруға болады. ABI-ға сәйкес келу (ресми түрде стандартталған немесе стандартталмаған) әдетте компилятордың, операциялық жүйенің немесе кітапхана авторының міндеті болып табылады. Дегенмен, бағдарламашы әртүрлі бағдарламалау тілдерін қолданып бағдарлама жазғанда немесе тіпті бір тілде жазылған бағдарламаны әртүрлі компиляторлармен құрастырғанда ABI-мен тікелей жұмыс істеуі мүмкін.

Толық АБИ

Толыққанды ABI, мысалы Intel Binary Compatibility Standard (iBCS), сол ABI-ді қолдайтын бір операциялық жүйедегі бағдарламаны, қажетті ортақ кітапханалар бар болса және басқа да ұқсас шарттар орындалса, кез келген басқа осындай жүйеде өзгеріссіз іске қосуға мүмкіндік береді. ABI сонымен қатар C++ атауларын өзгерту ережелері, ерекшеліктерді тарату және бір платформадағы компиляторлар арасындағы шақыру конвенциясы сияқты егжей-тегжейлі мәліметтерді стандарттауға болады, бірақ платформалар арасындағы үйлесімділікті міндетті етпейді.

Кіргізілген АБИ

Кіріктірілген бағдарламалық интерфейс (EABI) кіріктірілген операциялық жүйемен қолдану үшін, файл пішімдері, дерек түрлері, тіркелімдерді пайдалану, стек-фреймді ұйымдастыру және функциялық параметрлерді беру бойынша стандартты конвенцияларды анықтайды. EABI-ді қолдайтын компиляторлар басқа осындай компиляторлармен жасалған кодпен үйлесімді объектілік кодты жасайды, бұл әзірлеушілерге бір компилятормен жасалған кітапханаларды екінші компилятормен жасалған объектілік кодпен байланыстыруға мүмкіндік береді. Өз ассемблерлік кодын жазған әзірлеушілер де сәйкес компилятормен құрастырылған ассемблерлік кодпен интерфейс жасай алады. EABI кіріктірілген жүйенің шектеулі ресурстарында өнімділікті оңтайландыру үшін жасалған. Сондықтан, EABI күрделі операциялық жүйелердегі ядро мен пайдаланушы коды арасындағы көптеген абстракцияларды жояды. Мысалы, кішірек орындалатын файлдар мен жылдам жүктеуді қамтамасыз ету үшін динамикалық байланыстан бас тартуға болады, тіркелімдерді тұрақты пайдалану компактты стектер мен ядроға шақыруларды қамтамасыз етеді, ал қосымшаны артықшылықты режимде іске қосу құрылғы драйверін шақырудың аралықсыз, арнайы аппараттық операцияға тікелей қол жеткізуді қамтамасыз етеді. EABI таңдауы өнімділікке әсер етуі мүмкін. Көп қолданылатын EABI-лерге PowerPC және MIPS EABI жатады. C кітапханасы сияқты нақты бағдарламалық жасақтамалар нақтырақ ABI-ді құру үшін қосымша шектеулер енгізе алады; мысалы, ARM үшін GNU OABI және EABI, екеуі де ARM EABI-нің кіші жиынтығы болып табылады.