پرش به محتوا

تفاوت میان نسخه‌های «واسط دودویی کاربردی»

بدون خلاصه ویرایش
برچسب‌ها: ویرایشگر دیداری: به ویرایشگر منبع تغییر داده شده افزودن پیوند بیرونی به جای ویکی‌پیوند
 
== ABI های کامل ==
یک ABI کامل، مثل [[:en:Intel_Binary_Compatibility_Standard|استاندارد سازگاری دودویی اینتل]] (iBCS)<ref>[http://www.everything2.com/index.pl?node=iBCS Intel Binary Compatibility Standard (iBCS)]</ref> این امکان را فراهم می سازد تا یک برنامه از یک سیستم‌عامل که از آن ABI پشتیبانی می کند، بدون هیچ دستکاری روی هر سامانه دیگر مشابه (پشتیبانی کننده از ABI) اجرا گردد، برای این موضوع باید کتابخانه های مشترک لازم وجود داشته باشد، و پیش‌نیازهای مشابه برآورده گردد.
 
دیگر ABI ها جزییاتی مثل [[دستکاری نام|دستکاری نام C++]]،<ref>{{cite web|url=https://itanium-cxx-abi.github.io/cxx-abi/|title=Itanium C++ ABI}} (compatible with multiple architectures)</ref> انتشار حالت [[رسیدگی به استثناء|استثنا]]،<ref>{{cite web|url=http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html|title=Itanium C++ ABI: Exception Handling}} (compatible with multiple architectures)</ref> و قراداد تماس‌گیری بین کامپایلرها در یک بن‌سازه را استاندارد سازی می کند، اما نیازی به سازگاری بین بن‌سازه‌ایی ندارد.
 
== ABI های توکار ==
[[کامپایلر|کامپایلرهایی]] که از EABI پشتیبانی می کنند، [[آبجکت کد|آبجکت کدی]] می سازند که با کد تولید شده دیگر کامپایلرهای مشابه سازگار است، این موضوع به توسعه‌دهنده ها امکان پیوند کتابخانه‌های ساخته شده با یک کامپایلر را با آبجکت کد تولید شده با یک کامپایلر دیگر می دهد. توسعه‌دهندگانی که کد [[زبان اسمبلی]] خودشان را می نویسند هم ممکن است بخواهند با کد اسمبلی تولید شده با کامپابلر سازگار، واسط سازی انجام دهند.
 
EABI ها برای بهینه سازی کارایی در داخل منابع محدود یک سامانه توکار طراحی شده اند. بنابراین، EABI ها، بیشتر انتزاع هایی که بین کد کاربر و هسته در سیستم‌عامل های پیچیده وجود دارد را حذف می کنند. برای مثال از [[پیونددهنده پویا|پیوند پویا]] جلوگیری می شود، تا اجرایی کوچکتری ایجاد شود، و بازگذاری سریعتر شود، همچنین استفاده از ثبات های ثابت، به ما امکان ایجاد پشته ها و تماس هسته ای فشرده تر را می دهد، و اجرای برنامه کاربردی در حالت مجوزدهی شده، امکان دسترسی مستقیم به عملیات های سخت افزاری سفارشی بدون تغییر مسیر بواسطه تماس به یک درایور دستگاه را می دهد.<ref انتخابname="ppc-eabi">{{cite EABI می تواند روی کارایی تاثیر بگذارد.book
| title = PowerPC Embedded Application Binary Interface: 32-Bit Implementation
| date = 1 October 1995
| edition = Version 1.0
| chapter = EABI Summary
| pages = 28&ndash;30
| publisher = Freescale Semiconductor, Inc
| url = http://www.nxp.com/files/32bit/doc/app_note/PPCEABI.pdf
}}</ref> انتخاب EABI می تواند روی کارایی تاثیر بگذارد.<ref>{{cite web
|title=Debian ARM accelerates via EABI port
|date=16 October 2016
|publisher=Linuxdevices.com
|url=http://linuxdevices.com/news/NS9048137234.html
|access-date=11 October 2007
|archive-url=https://web.archive.org/web/20070121183413/http://www.linuxdevices.com/news/NS9048137234.html
|archive-date=21 January 2007
|url-status=dead
}}</ref><ref>{{cite web
|author=Andrés Calderón and Nelson Castillo
|title=Why ARM's EABI matters
|date=14 March 2007
|publisher=Linuxdevices.com
|url=http://linuxdevices.com/articles/AT5920399313.html
|access-date=11 October 2007
|archive-url=https://web.archive.org/web/20070331193917/http://www.linuxdevices.com/articles/AT5920399313.html
|archive-date=31 March 2007
|url-status=dead
}}</ref>
 
EABI هایی که امروزه زیاد استفاده می شوند شامل: [[پاورپی‌سی|PowerPC]]،<ref name="ppc-eabi"/> [[معماری آرم|Arm]] EABI<ref>{{cite web|url=https://developer.arm.com/architectures/system-architectures/software-standards/abi |title=ABI for the Arm Architecture |publisher=Developer.arm.com |access-date=4 February 2020}}</ref> و [[معماری میپس|MIPS]] EABI هستند.<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 ممکن است محدودیت های اضافی را تحمیل کند، و این موجب ایجاد یک ABI واقعی تر (با غیرانتزاعی تر) می شود؛ یک مثل GNU OABI و EABI برای ARM است که هردو آن‌ها زیرمجموعه ARM EABI هستند.<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>
 
== پانویس ==