این مقاله توصیف قراردادهای فراخوانی (به انگلیسی: calling conventions) مورد استفاده، در هنگام برنامه نویسی میکروپروسسورهای معماری اکس۸۶ است.
ترتیبی که به پارامترهای اتمی (اسکالر) یا بخش های فردی از یک پارامتر پیچیده، اختصاص داده می شود
پارامترها چگونه منتقل می شوند (گذاشته شدن بر روی پشته (به انگلیسی: stack)، قرار گرفتن در ثبّات (رجیستر)ها یا ترکیبی از هر دو)
کدام ثبّات های تابع فراخوانی شده باید برای فراخوانی کننده حفظ شود (همچنین شناخته شدن به عنوان: ثبّات های ذخیره شده تابع صدا شده(callee-saved) یا غیر فرار (non-volatile)
چگونه وظیفه آماده سازی پشته و بازگرداندن بعد از یکبار صدا زدنِ تابع، بین فراخوانی کننده(caller) و فراخوانی شده(callee) تقسیم می شود
قراردادهای فراخوانی، رابط کاربری کد فراخوانی شده را توصیف می کند:
این دقیقاً با تخصیص دادنِ اندازه ها و فرمت ها به انواع زبان برنامه نویسی مرتبط است. یکی دیگر از موضوع های خیلی مرتبط برانگیختگی نام (Name mangling) است، که تعیین می کند که چگونه نمادها در کد به نماد مورد استفاده در لینکر مرتبط و تبدیل شوند. قراردادهای فراخوانی، نمایندگی های نوع، و برانگیختگی نام، همه بخشی از آنچه که به عنوان یک رابط دودویی نرم افزار شناخته می شود هستند.
اغلب تفاوت های ظریفی در نحوه پیاده سازی این قراردادها در کامپایلر های مختلف وجود دارد، بنابراین اغلب سخت است که کدی را که توسط کامپایلرهای مختلف کامپایل شده است نمایش دهیم. از سوی دیگر، قراردادهایی که به عنوان استاندارد API (مانند stdcall) مورد استفاده قرار می گیرند، به طور خیلی یکسان پیاده سازی می شوند.
ترتیبی که به پارامترهای اتمی (اسکالر) یا بخش های فردی از یک پارامتر پیچیده، اختصاص داده می شود
پارامترها چگونه منتقل می شوند (گذاشته شدن بر روی پشته (به انگلیسی: stack)، قرار گرفتن در ثبّات (رجیستر)ها یا ترکیبی از هر دو)
کدام ثبّات های تابع فراخوانی شده باید برای فراخوانی کننده حفظ شود (همچنین شناخته شدن به عنوان: ثبّات های ذخیره شده تابع صدا شده(callee-saved) یا غیر فرار (non-volatile)
چگونه وظیفه آماده سازی پشته و بازگرداندن بعد از یکبار صدا زدنِ تابع، بین فراخوانی کننده(caller) و فراخوانی شده(callee) تقسیم می شود
قراردادهای فراخوانی، رابط کاربری کد فراخوانی شده را توصیف می کند:
این دقیقاً با تخصیص دادنِ اندازه ها و فرمت ها به انواع زبان برنامه نویسی مرتبط است. یکی دیگر از موضوع های خیلی مرتبط برانگیختگی نام (Name mangling) است، که تعیین می کند که چگونه نمادها در کد به نماد مورد استفاده در لینکر مرتبط و تبدیل شوند. قراردادهای فراخوانی، نمایندگی های نوع، و برانگیختگی نام، همه بخشی از آنچه که به عنوان یک رابط دودویی نرم افزار شناخته می شود هستند.
اغلب تفاوت های ظریفی در نحوه پیاده سازی این قراردادها در کامپایلر های مختلف وجود دارد، بنابراین اغلب سخت است که کدی را که توسط کامپایلرهای مختلف کامپایل شده است نمایش دهیم. از سوی دیگر، قراردادهایی که به عنوان استاندارد API (مانند stdcall) مورد استفاده قرار می گیرند، به طور خیلی یکسان پیاده سازی می شوند.