aspose.info
FA

REL - فایل ماژول قابل جابجایی

به‌روزرسانی

فایل REL چیست؟

یک فایل با پسوند rel را می توان برای چندین نوع هدف استفاده کرد. بنابراین، از نظر طبقه بندی بازی، به عنوان یک فایل ماژول قابل جابجایی شناخته می شود که توسط برخی از بازی های Nintendo Wii مانند Brawl، Super Smash Bros و Mario Kart Wii استفاده می شود. این شامل داده های گیم پلی، از جمله مدل های شخصیت و مراحل است. فایل‌های REL مشابه فایل‌های DLL. مورد استفاده در ویندوز مایکروسافت عمل می‌کنند.

فرمت فایل REL

در یک فرمت فایل REL، فایل به چندین بخش تقسیم می‌شود که بر اساس دسترسی مشابه گروه‌بندی می‌شوند، به عنوان مثال فقط خواندن داده‌ها در یک بخش، همه کدهای اجرایی در دیگری قرار می‌گیرند، و غیره.

  • جدول حاوی اطلاعات بخش.
  • داده های بخش
  • اطلاعات جابجایی

هدر فایل

فایل با هدر تا 0x4C بایت شروع می شود:

افستاندازهنام فیلدتوضیحات
0x004idArbitrary identification number. Must be unique amongst all RELs used by a game. Must not be 0.
0x044بعدیاشاره گر به ماژول بعدی، پر شده در زمان اجرا.
0x084قبلیاشاره گر به ماژول قبلی، پر شده در زمان اجرا.
0x0c4numSectionsتعداد بخش های فایل
0x104بخشInfoOffsetبه ابتدای جدول بخش افست شود.
0x144nameOffsetافست به رشته ASCII حاوی نام ماژول. ممکن است NULL باشد. نسبت به شروع فایل REL.
0x184nameSizeاندازه نام ماژول بر حسب بایت
0x1c4نسخهشماره نسخه فرمت فایل REL.
0x204bssSizeاندازه بخش ‘.bss’.
0x244relOffsetبه جدول جابجایی افست شود.
0x284impOffsetآفست به جدول imp.
0x2c4impSizeاندازه جدول imp در بایت.
0x301prologSectionIndex into section table which prolog is relative to. Skip if this field is 0.
0x311epilogSectionIndex into section table which epilog is relative to. Skip if this field is 0.
0x321unresolvedSectionIndex into section table which unresolved is relative to. Skip if this field is 0.
0x331bssSectionفهرست بندی در جدول بخش که bss نسبت به آن است. در زمان اجرا پر شد!
0x344پرولوگدر بخش مشخصی از تابع _prolog آفست کنید.
0x384اپیلوگدر بخش مشخصی از تابع _epilog آفست کنید.
0x3c4حل نشدهدر بخش مشخصی از تابع _unresolved افست کنید.
0x404alignVersion ≥ 2 only. Alignment constraint on all sections, expressed as power of 2.
0x444bssAlignVersion ≥ 2 only. Alignment constraint on all ‘.bss’ section, expressed as power of 2.
0x484fixSizeفقط نسخه ≥ 3. اگر REL با OSLinkFixed (به جای OSLink) مرتبط باشد، فضای بعد از این آدرس را می توان برای مقاصد دیگر (مانند BSS) استفاده کرد.

جدول اطلاعات بخش

جدول اطلاعات بخش شامل numSections ورودی های هر 0x8 بایت است:

افستاندازهتوضیحات
0x030 بیتافست از ابتدای REL تا بخش. اگر این صفر باشد، بخش یک بخش بدون مقدار اولیه (یعنی .bss) است.
0x3.61 بیتناشناخته.
0x3.71 بیتپرچم اجرایی؛ اگر این 1 باشد بخش قابل اجرا است.
0x44طول بخش بر حسب بایت اگر این صفر باشد، این ورودی حذف می شود.
0x8ورودی بعدیورودی بعدی

داده های جابجایی

داده جابجایی یک یا چند لیست از ساختارهای 0x8 بایتی است. انتهای هر لیست با کد نوع ویژه 203 مشخص شده است:

افستناماندازهتوضیحات
0x0افست2از جابجایی قبلی به این جابجایی بر حسب بایت. اگر این اولین جابجایی در بخش باشد، نسبت به شروع بخش است.
0x2نوع1نوع جابجایی در زیر شرح داده شده است.
0x3بخش1بخشی از نماد برای جابجایی در مقابل. برای نوع جابجایی ویژه 202، این به جای آن شماره بخشی در این فایل است که ورودی های جابجایی زیر برای آن اعمال می شود.
0x4اضافه کردن4در بایت نماد برای جابجایی در مقابل، نسبت به شروع بخش آن جابجا می شود. این یک آدرس مطلق برای جابجایی‌ها در مقابل main.dol است.
0x8ورودی بعدیورودی بعدیورودی بعدی

منابع

همچنین ببینید