کلمه جو
صفحه اصلی

قرارداد فراخوانی

دانشنامه عمومی

در علومهای رایانه ای، یک قرارداد فراخوانی یک طرح در سطح پیاده سازی است برای نشان دادن آن که در یک زیرروال نحوه گرفتن پارامترها از صدا زنندهٔ آن ها و نحوه برگرداندن نتیجه به چه صورت است
پارامترها، مقادیر بازگشتی و آدرس های برگشتی (در ثبات ها، در پشته فراخوانی، ترکیبی از هر دو یا در سایر ساختارهای حافظه) قرار می گیرند
منظور که در آن آرگومان های واقعی برای پارامترهای رسمی منتقل می شوند (یا بخشی از یک آرگومان بزرگ یا پیچیده)
چطور یک مقدار بازگشتی (احتمالاً طولانی یا پیچیده) از صدا زده شده به صدا زننده (در پشته، در یک ثبات یا درون پشته) تحویل داده می شود
چگونگی وظیفه تنظیم و تمیز کردن پس از یک فراخوانی تابع بین صدا زننده و صدا زده شده تقسیم می شود
این که چگونه فراداده های توصیف کننده المان ها پاس داده می شوند
جایی که مقدار اشاره گربه قاب(frame pointer) قبلی ذخیره شده است، که برای بازگرداندن اشاره گر به قاب هنگامی که روال به پایان می رسد (در پشته قاب یا در برخی از ثبات ها)
چگونگی اختصاص دادن متغیرهای محلی می تواند بخشی از قرار داد فراخوانی باشد (زمانی که صدا زننده برای صدا زده شده اختصاص می دهد)
تفاوت ها در پیاده سازی های مختلف شامل مکان پارامترها، مقادیر بازگشتی، آدرس های بازگشت و نحوه وظایف آماده سازی برای فراخوانی تابع و بازگرداندن محیط پس از آن بین صدا زننده (caller)و صدا زده شده(callee) می شود.
قراردادهای فراخوانی ممکن است به یک استراتژی ارزیابی زبان برنامه نویسی خاص مربوط باشند، اما اغلب آن ها بخشی از آن (یا برعکس) نیستند، زیرا استراتژی ارزیابی معمولاً در سطح انتزاعی تری (بالاتری) تعریف شده است و به عنوان بخشی از زبان دیده می شود به جای جزئیات پیاده سازی (سطح پایین) یک زبان خاص کامپایلر.
قراردادهای فراخوانی ممکن است در موارد زیر متفاوت باشند:


کلمات دیگر: