ثبات شاخص

این مقاله در حال ترجمه از ویکی انگلیسی است.
لطفا حذف نشود.

این صفحه در حال ویرایش است.

## ثبات شاخص

ثبات شاخص (به انگلیسی: *Index register*) نوعی ثبات است؛ در برخی سیستم‌ها نیز یک مکان ویژه در حافظه در نظر گرفته می‌شود. این ثبات هنگام اجرای برنامه برای آدرس‌دهیِ عملوندها به‌کار می‌رود. ثبات شاخص معمولاً برای پیمایش آرایه‌ها و رشته‌ها استفاده می‌شود و می‌تواند نقشِ شمارندهٔ حلقه یا نگه‌دارندهٔ اندیسِ جاری را داشته باشد. در بعضی معماری‌های رایانه ثبات شاخص یک ثباتِ اختصاصی است و در برخی دیگر، یکی از ثبات‌های همه‌منظوره می‌تواند به‌عنوان ثبات شاخص استفاده شود.

محتوای ثباتِ شاخص معمولاً به یک «آدرسِ فوری» اضافه می‌شود؛ این آدرسِ فوری می‌تواند بخشی از خودِ دستور باشد یا در یک ثباتِ دیگر نگه‌داری شود. در بعضی موارد هم به‌جای اضافه شدن، از آن کم می‌شود تا «آدرسِ مؤثرِ عملوند» به‌دست آید. معمولاً دستورهای ویژه‌ای هم وجود دارد که ثباتِ شاخص را می‌آزمایند و اگر شرط برقرار نبود، مقدارِ ثباتِ شاخص را به اندازهٔ یک ثابتِ فوری افزایش می‌دهند و پرش انجام می‌دهند (معمولاً به ابتدای حلقه). در پردازنده‌هایی که اجازه می‌دهند یک دستور چند ثباتِ شاخص را مشخص کند، محتواهای آن‌ها معمولاً با هم جمع می‌شود؛ اما در برخی سامانه‌های آی‌بی‌ام، این مقادیر به‌جای جمع شدن، با عملگرِ OR ترکیب می‌شدند.

ثبات‌های شاخص برای انجام عملیاتِ برداری/آرایه‌ای بسیار مفید بوده‌اند و در پردازشِ داده‌های تجاری نیز برای حرکت از یک «فیلد» به فیلدِ دیگر درون یک رکورد به‌کار می‌رفتند. در هر دو کاربرد، استفاده از ثباتِ شاخص باعث می‌شد هم مصرفِ حافظه کمتر شود و هم سرعتِ اجرا افزایش یابد.

## کاربرد
در برنامه‌نویسی سطح پایین (مانند اسمبلی)، ثبات شاخص معمولاً برای محاسبهٔ آدرسِ عناصرِ آرایه، پیمایشِ رشته‌ها و پیاده‌سازیِ حلقه‌ها به‌کار می‌رود؛ چون امکان می‌دهد با تغییرِ یک مقدار (اندیس)، به مکان‌های متوالیِ حافظه دسترسی پیدا کنیم.

## نشانی‌دهی شاخص‌دار
در بسیاری از معماری‌ها، ثبات شاخص در قالبِ «نشانی‌دهیِ شاخص‌دار» به‌کار می‌رود؛ یعنی آدرسِ نهاییِ دسترسی به حافظه از جمعِ یک آدرسِ پایه (یا جابه‌جاییِ ثابت داخل دستور) با مقدارِ ثبات شاخص به‌دست می‌آید. این شیوه باعث می‌شود دسترسی به عناصرِ پی‌درپیِ آرایه یا کاراکترهای متوالیِ یک رشته با چند دستورِ تکراری انجام شود، بدون اینکه در هر مرحله مجبور باشیم آدرسِ کامل را جداگانه محاسبه کنیم. به همین دلیل، ثبات شاخص در پیاده‌سازیِ حلقه‌ها، پیمایشِ ساختارهای خطی و برخی عملیاتِ کپی/جابجاییِ بلوک‌های حافظه نقش مهمی دارد.

## تفاوت با ثبات پایه و جابه‌جایی
در برخی مجموعه‌دستورها، علاوه بر ثبات شاخص از «ثبات پایه» نیز استفاده می‌شود. ثبات پایه معمولاً ابتدای یک ناحیهٔ حافظه (مثل شروع یک آرایه یا آغاز یک ساختار داده) را نگه می‌دارد، در حالی که ثبات شاخص مقدارِ جابه‌جاییِ متغیر (اندیس) را مشخص می‌کند. ترکیب این دو، به برنامه اجازه می‌دهد بدون تغییرِ ثبات پایه، روی عناصر مختلف داده حرکت کند و تنها با تغییرِ مقدارِ ثبات شاخص، آدرس‌های متوالی یا الگوهای دسترسی مورد نیاز را بسازد.

## نکته‌های پیاده‌سازی
پردازنده‌ها معمولاً عملیات افزایش/کاهش ثبات شاخص را درون یک حلقه بهینه می‌کنند تا سربار محاسبهٔ آدرس کمتر شود. همچنین اندازهٔ گام (مثلاً ۱ برای بایت، یا ۴ برای کلمهٔ ۳۲بیتی) معمولاً با نوع داده و شیوهٔ آدرس‌دهی مرتبط است؛ برای نمونه، در پیمایش آرایهٔ اعداد ۳۲بیتی، اندیس با گام ۴ تغییر می‌کند تا هر بار به عنصر بعدی اشاره شود. به همین دلیل، استفادهٔ درست از ثبات شاخص در کدنویسی سطح پایین می‌تواند هم خوانایی کد و هم کارایی اجرای حلقه‌ها را بهتر کند.

## جستارهای وابسته
* ثبات پردازنده
* حافظه
* آرایه
* رشته
* معماری رایانه

## پانویس


## منابع
*