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

ثبات پشته ای

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

ثبات پشته ای یک ثبات پردازنده مرکزی رایانه است که هدف آن پیگیری رد پشته فراخوانی ها است. در یک دستگاه با معماری مبتنی بر باتری، این ثبات ممکن است یک ثبات اختصاص داده شده مانند SP بر روی یک Intel x86 باشد. در یک مجموعه ثبات معمولی، این ثبات پشته ای ممکن است یک ثبات که طبق قرارداد رزرو شده است باشد، مانند دستگاه های PDP-11 یا RISC. بعضی از طرح هایی مانند Data General Eclipse هیچ ثبات اختصاص داده شده ای ندارند، اما از یک آدرس رزرو شده حافظه سخت افزاری برای این کار استفاده می کنند.
دستورالعمل اول باید مقدار ذخیره شده در AX (ثبات ۱۶ بیتی) را بر روی پشته قرار دهد. این کار با کم کردن مقدار ۲ (۲ بایت) از SP انجام می شود.
مقدار جدید SP به 0xF81E تبدیل می شود. CPU سپس مقدار AX را در خانه ای از حافظه که آدرس فیزیکی آن 0x1F81E است کپی می کند.
وقتی "PUSH BX" اجرا می شود، SP به 0xF81C تنظیم شده و BX در 0x1F81C کپی می شود.
دستگاه های قبل از اواخر دهه 1960 — مانند PDP-8 و HP 2100 — کامپایلرهایی که از توابع بازگشتی پشتیبانی کنند، نداشتند. دستورالعمل های زیر مجموعه ای آنها معمولاً مکان فعلی را در آدرس پرش ذخیره می کردند و سپس شمارنده برنامه را به آدرس بعدی تنظیم می کردند. در حالی که این ساده تر از مدیریت یک پشته است، از آنجا که تنها یک مکان بازگشت به ازای هر کد زیرمجموعه ای وجود دارد، پیاده سازی تابع بازگشتی بدون تلاش قابل توجه برنامه نویس ممکن نبود.
ماشین پشته ای دارای دو یا چند ثبات پشته ای است — یکی از آنها رد پشته فراخوانی ها را نگه می دارد، دیگری (ان) رد پشته(ها) ی دیگر را دنبال می کنند.
در ۸۰۸۶، ثبات پشته ای اصلی، اشاره گر پشته نامیده می شود (Stack Pointer -SP). ثباتِ قسمتِ پشته (Stack segment register -SS) معمولاً برای ذخیره اطلاعاتی در مورد بخش حافظه ای است که پشته فراخوانی ها ی برنامه در حال اجرا، را ذخیره می کند. SP به بالای پشته فعلی اشاره دارد. به طور پیش فرض، پشته در حافظه به سمت پایین رشد می کند، بنابراین مقادیر جدید در آدرس (خانه)های پایین حافظه قرار می گیرد. برای وارد کردن مقدار بر روی پشته، دستور PUSH استفاده می شود. برای خارج کردن یک مقدار از روی پشته، دستور POP استفاده می شود.


کلمات دیگر: