| RGBLINK(5) | File Formats Manual | RGBLINK(5) |
نام (NAME)
rgblink —
قالب
فایل
اسکریپت
پیونددهنده
توضیحات (DESCRIPTION)
اسکریپت
پیونددهنده
فایلی است
که امکان
تعیین
ویژگیهای
بخشها را
در زمان
پیوند و به
شیوهای
متمرکز
فراهم
میکند. در
هر بار
فراخوانی
rgblink تنها
یک اسکریپت
پیونددهنده
میتواند
وجود داشته
باشد، اما
میتوان آن
را به چندین
فایل تقسیم
کرد (با
استفاده از
دستورالعمل
INCLUDE) .
نحو پایه
نحو اسکریپت پیونددهنده خطمحور است. هر خط میتواند شامل یک دستورالعمل یا نام بخش، یک توضیح، هر دو، یا هیچکدام باشد. فاصلههای خالی (نویسههای فاصله و تب) برای جداسازی عناصر نحوی استفاده میشوند، اما در غیر این صورت نادیده گرفته میشوند.
توضیحات
با نویسهٔ
نقطهویرگول
‘;’ آغاز
میشوند و
تا انتهای
خط ادامه
دارند.
آنها به
سادگی
نادیده
گرفته
میشوند.
کلیدواژهها از حروف و ارقام تشکیل شدهاند (اما نمیتوانند با یک رقم آغاز شوند)؛ همهٔ آنها به بزرگی و کوچکی حروف حساس نیستند.
اعداد را میتوان در قالبهای مختلفی نوشت.
| نوع قالب | پیشوندهای ممکن | نویسههای پذیرفتهشده |
| دهدهی (Decimal) | هیچ | 0123456789 |
| شانزدهشانزدهی (Hexadecimal) | $,
0x, 0X |
0123456789ABCDEF |
| هشتهشتی (Octal) | &,
0o, 0O |
01234567 |
| دودویی (Binary) | %,
0b, 0B |
01 |
خط زیر (Underscore)
نیز در
اعداد
پذیرفته
میشود، به
جز در
ابتدای عدد.
این قابلیت
میتواند
برای
گروهبندی
ارقام مفید
باشد،
مانند
‘1_234’ یا
‘$ff_80’.
رشتهها
با یک علامت
نقلقول
دوتایی
(گیومه) آغاز
میشوند و
در نقلقول
دوتایی
بعدی (که
فرار
نیافته
باشد) پایان
مییابند.
رشتهها
نباید شامل
نویسههای
لفظی خط
جدید (newline)
باشند.
بیشتر
توالیهای
گریز
نویسهای
مشابه
rgbasm(5)
پشتیبانی
میشوند،
به ویژه
‘\\’,
‘\"’,
‘\n’,
‘\r’,
‘\t’, و
‘\0’. سایر
توالیهای
گریز ممیز
وارونه (backslash)
در rgbasm(5)
فقط مربوط
به کد
اسمبلی
هستند و در
اسکریپتهای
پیونددهنده
اعمال
نمیشوند.
دستورالعملها
- شامل کردن فایلهای دیگر
- ‘
’ به گونهای عمل میکند که گویی محتویات فایل واقع در path در محل دستورالعملINCLUDEpathINCLUDEکپی و جایگذاری شده است. path باید یک رشته باشد. - تعیین بانک فعال
- بانک فعال
را میتوان
با تعیین
نوع (ناحیه
حافظه) و
شمارهٔ آن
تنظیم کرد.
انواع ممکن
عبارتند از:
ROM0,ROMX,VRAM,SRAM,WRAM0,WRAMX,OAM, وHRAM. شماره بانک را میتوان از انواعی که تنها شامل یک بانک هستند حذف کرد، که عبارتند از:ROM0,ROMXاگر-tبه rgblink(1) داده شده باشد،VRAMاگر-dبه rgblink(1) داده شده باشد،WRAM0,WRAMXاگر-wبه rgblink(1) داده شده باشد،OAM, وHRAM. (SRAMتنها نوعی است که هرگز نمیتوان شماره بانک آن را حذف کرد).پس از تعیین یک بانک، “آدرس فعلی” روی آخرین مقداری که برای آن بانک داشته تنظیم میشود. اگر آن بانک تاکنون هرگز فعال نبوده باشد، “آدرس فعلی” به طور پیشفرض روی ابتدای بانک قرار میگیرد (مثلاً $4000 برای بخشهای
ROMX) .به جای دادن شماره بانک، میتوان از کلیدواژهٔ
FLOATINGاستفاده کرد؛ این کار نوع بخشهای بعدی را بدون مقید کردن آنها به یک بانک خاص تنظیم میکند. (اگر آن نوع تنها اجازه یک بانک را میدهد، مثلاًROM0, آنگاهFLOATINGمعتبر است اما زائد بوده و هیچ اثری ندارد.) از آنجا که هیچ بخش خاصی فعال نیست، “آدرس فعلی” شناور میشود (گویی توسط یک دستورالعمل ‘’ انجام شده باشد)، وFLOATINGORGمجاز نیست. - تغییر آدرس فعلی
- برای
استفاده از
هر یک از
این
دستورالعملها،
یک بانک
باید فعال
باشد.
‘
’ مقدار “آدرس فعلی” را روی addr تنظیم میکند. این دستورالعمل نمیتواند برای به عقب بردن آدرس استفاده شود: addr باید بزرگتر یا مساوی با “آدرس فعلی” باشد.ORGaddr‘
’ باعث میشود تمام بخشهای بین آن و دستورالعملFLOATINGORGیا تعیین بانک بعدی، در آدرسهایی قرار گیرند که به طور خودکار توسطrgblinkتعیین میشوند. (با این حال، باALIGNدر زیر سازگار است.)‘
’ مقدار “آدرس فعلی” را تا زمانی افزایش میدهد که با مرز مشخصشده تراز شود (یعنی align بیتهای کمارزش آدرس برابر با offset باشند). اگر offset حذف شود، مقدار آن به طور ضمنی 0 در نظر گرفته میشود. برای مثال، اگر “آدرس فعلی” برابر با $0007 باشد، ‘ALIGNaddr, offsetALIGN 8’ آن را روی $0100 تنظیم میکند، و ‘ALIGN 8, 10’ آن را روی $000A تنظیم میکند.‘
’ مقدار “آدرس فعلی” را به اندازهٔ size افزایش میدهد. این شکاف تخصیص داده نمیشود، بنابراین بخشهای شناور کوچکتر میتوانند بعداً در آنجا قرار گیرند.DSsize
جایگذاری بخشها
یک بخش را میتوان به سادگی با نام بردن آن (با یک رشته) جایگذاری کرد. بانک آن روی بانک فعال و آدرس آن روی “آدرس فعلی” تنظیم میشود. هرگونه قیدی که بخش از قبل دارد (چه از بخشهای قبلی اسکریپت پیونددهنده باشد و چه از فایلهای شیءِ در حال پیوند) باید با آنچه اسکریپت پیونددهنده مشخص میکند سازگار باشد: نوع بخش باید مطابقت داشته باشد، شماره بانک بخش (در صورت تعیین) باید با بانک فعال مطابقت داشته باشد، و غیره. به طور خاص، اگر بخش دارای قید تراز (alignment constraint) باشد، آدرسی که توسط اسکریپت پیونددهنده در آن قرار میگیرد باید از آن قید پیروی کند؛ در غیر این صورت، خطا رخ خواهد داد.
پس از جایگذاری یک بخش، “آدرس فعلی” به اندازهٔ حجم آن بخش افزایش مییابد. این افزایش نباید از انتهای ناحیهٔ حافظهٔ فعال فراتر رود.
بخش باید
در
فایلهای
شیءِ در حال
پیوند
تعریف شده
باشد، مگر
اینکه نام
بخش با
کلیدواژهٔ
OPTIONAL دنبال
شود.
مثالها (EXAMPLES)
; این خط فقط شامل یک توضیح است ROMX $F ; شروع یک بانک "Some functions" ; نام یک بخش ALIGN 8 ; یک دستورالعمل "Some \"array\"" WRAMX 2 ; شروع یک بانک دیگر org $d123 ; یک دستورالعمل دیگر "Some variables"
همچنین ببینید (SEE ALSO)
rgbasm(1), rgbasm(5), rgblink(1), rgbfix(1), rgbgfx(1), gbz80(7), rgbds(5), rgbds(7)
تاریخچه (HISTORY)
rgblink(1) در ابتدا توسط Carsten Sørensen به عنوان بخشی از بستهٔ ASMotor نوشته شد و بعداً توسط Justin Lloyd در RGBDS باز بستهبندی شد. این ابزار اکنون توسط تعدادی از مشارکتکنندگان در https://github.com/gbdev/rgbds نگهداری میشود.
| August 1, 2026 | Linux 6.12.107+deb13-amd64 |