زبان انتقال ثبات
در علوم کامپیوتر، زبان انتقال ثبات (RTL) نوعی کد هدف، یا نوعی نمایش واسطه (IR)، است که به دلیل استفاده در کامپایلر بسیار نزدیک به زبان اسمبلی میباشد. از این زبان جهت توصیف جریان دادهها در مرحله انتقال ثبات معماری کامپیوتری استفاده میشود. مقالات دانشگاهی و کتابهای درسی اغلب از نسخهای از RTL، که مشابه یک زبان اسمبلیِ فارق از نوع معماری کامپیوتر است، استفاده میکنند. از نام RTL جهت نمایش واسطهای خاص در چندین کامپایلر، از جمله مجموعه کامپایلرهای گنو (GCC)، زفیر (Zephyr)، و پروژههای کامپایلر اروپایی CerCo و CompCert استفاده میشود.
تاریخچه
ایده پشت زبان انتقال ثبات برای نخستین بار در طراحی و کاربرد یک بهینهساز چشمی با قابلیت هدفگیری مجدد شرح داده شد.
مجموعه کامپایلرهای گنو (GCC)
در مجموعه کامپایلرهای گنو، زبان انتقال ثبات از بازنمایی گیمپل (GIMPLE) تولید شده، توسط گذرگاههای میانی مختلف در GCC تغییر یافته و سپس به زبان اسمبلی تبدیل میشود.
زبان انتقال ثبات GCC معمولاً به شکلی نوشته میشود که مشابه با یک عبارت نمادین در زبان لیسپ (Lisp) است:
(set (reg:SI 140)
(plus:SI (reg:SI 138)
(reg:SI 139)))
این عبارت با عوارض جانبی بیان میکند که: "محتوای ثبات ۱۳۸ را با محتویات ثبات ۱۳۹ جمع و نتیجه را در ثبات ۱۴۰ ذخیره کن". واژه SI
حالت دسترسی برای هر ثبات را مشخص میکند. در مثال ذکر شده، "SImode
" یا حالت SI
برقرار است؛ یعنی "دسترسی به ثبات تحت عنوان عدد صحیح ۳۲ بیتی".
دنبالهٔ RTL تولید شده تا حدودی به ویژگیهای پردازندهای که GCC برای آن کد تولید میکند، بستگی دارد. با این حال، معنای RTL کمابیش مستقل از مقصد است: معمولاً خواندن و درک یک قطعه از RTL بدون دانستن اینکه برای چه پردازندهای تولید شدهاست امکانپذیر میباشد. بهطور مشابه، معنای RTL معمولاً به زبان سطح بالای منشأ برنامه بستگی ندارد.
نمادهای مقدماتی
زبان انتقال ثبات سیستمی برای بیان نمادین دنبالههای ریزعملیات بین ثباتهای یک ماژول دیجیتال است. این زبان ابزاری مناسب برای توصیف مختصر و دقیق سازماندهی داخلی کامپیوترهای دیجیتال میباشد. همچنین، میتوان از آن برای تسهیل فرایند طراحی سیستمهای دیجیتال استفاده نمود.
جهت نمایش ثباتهای یک کامپیوتر از حروف همراه با اعداد استفاده میشود؛ برای مثال R1، PC یا AR. برای نشان دادن بخشی از بیتهای یک ثبات از پرانتز استفاده میکنیم؛ برای مثال، R1(0-7) بیانگر بیتهای ۰ تا ۷ ثبات R1 میباشد.
برای انتقال اطلاعات از نماد فلش ← و برای نشان دادن همزمانی چند ریزعمل از نماد ویرگول استفاده میشود.
نماد | توضیح | مثال |
---|---|---|
حروف و اعداد | نماینده ثبات | MAR, R2 |
پرانتزها () | نماینده بخشی از ثبات | R2(0-7), R2(L) |
فلش ← | نماینده انتقال اطلاعات | R2 ← R1 |
ویرگول، | جداکنندهٔ دو ریزعمل | R2 ← R1, R3 ← R2 |
منابع
- ↑ Davidson and Fraser; The Design and Application of a Retargetable Peephole Optimizer; ToPLaS v2(2) 191-202 (April 1980)
- ↑ Computer System Architecture.
- Davidson and Fraser; The Design and Application of a Retargetable Peephole Optimizer; ToPLaS v2(2) 191-202 (آوریل ۱۹۸۰)
- Mano, Morris M. (1992). Computer System Architecture (3rd Edition). Prentice Hall. p. 94. ISBN 0131755633.