aspose.info
BG

REL - Преместваем модулен файл

Обновено

Какво е REL файл?

Файл с разширение .rel може да се използва за различни цели. Следователно, по отношение на класификацията на играта, той е известен като преместваем модулен файл, използван от някои игри на Nintendo Wii, като Brawl, Super Smash Bros и Mario Kart Wii. Той включва данните за играта, включително модели на герои и етапи. REL файловете работят подобно на .DLL файловете, използвани от Microsoft Windows.

файлов формат REL

Във файлов формат REL файлът е разделен на няколко секции, групирани по сходен достъп, например данни само за четене в една секция, целият изпълним код се поставя в друга и т.н. Файлът започва със заглавна секция, последвана от:

  • Таблица, съдържаща информация за раздела.
  • Данните за раздела.
  • Информация за преместване.

Заглавка на файл

Файлът започва със заглавка до 0x4C байта:

ОтместванеРазмерИме на полеОписание
0x004IDПроизволен идентификационен номер. Трябва да е уникален сред всички REL, използвани от играта. Не трябва да е 0.
0x044следващУказател към следващия модул, попълнен по време на изпълнение.
0x084предишнаУказател към предишен модул, попълнен по време на изпълнение.
0x0c4бройсекцииБрой секции във файла.
0x104sectionInfoOffsetОтместване спрямо началото на таблицата със секции.
0x144nameOffsetОтместване към ASCII низ, съдържащ името на модула. Може да е NULL. Спрямо началото на REL файла.
0x184размер на иметоРазмер на името на модула в байтове.
0x1c4версияНомер на версията на файловия формат REL.
0x204bssSizeРазмер на секцията „.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Следващ записСледващ записСледващ запис

Препратки

Вижте също