aspose.info
HE

REL - קובץ מודול ניתן למיקום מחדש

עודכן

מהו קובץ REL?

קובץ עם סיומת rel יכול לשמש לכמה סוגים של מטרות. לכן, מבחינת סיווג המשחקים הוא ידוע כקובץ מודול הניתן למיקום המשמש חלק ממשחקי Nintendo Wii, כגון Brawl, Super Smash Bros ו-Mario Kart Wii. הוא כולל את נתוני המשחק, כולל דגמי דמויות ושלבים. קבצי REL פועלים באופן דומה לקבצי ה-.DLL המשמשים את Microsoft Windows.

פורמט קובץ REL

בפורמט קובץ REL, הקובץ מחולק למספר חלקים, מקובצים לפי גישה כמו, למשל נתונים לקריאה בלבד בקטע אחד, כל קוד ההפעלה ממוקם באחר וכו’. הקובץ מתחיל בסעיף כותרת, ואחריו:

  • טבלה המכילה מידע על סעיפים.
  • נתוני המדור.
  • מידע על רילוקיישן.

כותרת הקובץ

הקובץ מתחיל עם כותרת של עד 0x4C בתים:

קיזוזגודלשם שדהתיאור
0x004idמספר זיהוי שרירותי. חייב להיות ייחודי בין כל RELs המשמשים משחק. לא חייב להיות 0.
0x044הבאמצביע למודול הבא, מלא בזמן הריצה.
0x084הקודםמצביע למודול הקודם, מולא בזמן הריצה.
0x0c4numSectionsמספר הקטעים בקובץ.
0x104sectionInfoOffsetקיזוז לתחילת טבלת המקטעים.
0x144nameOffsetהיסט למחרוזת ASCII המכילה את שם המודול. יכול להיות NULL. יחסית לתחילת קובץ REL.
0x184גודל שםגודל שם המודול בבתים.
0x1c4גרסהמספר גרסה של פורמט הקובץ REL.
0x204bssגודלגודל הקטע ‘.bss’.
0x244relOffsetקיזוז לטבלת הרילוקיישן.
0x284impOffsetהיסט לטבלת ההשפעה.
0x2c4impSizeגודל טבלת imp בבתים.
0x301prologSectionאינדקס לטבלת סעיפים שאליה פרולוג הוא יחסי. דלג אם שדה זה הוא 0.
0x311epilogSectionאינדקס לטבלת מקטעים שאליה מתייחס האפילוג. דלג אם שדה זה הוא 0.
0x321לא פתור סעיףאינדקס לטבלת מקטעים אשר לא פתורה היא ביחס אליה. דלג אם שדה זה הוא 0.
0x331bssSectionאינדקס לטבלת מקטעים אשר bss יחסית אליה. התמלא בזמן ריצה!
0x344פרולוגקיזוז לקטע שצוין של הפונקציה _prolog.
0x384אפילוגקיזוז לקטע שצוין של הפונקציה _epilog.
0x3c4לא פתורקיזוז לקטע שצוין של הפונקציה _unresolved.
0x404יישרגרסה ≥ 2 בלבד. אילוץ יישור על כל הסעיפים, מבוטא בחזקת 2.
0x444bssAlignגרסה ≥ 2 בלבד. אילוץ יישור על כל קטע ‘.bss’, מבוטא בחזקת 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כניסה הבאהכניסה הבאההכניסה הבאה

הפניות

ראו גם