aspose.info
AR

REL - ملف الوحدة القابلة للنقل

تاريخ التحديث

ما هو ملف REL؟

يمكن استخدام ملف بامتداد .rel لعدة أنواع من الأغراض. لذلك ، من حيث تصنيف اللعبة ، يُعرف باسم ملف وحدة قابلة للنقل تستخدمه بعض ألعاب Nintendo Wii ، مثل Brawl و Super Smash Bros و Mario Kart Wii. وهي تشتمل على بيانات طريقة اللعب ، بما في ذلك نماذج الشخصيات والمراحل. تعمل ملفات REL بشكل مشابه لملفات .DLL التي يستخدمها نظام التشغيل Microsoft Windows.

تنسيق ملف REL

في تنسيق ملف REL ، يتم تقسيم الملف إلى عدة أقسام ، مجمعة حسب الوصول ، على سبيل المثال قراءة البيانات فقط في قسم واحد ، يتم وضع كل التعليمات البرمجية القابلة للتنفيذ في قسم آخر ، وما إلى ذلك. يبدأ الملف بقسم رأس ، متبوعًا بـ:

  • جدول يحتوي على قسم المعلومات.
  • بيانات القسم.
  • معلومات الانتقال.

رأس الملف

يبدأ الملف برأس يصل إلى 0x4C بايت:

الأوفستالحجماسم الحقلالوصف
0x004معرفرقم التعريف التعسفي. يجب أن يكون فريدًا بين جميع RELs التي تستخدمها اللعبة. يجب ألا يكون 0.
0x044التاليالمؤشر إلى الوحدة التالية ، معبأ في وقت التشغيل.
0x084السابقالمؤشر إلى الوحدة السابقة ، معبأ في وقت التشغيل.
0x0c4عدد الأقسامعدد الأقسام في الملف.
0x104sectionInfoOffsetإزاحة إلى بداية جدول القسم.
0x144اسم الإزاحةالإزاحة إلى سلسلة ASCII التي تحتوي على اسم الوحدة النمطية. قد يكون NULL. نسبي لبداية ملف REL.
0x184الاسمالحجمحجم اسم الوحدة بالبايت.
0x1c4الإصداررقم إصدار تنسيق ملف REL.
0x204الحجمحجم قسم “.bss”.
0x244relOffsetتعويض إلى جدول النقل.
0x284إمبوفستالإزاحة إلى جدول عفريت.
0x2c4إمبسيزيحجم جدول عفريت بالبايت.
0x301prologSectionفهرس في جدول القسم الذي يرتبط برولوج به. تخطي إذا كان هذا الحقل 0.
0x311قسم الخاتمهفهرس في جدول القسم الذي تتعلق به الخاتمة. تخطي إذا كان هذا الحقل 0.
0x321قسم غير محلولالفهرس في جدول القسم الذي لم يتم حله متعلق بـ. تخطي إذا كان هذا الحقل 0.
0x331قسم bssفهرس في جدول القسم الذي يرتبط bss به. ممتلئة في وقت التشغيل!
0x344برولوجالإزاحة في قسم محدد من وظيفة _prolog.
0x384الخاتمهإزاحة في قسم محدد من وظيفة _epilog.
0x3c4دون حلالإزاحة في قسم محدد من الدالة _unresolved.
0x404محاذاةالإصدار ≥ 2 فقط. قيد المحاذاة على كافة الأقسام ، معبرًا عنه بقوة 2.
0x444bssAlignالإصدار ≥ 2 فقط. قيد المحاذاة في جميع أقسام ‘.bss’ ، معبرًا عنه بقوة 2.
0x484الإصلاحالحجمالإصدار ≥ 3 فقط. إذا تم ربط REL بـ OSLinkFixed (بدلاً من OSLink) ، يمكن استخدام المساحة بعد هذا العنوان لأغراض أخرى (مثل BSS).

جدول معلومات القسم

يحتوي جدول معلومات القسم على ** عدد أقسام ** إدخالات كل 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الإدخال التاليالإدخال التاليالإدخال التالي

مراجع

انظر أيضًا