پشته تماس: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز ربات ردهٔ همسنگ (۲۶) +املا (۱۱ core): + رده:ادسخر دیکسترا |
FreshmanBot (بحث | مشارکتها) جز اصلاح فاصله مجازی + اصلاح نویسه با ویرایشگر خودکار فارسی |
||
خط ۱:
اکثر [[کامپایلر|کامپایلرها]] برای فراخوانی و برگشت زیربرنامه '''فراخوانی پشته''' (call stack) را پیادهسازی میکنند. Call stack یا run-time stack یک پشته است که اطلاعاتی
وقتی زیربرنامهای فراخوانی میشود، قبل از اینکه کنترل اجرای برنامه به آدرس زیربرنامه پرش کند آدرس دستورالعمل بعدی (دستورالعملی که درحافظه بعد از دستور فراخوانی قرار دارد) درجائی باید ذخیره شود که هنگام برگشت از زیربرنامه از آن استفاده میشود. این آدرس را آدرس برگشتی (return addresses) مینامند.
خط ۷:
به دلیل استفاده از پشته یک زیربرنامه میتواند خودش یا زیربرنامههای دیگر را صدا بزند.
در زبانهای سطح بالا فراخوانی پشته معمولاً از برنامه نویس مخفی است.
== کاربرد پشتهها در فراخوانی توابع ==
خط ۱۶:
== محتویات ==
=== ذخیره آدرس برگشت ===
وقتی که [[رویه (علوم رایانه)|رویهای]] فراخوانی میشود، باید مکان (آدرس) دستورالعملی که رویه را فراخوانی کرده در جایی ذخیره شود تا بعد از برگشت تابع، اجرای برنامه از همان نقطه از سر گرفته شود. استفاده از یک پشته برای ذخیره کردن آدرس برگشت تابع مزایایی نسبت به دیگر روشها دارد. یکی از مزیتها این است که هر فرایندی پشته مخصوص به خود را دارد، در نتیجه رویه میتواند به صورت reentrant باشد و میتواند به شکل همزمان برای چندین فرایند که هر کدام کارهای مختلفی را انجام میدهند فعال باشد. مزیت دیگر این است که [[بازگشت (علوم رایانه)|بازگشت]] به شکل خودکار پشتیبانی میشود. وقتی که تابعی خودش را به صورت بازگشتی فراخوانی میکند، به ازای هر بار فراخوانی تابع باید یک آدرس برگشت ذخیره شود تا بعداً بتوان از
=== ذخیرهسازی دادههای محلی ===
خط ۲۲:
=== ارسال پارامترها ===
در هنگام فراخوانی توابع، معمولاً تعدادی آرگومان به
== پانویس ==
|